在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三次握手
其中第一次握手:
客户端发送SYN包③处数据为SEQ=3176842225是第二次握手服务器发送的确认包减一
第二次握手服务器发送的SYN包中包含了SEQ和ACK两种数据到客户端
第三次握手客户端发送的SYN包中只包含一个ACK确认数据④,是第二次握手中的序列号加一,即ACK=3674909728
其中SEQ是SYN(Synchronize Sequence Numbers),也是他的(Sequence 简写,不要搞混)