TCP首部:
TCP数据被封装在一个IP数据报中,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/16228bf2574395035741fcd73d9e0602.png)
TCP首部数据格式:
![](https://i-blog.csdnimg.cn/blog_migrate/4388f55d0a47ad662b38380331e37079.png)
- 16位源都口号,16为目的端口号用于寻找发送端和接收端的应用进程,加上IP首部的源端IP及终端IP,唯一的确认一个TCP连接。
- 32位序号:标识发送的数据字节流,标识在这个报文段中的第一个数据字节,2^3 - 1后重新从0开始。包含该主机选择的连接的ISN(Initial Sequence Number),要发送的第一个数据字节序号为ISN+1.
- 32位确认序号:ACK为1时有效,上次成功收到的数据字节序号+1(如接收到的为1024--2048,则返回2049)。
- 4位首部长度:首部中32bits字的数目,TCP最多有60字节的长度,除去任选字段,正常为20字节。
- 6bits:URG紧急指针;ACK确认序号有效;PSH接收方应尽快将此报文段交给应用层;RST重建连接;SYN同步序号,用来发起一个新连接;FIN发端完成发送任务。
- 16位窗口大小:TCP流量控制,字节数,起始于确认序列号指明的值,接收端期望收到的字节,最大为65535.
- 16位检验和:包括计算TCP首部和数据综合的二进制反码和检验和。
- 16位紧急指针:URG为1时有效,正向的偏移量,加上序号字段值表示最后一个字节的序号。
- 可选字段:例:MSS.