首页 > 运维 > linux运维 > 正文

TCP数据段的首部格式

齐天大圣
发布: 2020-12-21 11:31:13
原创
3516 人浏览过

在了解TCP首部各个字段的意义后,我们就能更清楚的了解TCP协议的。TCP首部字节有20个字节是固定了,后面还有可选选项。TCP是以32位(4字节)对齐的。

20180324192146298.png

源端口和目的端口:TCP是通过通口号来进行应用进程间的通信的。

序号:占32位,序号的范围是0~(2^32-1),当序号变为2^32-1后,下一个序号就要重新从0开始了。假如一个报文段的序号为1001,它的长度为100字节,那么下一个报文段的序号就是1101。

确认号:占32位。确认号是对收到的分组进行确认的。假如A向B发送了一个报文段,A的序号为101,报文段长度为100字节,那么B收到该报文段后,就需要对A发送确认报文段,这个确认报文段里的确认号为201。有以下公式:

如果确认号为N+1,那么表示到序号N位置的所有数据均已收到。

数据偏移:该字段即表示tcp首部的长度,该字段占4位,单位为4字节。所以,一个TCP的首部最大为60字节。

六个控制位:每个控制位都只占一位。

  • UGR:紧急字段,当该值为1时,表示此报文段含有紧急数据,应优先发送。该字段需要和后面会说到的紧急指针配合使用。

  • ACK:确认字段。该字段在建立连接和断开连接时会用到,传送数据阶段一律为1。

  • PSH:推送字段。为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。

  • RST:重置连接字段志。用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。

  • SYN:同步字段。用于建立连接时使用。

  • FIN:终止字段。用于释放连接时使用。

窗口:占16位。窗口值是的范围是【0,2^16-1】之间的整数。注意,它表示的是接受窗口,表示允许接受的字节数。比如,B的向A发送了一个确认报文段,该报文段的确认号为101,窗口值为1000.那么表示B下一个接受的报文段序号应该是101,且报文段长度不能超过1000字节。

校验和:占16位。用来检验报文段有没有错误。

紧急指针:占16位。只有当URG字段为1时,该字段才有意思。它表示紧急数据的长度

相关推荐:《linux视频教程

以上是TCP数据段的首部格式的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
tcp
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!