TCP头部格式的了解-程序员宅基地

技术标签: 网络编程  Unix高级环境编程  tcp头部格式  


tcp头部格式如下图所示:


     



1.源端口号,16位,发送方的端口号。

2.目标端口号,16位,发送方的目标端口号。

3.  32为序列号,sequence number保证网络传输数据的顺序性

4.   32位确认号,acknowledgment number用来确认确实有收到相关封包,内容表示期望收到下一个报文的序列号,用来解决丢包的问题

5.   头部大小,4位,偏移量:最大值为0x0F,即15,

单位为32(bit),单位也就是4个字节,给出头部占32bit的数目。没有任何选项字段的TCP头部长度为20字节;最多可以有60(15*4)字节的TCP头部。

6.   Reserved  4位 ,预留字段,都为0

7.  TCP标志位

1CWRCongestion window reduced拥塞窗口减少拥塞窗口减少标志被发送主机设置,用来表明它接收到了设置ECE标志的TCP包。拥塞窗口是被TCP维护的一个内部变量,用来管理发送窗口大小。

2ECN-Echo显式拥塞提醒回应当一个IP包的ECN域被路由器设置为11时,接收端而非发送端被通知路径上发生了拥塞。ECN使用TCP头部来告知发送端网络正在经历拥塞,并且告知接收端发送段已经受到了接收端发来的拥塞通告,已经降低了发送速率。

    3URG:为1时,紧急指针(urgent pointer)有效配合紧急指针使用

    4ACK:为1时,确认号有效

    5PSH:  1时,接收方应该尽快将这个报文段交给应用层

     (6)RST:为1时,释放连接,重连。

     (7)SYN:为1时,发起一个连接。

     (8)FIN:为1时,关闭一个连接。

8.  16位窗口大小:16bit。此字段用来进行流量控制主要用于解决流控拥塞的问题。单位为字节数,这个值是本机期望一次接收的字节数。

9.  16位校验值:  16bit。对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。

10.  16位紧急指针:16bit。它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

11.  32Tcp选项:一般包含在三次握手中


抓包解析:

1.tcp头部标志位:

比如客户端第一次syn连接的时候,也就是第一次握手的时候。Syn标志被置为1 



第二次握手的时候,服务端发的报文设置了ACK,SYN标志位





3.关于tcp选项

tcp选项一般出现在三次握手的报文中。


第一次握手



第二次握手




在建立连接的时候,通信双方要互相确认对方的最大报文长度(MSS),以便通信,一般这个SYN长度是MTU减去固定IP首部和TCP首部长度,

对于以太网,一般可以达到1460字节,当然如果对于非本地的IP,这个MSS可能就只有536字节,而且如果中间的传输网络的MSS更小的话,这个

值会更加的小。(在tcp报文中选项看出)


(1)TCP首部选项字段多达40B,记下一些常用的东西:


(2)选项结束字段(EOP,0x00),占1B,一个报文段仅用一次。放在末尾用于填充,用途是说明:首部已经没有更多的消息,应用数据在下一个32位字开始处


(3)无操作字段(NOP, 0x01),占1B,也用于填充,放在选项的开头


(4)MSS(最大报文段长度),格式如下:种类(1B,值为2),长度(1B,值为4),数值(2B)


用于在连接开始时确定MSS的大小,如果没有确定,就用默认的(一般实现是536B)


(5)窗口扩大因子,格式如下:种类(1B,值为3),长度(1B,值为3),数值(1B)


新窗口值 = 首部窗口值 * 2的(扩大因子)次方


当通信双方认为首部的窗口值还不够大的时候,在连接开始时用这个来定义更大的窗口。仅在连接开始时有效。一经定义,通信过程中无法更改。


(6)时间截(应用测试RTT和防止序号绕回),略,以后补充


(7)允许SACK和SACK选项,略,以后补充


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhouzhenhe2008/article/details/71075969

智能推荐

element的dialog对话框组件关闭时销毁里面的元素_element元素没被关闭-程序员宅基地

文章浏览阅读1.4w次。加上:destroy-on-close="true"属性即可,该属性默认为false。<el-dialog title="标题" :destroy-on-close="true" :visible.sync="isShow"> // 内容区域</el-dialog>..._element元素没被关闭

vue实现超过两行显示展开收起_vant列表css文字超出展开收起-程序员宅基地

文章浏览阅读7k次。vue实现超过两行显示展开收起具体代码如下:<template> <div> <div class="group"> <div class="text more" ref="more"> 占位 </div> <div class="list" v-for="(..._vant列表css文字超出展开收起

promtail 配置详解_基于loki+promtail+grafana技术的日志集合-程序员宅基地

