TCP客户端与服务器函数调用过程及特殊情况
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:
位码即tcp标志位,有6种标示:
SYN(synchronous建立联机)
ACK(acknowledgement 确认)
PSH(push传送)
FIN(finish结束)
RST(reset重置)
URG(urgent紧急)
Sequence number(顺序号码)
Acknowledge number(确认号码)
一般而言服务器是被动建立连接,服务器调用socket创建套接字,bind给socket分配具体的ip地址以及端口号,再调用listen函数将刚创建好的socket放入监听队列,之后调用accept等待指定地址(协议)的客户端的连接。
客户端调用socket创建套接字,随后connect来建立连接,客户端的socket的bind操作在connect中隐藏完成。
调用connect之后发生“三次握手”建立TCP连接,随后客户端与服务器之间开始传输数据;
- 第一次握手:客户端发送SYN标志,序列号seq(随机生成,图中序列号是0是wireshark做了相对处理),源端口随机生成,目标端口5000(程序决定)
- 第二次握手:服务端发回客户端,ACK标识同意接收连接,此时从客户端到服务端单向连