TCP头部结构:
16号端口号:告知主机该TCP报文段是来自哪里(源端口)以及传给哪个上层协议或应用程序(目的端口)的。
进行TCP通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务端口号。
32位序号:一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流的每个字节的编号。假设主机A和主机B进行TCP通信,A发送给B的第一个TCP报文段中,序号值被系统初始化为某个随机值ISN。那么在该传输方向上(从A到B),后续的TCP报文段中序号值将被系统设置成ISN加上该报文段所携带数据的第一个字节在整个字节流中的偏移。
32位确认号:用作对另一个发送来的TCP报文段的响应。其值是收到的TCP报文段的序号值加1,。假设主机A和主机B进行TCP通信,那么A发送出的TCP报文段不仅携带自己的序号,而且包含对B发送来的TCP报文段的确认号。反之,B发送出的TCP报文段也同时携带自己的序号和对A发送来的报文段的确认号。
4位头部长度:标识该TCP头部有多少个32bit字(一个字4个字节)。
6位标志位:
URG标志:表示紧急指针是否有效
ACK标志:表示确号是否有效。我们称携带ACK标志的TCP报文段为确认报文段。
PSH标志:提示接收端应用程序应该立即从TCP接收缓冲区读走数据,为接收后续数据腾出空间
RST标志:表示要求对方重新建立连接。我们称携带RST标志的TCP报文段为复位报文段。
FIN标志:表示通知对方本端要关闭连接了。我们称携带FIN标志的TCP报文段为结束报文段
SYN标志:表示请求建立连接。我们称携带SYN标志的TCP报文段为同步报文
16位窗口大小:是TCP流量控制的一个手段。这里说的窗口,指的是接收通告窗口。它告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。
16校验和:由发送端填充,接收端对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏。
16位紧急指针:是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一个字节的序号。因此,确切的说,这个字段是紧急指针相对当前序号的偏移。