文章浏览阅读2.8k次。一、背景和动机近期运维工作中,随着项目的不停优化以及上线。在与后端、测试协同工作的交流中发现,为了测试以及解决项目在上线过程中或者试运行中出现的bug报错问题,开发同事对于日志的分析有着很大的需求。但是现在公司的日志查看主要是给予极少数的人员较大的权限,以及大量的需要运维人员帮忙登陆服务器查看服务日志进行下拉,复制黏贴给开发同事进行自主排错。所以为了提高工作效率,同时也减轻运维同事的工作压力。需要..._promtail

解决Mac下kernel_task进程cpu占用率久高不下_/system/library/extensions/ioplatformpluginfamily.-程序员宅基地

文章浏览阅读1.2w次。1)查看“”-“关于本机”-“更多信息”-“系统报告”的“硬件概览”中的第二行——型号标识符并牢记2)在Finder中“前往”-“系统盘”-“资源库”-“Extensions”(路径为System\Library\Extensions),在Extensions中搜做到项“IOPlatformPluginFamily.kext”,右击它并选择“显示包内容”,此时看到“Contents”文件_/system/library/extensions/ioplatformpluginfamily.kext/contents/plugins/x86p

520表白神器_520表白神器代码-程序员宅基地

文章浏览阅读319次。很多人都认为程序员是典型理工科直男代表。他们不浪漫,心中只有代码。他们没有甜言蜜语,只和代码有神交。但是懂浪漫的程序员分分钟让女友死心塌地。2020年是最浪漫的一年,谐音“爱你爱你”5月20日是最浪漫的一天,寓意“我爱你”20200520 寓意“爱你爱你我爱你”还在等什么,赶紧对喜欢的妹子表白吧。什么?不知道怎么表白?作为一个程序猿当然用我们最擅长的方式代码进行表白了。什么?女友不懂代码?没关系,下面几款表白神器,无需运行,只需用电脑打开页面即可。如果有自己的服务器和域名更好,发送一个_520表白神器代码

【英语学习】【WOTD】gibbous 释义/词源/示例_gibbous 来自于什么语-程序员宅基地

文章浏览阅读738次。gibbous adj. [JIB-us]凸圆的;凸状的;驼背的Definition1 a: marked by convexity or swelling a:有凸起或肿起的标志 b: of the moon or a planet: seen with more than half but not all of the apparent disk illuminated..._gibbous 来自于什么语

随便推点

火狐浏览器安装插件提示:“此附加组件无法安装,因为他有可能已损坏”_xpinstall.signatures.required-程序员宅基地

文章浏览阅读1.9w次。新开一个火狐浏览器输入“about:config”,然后回车然后找到xpinstall.signatures.required将它的true改为false,怎么将xpinstall.signatures.required将它的true改为false,双击xpinstall.signatures.required就可以将true改为falsehttps://blog.csd..._xpinstall.signatures.required

用VLC库做播放器时,本地文件和远程文件路径处理方法_android vlcdemo 播放本地文件-程序员宅基地

文章浏览阅读5k次。用VLC库做播放器时,本地文件和远程文件路径处理方法Media media;if (intent.getStringExtra("VideoType").equals("Local")) { media = new Media(libvlc, intent.getStringExtra("VideoUrl"));} else { media = new M..._android vlcdemo 播放本地文件

keil的数据波形如何在电脑示波器软件keil array visualization显示-程序员宅基地

文章浏览阅读4.9k次,点赞2次,收藏15次。其他博主已经介绍过了https://blog.csdn.net/vbvcde/article/details/88920495但本人由于对keil有点生疏,使用时还是碰了写问题,所幸后来向作者邮箱[email protected]解决了问题。本文补充一些比较细节的问题。1.软件需要在debug模式下执行之前本人以为,debug完,再点击load,就可以通过这个软件看数据波形。但后来发现报“地址...

5 EDA技术实用教程【基本语句2】_例化语句-程序员宅基地

文章浏览阅读1.1k次。持续更新中_例化语句

Openstack--使用packstack工具一键部署OpenStack_packstack部署openstack-程序员宅基地

文章浏览阅读6.6k次,点赞10次,收藏72次。Openstack----(线网源)使用packstack工具一键部署OpenStack!文章目录Openstack----(线网源)使用packstack工具一键部署OpenStack!一:部署 OpenStack1.1 环境1.2 安装虚拟机1.2.1 IP地址配置与修改主机名1.2.2 初始化操作1.3 一键部署部署OpenStack二、网页登陆OpenStack一:部署 OpenStack1.1 环境VMware软件CentOS7.6最小化安装NAT的IP地址:20.0.0.10pac_packstack部署openstack

Generalplus公司的GP329730A_gp329733a-程序员宅基地

文章浏览阅读603次。最近用了Generalplus公司的GP329730A,与之前的STM32不同,这是一款ARM9核心的芯片欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Mar..._gp329733a

推荐文章

热门文章

相关标签