TCP三次握手
SYN建立连接 ACK数据确认 seq序列号
第一次:客户端client向服务端发送连接建立请求SYN seq=x的包,随后客户端进入SYN_SENT状态 服务端一直处于监听状态。
第二次:服务器收到SYN报文段,需进行确认包即ACK=x+1
同时也需要发一个连接建立请求SYN seq=y
后进入SYN_RCVD状态表示收到请求并已反馈。
第三次:客户端收到服务端的数据包后向服务端发送ACK = y+1 表示收到并确认,发送后客户端和服务端都进入ESTABLISHED状态,表示TCP连接已建立。
★ 每次收到对方数据包后都会回复一个ACK确认
关于seq及中的x,y详解:
在第一次发送中,客户端随机选取一个序列号作为自己的初始序号(x)发送给服务端。
在第二次发送中,服务端因为已经收到了序列号为x的数据包,要对它做出确认故ACK=x+1,同时将自己此次的数据包序列号(y)发送给客户端即seq=y
在第三次发送中,客户端收到了服务端的消息对它进行确认ACK=y+1,此次数据包的seq=x+1
TCP四次挥手
第一次挥手:可以是客户端也可以是服务端(主动的一方会进入两个状态:FIN_WAIT_1,FIN_WAIT_