SOCK_STREAM 是在BSD Socket API中定义的一种套接字类型,它对应于传输控制协议(Transmission Control Protocol,TCP)。在C语言和其他支持Socket编程的语言中,当你创建一个套接字时,可以选择使用SOCK_STREAM作为套接字类型,这表明你将通过TCP来建立一个面向连接、有序且可靠的数据传输服务。
具体特征包括:
- 面向连接:在数据交换之前,必须先建立连接,类似于打电话的过程,双方握手成功后才能开始通信。
- 可靠性:TCP提供了一种错误检测机制,每个数据段都有确认响应,确保数据能够无差错、不丢失、不重复地到达接收方。
- 顺序保证:数据包按照发送顺序到达接收方,如果发生乱序,TCP会重新排序。
- 流量控制:TCP通过滑动窗口机制管理发送速率,避免接收方来不及处理数据而导致数据溢出。
- 拥塞控制:TCP可以根据网络状况动态调整其数据发送速度,以防止网络过载。
使用SOCK_STREAM类型的套接字通常应用于需要高可靠性和数据完整性,以及可能涉及大量数据或者长时间连续通信的应用场景,例如HTTP、FTP、SMTP等协议都是基于TCP实现的。在程序中创建此类套接字时,一般会配合AF_INET或AF_INET6地址家族(分别对应IPv4和IPv6),以便在网络上建立点对点的通信连接。