SYN表示请求建立连接
FIN表示请求中断连接
ACK是标识位,表示收到
seq表示这个数据包的的序号
ack指的是确认号。 即收到seq=x的数据包后,回复 ack=x+1 的确认。
三次握手:
2.png第一次握手:请求方发送连接的请求
第二次握手:接收方发送请求连接的请求,并表示上一个请求已经收到
第三次握手:请求方发送已经收到请求的消息,这个数据包中已经可以携带数据
四次挥手:
FS_QW(64K2UN2(P)4`F4R6A.png第一次挥手:请求方发送 中断的请求
第二次挥手:接收方表示请求已收到,还要发送之前没发送完的数据
第三次挥手:接收方发送中断请求,并且也会表示第一次挥手的收到了
第四次挥手:请求方表示中断请求已收到,中断连接
为什么会有close_wait,并且时间为2MSL?
其中最后一个ACK报文是由客户端发往服务器。假设这个ACK报文在网络中被丢弃了,那么服务器端收不到这个确认ACK,服务器端需要向客户端再次发送FIN。
这就是为什么TIME_WAIT状态持续2倍的最长报文段生存时间:1MSL时间留给最后的ACK确认报文段到达服务器端,1MSL时间留给服务器端再次发送的FIN。
网友评论