TCP报文头详解

更新时间:2023-05-12 09:11:42 阅读: 评论:0

TCP报⽂头详解
TCP报⽂是TCP层传输的数据单元,也叫报⽂段。
1、端⼝号
⽤来标识同⼀台计算机的不同的应⽤进程。
16位源端⼝(Source Port):16位的源端⼝字段包含初始化通信的端⼝号。源端⼝和IP地址的作⽤是标识报⽂的返回地址。
16位⽬的端⼝(Destination Port):16位的⽬的端⼝字段定义传输的⽬的地。这个端⼝指明接收⽅计算机上的应⽤程序接⼝。
TCP报头中的源端⼝号和⽬的端⼝号同IP数据报中的源IP与⽬的IP唯⼀确定⼀条TCP连接。
2、序列号和确认号
这两个字段是TCP可靠传输服务的关键部分,序列号是该报⽂段⾸字节的字节流编号(TCP把数据看成是有序的字节流,TCP 隐式地对数据流的每个字节进⾏编号)。这样理解可能更直观,当报⽂被分解成多个报⽂段时,序列号就是报⽂段⾸字节在整个报⽂的偏移量。确定号指定下⼀个期待的字节。
32位序列号(Sequence Number):⼀次TCP通信(从TCP连接建⽴到断开)过程中某⼀个传输⽅向上的字节流的每个字节的编号。每发送⼀次数据,就累加⼀次该数据字节的⼤⼩。序列号不会从零开始,⽽是在建⽴连接时通过计算机随机⽣成⼀个数,由SYN包传给接收端主机。
假设主机A和主机B进⾏TCP通信,A发送给B的第⼀个TCP报⽂段中,序号值被系统初始化为某个随机值ISN(Initial Sequence Number,初始序号值)。那么在该传输⽅向上(从A到B),后续的TCP报⽂段中序号值将被系统设置成ISN加上该报⽂段所携带数据的第⼀个字节在整个字节流中的偏移。例如,某个TCP报⽂段传送的数据是字节流中的第1025~2048字节,那么该报⽂段的序号值就是ISN+1025.另外⼀个传输⽅向(从B到A)的TCP报⽂段的序号值也具有相同的含义。
32位确认应答号(Acknowledge Number):标识期望收到的下⼀个段的第⼀个字节,并声明此前的所有数据已经正确⽆误地收到,因此,确认号应该是上次已成功收到的数据字节序列号加1。收到确认号的源计算机会知道特定的段已经被收到。确认号只有当ACK标志为1时才有效。⽐如建⽴连接时,SYN报⽂的ACK标志位为0。
3、数据偏移/⾸部长度
4位头部长度(header length):由于⾸部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,4位⾸部长度字段所能表⽰的最⼤值为1111,转化为10进制为15,15*4 = 60,故报头最⼤长度为60字节。⾸部长度也叫数据偏移,是因为⾸部长度实际上指⽰了数据区在报⽂段中的起始偏移值。
4、保留
保留(6位):为将来定义新的⽤途保留,现在⼀般置0。
5、控制位:URG、 ACK、PSH 、 RST 、 SYN、 FIN
1)URG:紧急指针标志,为1时表⽰紧急指针有效,该报⽂应该优先传送,为0则忽略紧急指针。
2)ACK:确认序号标志,为1时表⽰确认号有效,为0表⽰报⽂中不含确认信息,忽略确认号字段。我们称携带ACK标识的TCP报⽂段为确认报⽂段。
3)PSH:push标志,为1表⽰是带有push标志的数据,指⽰接收⽅在接收到该报⽂段以后,应优先将这个报⽂段交给应⽤程序,⽽不是在缓冲区排队。
4)RST:重置连接标志,⽤于重置由于主机崩溃或其他原因⽽出现错误的连接。或者⽤于拒绝⾮法的报⽂段和拒绝连接请求。我们称携带RST标志的TCP报⽂段为复位报⽂段。
5)SYN:表⽰请求建⽴⼀个连接。在连接请求中,SYN=1和ACK=0表⽰该数据段没有使⽤捎带的确认域,⽽连接应答捎带⼀个确认,即SYN=1和ACK=1。我们称携带SYN标志的TCP报⽂段为同步报⽂段。
6)FIN:finish标志,⽤于释放连接,为1时表⽰发送⽅已经没有数据发送了,即关闭本⽅数据流。我们称携带FIN标志的TCP报⽂段为结束报⽂段。
6、窗⼝
16位窗⼝⼤⼩(window size):是TCP流量控制的⼀个⼿段。这⾥说的窗⼝,指的是接收通告窗⼝(Receiver Window,RWND)。它告诉对⽅本端的TCP接收缓冲区还能容纳多少字节的数据,这样对⽅就可以控制发送数据的速度,从⽽达到流量控制。窗⼝⼤⼩为⼀个16bit字段,因⽽窗⼝⼤⼩最⼤为65535。
7、校验和
16位校验和(TCP check sum):由发送端填充,接收端对TCP报⽂段执⾏CRC算法以检验TCP报⽂段在传输过程中是否损坏。注意,这个校验不仅包括TCP头部,也包括数据部分。这也是TCP可靠传输的⼀个重要保障。
8、紧急指针
16位紧急指针(urgent pointer):只有当 URG 标志置 1 时紧急指针才有效。紧急指针是⼀个正的偏移量,和顺序号字段中的值相加表⽰紧急数据最后⼀个字节的序号。 TCP 的紧急⽅式是发送端向另⼀端发送紧急数据的⼀种⽅式。
9、选项和填充
TCP头部选项:TCP头部的最后⼀个选项字段(options)是可变长的可选信息。这部分最多包含40字节,因为TCP头部最长是60字节(其中还包含前⾯讨论的20字节的固定部分)。
最常见的可选字段是最长报⽂⼤⼩,⼜称为MSS(Maximum Segment Size),每个连接⽅通常都在通信的第⼀个报⽂段(为建⽴连接⽽设置SYN标志为1的那个段)中指明这个选项,它表⽰本端所能接受的最⼤报⽂段的长度。
选项长度不⼀定是32位的整数倍,所以要加填充位,即在这个字段中加⼊额外的零,以保证TCP头是32的整数倍。10、数据部分
TCP 报⽂段中的数据部分是可选的。在⼀个连接建⽴和⼀个连接终⽌时,双⽅交换的报⽂段仅有 TCP ⾸部。如果⼀⽅没有数据要发送,也使⽤没有任何数据的⾸部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报⽂段。

本文发布于:2023-05-12 09:11:42,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/887275.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   字节   连接   确认   标志   收到   发送
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图