TCP报文格式

TCP(Transmission Control Protocol)传输控制协议是一种面向链接的、可靠的、基于字节流的传输层协议。报文格式以下:
image.png
一、源端口号、目的端口号同IP数据报中的源IP与目的IP惟一肯定一条TCP链接。
二、序号(4字节)与确认序号(4字节):是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每个字节一个序号。确认序号,即ACK,指明下一个期待收到的字节序号,代表该序号以前的全部数据已经正确无误的收到。确认序号只有当ACK标志为1时才有效。好比创建链接时,SYN报文的ACK标志位为0。
三、首部长度(4位):以4字节为单位,因为首部可能含有可选项内容,所以TCP报头的长度是不肯定的,报头不包含任何可选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,10进制为15,15*4 = 60,故报头最大长度为60字节。
四、保留:为未来定义新的用途保留,通常置0。
五、控制位:URG ACK PSH RST SYN FIN,共6个,每个标志位表示一个控制功能。
1)URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。
2)ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。
3)PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段之后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
4)RST:重置链接标志,用于重置因为主机崩溃或其余缘由而出现错误的链接。或者用于拒绝非法的报文段和拒绝链接请求。
5)SYN:同步序号,用于创建链接过程。
6)FIN:finish标志,用于释放链接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。
六、窗口:滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小是一个16bit字段,于是窗口大小最大为65535。
七、校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。由发送端计算和存储,并由接收端进行验证。
八、紧急指针:只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另外一端发送紧急数据的一种方式。
九、选项和填充:最多见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每一个链接方一般都在通讯的第一个报文段(为创建链接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。另外也会保存2个4字节的时间戳,包括本方的当前时间戳与对端的接受到的最新时间戳。选项长度不必定是32位的整数倍,因此要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。缓存

相关文章
相关标签/搜索