TCP报文段结构
序号seq和确认号ack
序号seq是该报文段首字节的字节流编号,其作用是保证数据的顺序;
确认号ack是期望收到下一字节的序号,其作用是保证数据不会丢失;
TCP报文段首部字段中有六个标志位
- SYN
用于连接建立 - ACK
用于指示确认字段中的值是有效的,即该报文段包含一个对已被成功接收的报文段的确认。 - FIN
用于连接断开 - URG
- PSH
- RST
三次握手
四次挥手
四次挥手里面,TIME_WAIT状态为什么需要等待2MSL
为了应对第四次挥手的ACK包丢包的情况,如果第四次挥手的报文丢失,服务端没收到确认ACK报文就会重发第三次挥手的报文,这样报文一去一回最长时间就是2MSL,所以需要等这么长时间来确认服务端确实已经收到了。
术语
序号:sequence number
确认号:acknowledment number
MSL:Maximum Segment Livetime 最大报文存活时长
MSS: Maximum Segment Size 最大报文长度