技术标签: 网络编程 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标志位
(1)CWR:Congestion window reduced,拥塞窗口减少。拥塞窗口减少标志被发送主机设置,用来表明它接收到了设置ECE标志的TCP包。拥塞窗口是被TCP维护的一个内部变量,用来管理发送窗口大小。
(2)ECN-Echo:显式拥塞提醒回应。当一个IP包的ECN域被路由器设置为11时,接收端而非发送端被通知路径上发生了拥塞。ECN使用TCP头部来告知发送端网络正在经历拥塞,并且告知接收端发送段已经受到了接收端发来的拥塞通告,已经降低了发送速率。
(3)URG:为1时,紧急指针(urgent pointer)有效,配合紧急指针使用
(4)ACK:为1时,确认号有效
(5)PSH: 为1时,接收方应该尽快将这个报文段交给应用层
(6)RST:为1时,释放连接,重连。
(7)SYN:为1时,发起一个连接。
(8)FIN:为1时,关闭一个连接。
8. 16位窗口大小:占16bit。此字段用来进行流量控制,主要用于解决流控拥塞的问题。单位为字节数,这个值是本机期望一次接收的字节数。
9. 16位校验值: 占16bit。对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。
10. 16位紧急指针:占16bit。它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
11. 32位Tcp选项:一般包含在三次握手中。
抓包解析:
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选项,略,以后补充
文章浏览阅读1.4w次。加上:destroy-on-close="true"属性即可,该属性默认为false。<el-dialog title="标题" :destroy-on-close="true" :visible.sync="isShow"> // 内容区域</el-dialog>..._element元素没被关闭
文章浏览阅读7k次。vue实现超过两行显示展开收起具体代码如下:<template> <div> <div class="group"> <div class="text more" ref="more"> 占位 </div> <div class="list" v-for="(..._vant列表css文字超出展开收起
文章浏览阅读2.8k次。一、背景和动机近期运维工作中,随着项目的不停优化以及上线。在与后端、测试协同工作的交流中发现,为了测试以及解决项目在上线过程中或者试运行中出现的bug报错问题,开发同事对于日志的分析有着很大的需求。但是现在公司的日志查看主要是给予极少数的人员较大的权限,以及大量的需要运维人员帮忙登陆服务器查看服务日志进行下拉,复制黏贴给开发同事进行自主排错。所以为了提高工作效率,同时也减轻运维同事的工作压力。需要..._promtail
文章浏览阅读1.2w次。1)查看“”-“关于本机”-“更多信息”-“系统报告”的“硬件概览”中的第二行——型号标识符并牢记2)在Finder中“前往”-“系统盘”-“资源库”-“Extensions”(路径为System\Library\Extensions),在Extensions中搜做到项“IOPlatformPluginFamily.kext”,右击它并选择“显示包内容”,此时看到“Contents”文件_/system/library/extensions/ioplatformpluginfamily.kext/contents/plugins/x86p
文章浏览阅读319次。很多人都认为程序员是典型理工科直男代表。他们不浪漫,心中只有代码。他们没有甜言蜜语,只和代码有神交。但是懂浪漫的程序员分分钟让女友死心塌地。2020年是最浪漫的一年,谐音“爱你爱你”5月20日是最浪漫的一天,寓意“我爱你”20200520 寓意“爱你爱你我爱你”还在等什么,赶紧对喜欢的妹子表白吧。什么?不知道怎么表白?作为一个程序猿当然用我们最擅长的方式代码进行表白了。什么?女友不懂代码?没关系,下面几款表白神器,无需运行,只需用电脑打开页面即可。如果有自己的服务器和域名更好,发送一个_520表白神器代码
文章浏览阅读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 来自于什么语
文章浏览阅读1.9w次。新开一个火狐浏览器输入“about:config”,然后回车然后找到xpinstall.signatures.required将它的true改为false,怎么将xpinstall.signatures.required将它的true改为false,双击xpinstall.signatures.required就可以将true改为falsehttps://blog.csd..._xpinstall.signatures.required
文章浏览阅读5k次。用VLC库做播放器时,本地文件和远程文件路径处理方法Media media;if (intent.getStringExtra("VideoType").equals("Local")) { media = new Media(libvlc, intent.getStringExtra("VideoUrl"));} else { media = new M..._android vlcdemo 播放本地文件
文章浏览阅读4.9k次,点赞2次,收藏15次。其他博主已经介绍过了https://blog.csdn.net/vbvcde/article/details/88920495但本人由于对keil有点生疏,使用时还是碰了写问题,所幸后来向作者邮箱[email protected]解决了问题。本文补充一些比较细节的问题。1.软件需要在debug模式下执行之前本人以为,debug完,再点击load,就可以通过这个软件看数据波形。但后来发现报“地址...
文章浏览阅读1.1k次。持续更新中_例化语句
文章浏览阅读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
文章浏览阅读603次。最近用了Generalplus公司的GP329730A,与之前的STM32不同,这是一款ARM9核心的芯片欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Mar..._gp329733a