网络技术之TCP三次握手

时间:2023-01-02 17:49:29

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手方式建立一个连接

第一次握手:c->s

建立连接时,客户端发送SYN包(syn=j){注:syn:Synchronize Sequence Numbers同步序列编号}到服务器端,此时客户端进入SYN_SEND状态,等待服务器确认。

第二次握手:s->c

服务端接收到SYN包以后,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k){注:两个SYN并没有任何关系,都是随机序列},即SYN+ACK包,此时服务器进入SYN_RECV状态

第三次握手:c->s

客户端收到服务器端的SYN+ACK包后,确认无误后,向服务端发送确认包ACK(ack=k+1),当此包发送完毕后,服务器和客户端都进入ESTABLISHED就绪状态

以下是使用sniffer捕获的数据包,包含TCP三次握手

网络技术之TCP三次握手

其中第一次握手:

客户端发送SYN包③处数据为SEQ=3176842225是第二次握手服务器发送的确认包减一

第二次握手服务器发送的SYN包中包含了SEQ和ACK两种数据到客户端

第三次握手客户端发送的SYN包中只包含一个ACK确认数据④,是第二次握手中的序列号加一,即ACK=3674909728

其中SEQ是SYN(Synchronize Sequence Numbers),也是他的(Sequence 简写,不要搞混)