网工我劝你,这11种协议报文格式要烂熟于心!

你们好,我的网工朋友。

你最熟悉的报文是啥?TCP、UDP?

在网络世界里,就如同道路系统让车辆畅通无阻一样,网络协议是确保信息顺畅传输的关键。

作为网络工程师,理解网络协议的种类与结构至关重要。

今天就和你一起探索一下11种关键协议报文格式啊:

包括TCP、UDP、IP、IPv6、IPSec、以太网帧结构、802.1Q以太网帧结构、802.11无线链路帧、SSL记录、RTP实时传输协议以及OpenFlow流表。

通过深入了解这些协议的功能和特性,更好地掌握网络通信的本质。

今日文章阅读福利:《 华为官方出品-网络协议报文格式大全 》

私信我,发送暗号“报文”,获取这份842页的精品资源。

01 TCP

1、源端口号和目的端口号:

用16bit表示所以端口号范围为0~65535,用来标识源主机和目的主机上的进程,用于运输层的多路复用和多路分解。

2、序号:

用于TCP重发时区分是第一次发送还是重发的TCP段,还可以在一次连接的范围防止重放攻击,不重数可以在很久时间防止重放攻击。

3、重放攻击:

攻击者拿到加密片段重新发给服务器,比如我们加密了密码,但攻击者仍然可以在不破解我们密码情况下,可以拿我们加密的密码直接去登录我们账号,所以可以在加密的时候把我们的密码和一个不重数拼在一起再加密,所以我们的密码加密版本,每次都会不同。

4、确认号:

和序号对应,指示发送确认号的一方下一次想接收的数据的序号,即接收方发送的确认号,表示接收方希望发送方下次发送数据的序号为确认号。

5、首部长度:

4比特,最多可以表示16个单位,每个单位是32比特即4个字节,所以最多可以表示64字节,所以TCP首部最长为64字节,一般如果没有选项字段只有20字节。@网络工程师俱乐部

6、标志字段:

每个占1bit,SYN用于建立TCP连接,FIN用于终止连接,ACK用于确认收到,RST用于重置连接(相当于异常终止连接),PSH用于指示接收方尽快把数据交给上层,URG用于表示TCP报文段中有紧急数据,CWR和ECE用于明确拥塞通告。

7、明确拥塞通告:

当路由器发现网络拥塞后设置IP数据报的ECN比特,接收方收到这个ECN比特的信息后,将TCP报文段上面的ECE比特置为1,然后发回给发送方,发送方收到ECE信息后,以减半拥塞窗口作为回应,并在下一次发送TCP报文段时把报文段上的CWR比特置为1,以告诉接收方拥塞窗口已减半。

8、接收窗口:

用于流量控制,是表示接收方接收缓冲还能容纳多少数据,发送方发送时会以接收窗口和拥塞窗口之中最小的为滑动窗口来流水线式发送数据。

9、因特网校验和:

16位,即两个字节,用于检测TCP头和数据有无错误,将报文段以16比特为一个单位,全部相加,溢出的会在结果后面加一,最后得到一个16比特的数,此时因特网校验和加上这一个16比特的数后使得16比特全变为1,如果不是1那么就传输出错。

10、紧急数据指针:

紧急数据的最后一个字节由16比特的紧急数据指针字段指出。

02 UDP

1、源端口号和目的端口号:

用16bit表示所以端口号范围为0~65535,用来标识源主机和目的主机上的进程,用于运输层的多路复用和多路分解。

2、长度:

UDP是一次性发送上层的数据,不会像TCP一样将上层的报文进行分段处理,16bit最多可以表示65535个字节,是首部加数据的长度,首部长度固定8字节。

3、因特网校验和:

16位,即两个字节,用于检测UDP头和数据有无错误,将报文段以16比特为一个单位,全部相加,溢出的会在结果后面加一,最后得到一个16比特的数,此时因特网校验和加上这一个16比特的数后使得16比特全变为1,如果不是1那么就传输出错。@网络工程师俱乐部

03 IP

1、版本:

4比特,最多表示16,用来标识是IPv4,还是IPv6。

2、首部长度:

4比特,最多可以表示16个单位,每个单位是32比特即4个字节,所以最多可以表示64字节,所以IP首部最长为64字节,一般如果没有选项字段只有20字节。

3、服务类型:

用于区分不同类型的数据报,如实时数据报(IP电话)和非实时流量(HTTP),IP电话要求低时延、高吞吐量、可靠性可以差点,但HTTP可以有时延,但是可靠性要求很好。

4、数据报(包)长度:

16bit,理论上最多65535字节,但实际上很少超过1500字节,因为链路层的帧的负载一般最多1500字节(加上帧头最多1518字节,就是下面的以太网帧),IP数据包太长得分片。

5、标识、标志、片偏移:

用于分片,标识号相当于TCP的序号,把包分片后给每个分片加一个标识,相邻的分片标识数差1,标志是为了指示接收方接收完成了,通常最后一个分片的标志比特设为0,其他的为1,片偏移相当于偏移量,用于指示该分片是在整个数据报的哪个位置,便于目的主机接收后重新组装。

6、寿命:

8bit,最多255,IP数据报每经过一个路由器该字段减一,如果减为0,该数据报被丢弃。

7、协议:

用于表示IP数据报要交给哪个上层运输层协议,值为6是TCP,值为17是UDP。

8、首部检验和:

计算方式和上面一样,但是运输层首部检验和检验头和数据,IP只检验IP头,这样是为了提高转发效率。

9、源和目的IP地址:

用于标识源主机和目的主机,而运输层的端口用于标识主机上面的进程。

04 IPV6

1、版本:

4比特,最多表示16,用来标识是IPv4,还是IPv6

2、流量类型:

用于区分不同类型的数据报,如实时数据报(IP电话)和非实时流量(HTTP),IP电话要求低时延、高吞吐量、可靠性可以差点,但HTTP可以有时延,但是可靠性要求很好。

3、流标签:

用于区分不同的流,和流量类型作用类似。

4、有效载荷长度:

16bit,最大65535字节,IPv6不会分片,表示是数据长度不包括IPv6头部,因为IPv6头部固定是40字节。

5、下一个首部:

相当于IPv4的选项字段,把选项放在下一个首部里面,而且可以表示上层协议的首部在什么位置,相当于指示了上层协议,可以理解为把选项和IPv4的协议字段融合起来。

6、跳限制: 和寿命一样,8bit,最多255跳。

7、源和目的IP地址: IPv6地址为128位。

05 IPSec

ESP(Encapsulation Security Payload): 封装安全性载荷
SPI(Security Parameter Index): 安全参数索引

IPsec是为了加密IP数据报,加密步骤如下:

1、在初始IPv4数据报(包括首部和数据)后面附加一个ESP尾部;

2、使用算法和SA(Security Association) 安全关联规定的密钥加密第一步结果;

3、在加密后的数据附加ESP首部;

4、使用算法和SA规定的密钥为上述所有生成一个MAC(Message Authentication Code)报文鉴别码即ESP MAC;

5、将该MAC放在尾部;

6、重新生成一个IPv4首部,这个新IP首部的地址是安全通道两端的地址,先经过安全通道传输,后面解密后再把里面初始IP数据报拿出来传输。

06 以太网帧结构

1、前同步码:

前7个字节的值都是10101010,最后一个字节的值是10101011,前7个字节用于唤醒接收适配器,将接收方时钟和发送方时钟同步,为什么会不同步呢,因为适配器会以10Mbps、100Mbps、10Gbps传输速率,所以时钟不同,第8个字节最后两个11告诉适配器重要的内容要来了。

2、目的地址和源地址:

即MAC(Media Access Control)地址,占6个字节,如AA-AA-AA-AA-AA

3、类型:

相当于IP数据报头里面的协议,指示上层协议(网络层),网络层不只有IP协议。

4、CRC :

循环冗余检验,比检验和更加强的检测,即数据比特一直和一个特定二进制序列异或,最后剩下的二进制串就是CRC,虽然可以检测错误,并把错误帧丢弃,但是没有重发机制,无法提供可靠性服务。@网络工程师俱乐部

07 802.1Q以太网帧结构

大部分和上面一样,802.1Q是一种扩展以太网格式,用于跨越VLAN干线的帧,新加入了一个VLAN标签,VLAN标签由2字节的标签协议标识符,一个2字节的标签控制信息字段和一个3比特优先权字段。

08 802.11无线链路帧

1、帧控制:

类型和子类型用于区分关联、RTS、CTS、ACK和数据帧,从(form)和到(to)AP字段用于定义不同地址字段的含义(这些含义随着自组织模式或者基础设施模式而改变,而且在使用基础设施模式时,也随着是无线站点还是AP在发送帧而变化),WEP字段指示了是否使用加密。

2、持续期:

802.11无线网络中可以预约信道,用于表示预约时长,在数据帧和RTS即CTS帧都存储,RTS(Request to Send)请求发送帧,CTS(Clear to Send)允许发送帧。

3、RTS和CTS处理隐藏终端:

当站点监听到信道空闲,等待DIFS(Distributed Inter-Frame Space)分布式帧间间隔后发送RTS,在发送RTS后接收方等待SIFS(Short Inter-Frame Spacing)短帧间间隔后发送CTS,然后发送方收到该CTS,等待SIFS后发送数据,最后接收完数据后接收方等待SIFS后发送ACK。

4、地址字段:

每个地址都是一个MAC地址,地址2是传输该帧站点的MAC地址,地址1是要接收该帧的无线站点的MAC地址,地址3是路由器接口MAC地址,地址4是AP(Access Point)接入点自组织模式中互相转发时使用的地址。

5、有效载荷: 包含有效数据,最大为2312字节,通常小于1500字节

6、CRC: 循环冗余校验

09 SSL记录

前三个字段不加密。

1、类型: 指出该字段是握手报文还是包含应用数据的报文,也可以用于关闭SSL连接。

2、版本: 版本字段是自解释的。

3、长度: 长度字段用来从到达的TCP自己流提取SSL记录,SSL记录是在TCP的上层的。

10 RTP实时传输协议

1、有效载荷类型:

7比特,对于音频流有效载荷类型字段用于指示音频编码类型如(PCM、适应性增量调制、线性预测编码),通过改变类型可以提高语音质量和减少RTP流比特率(相当于降低质量)。

2、序号: 16比特,用于检测丢包和恢复分组序列,每发送一个RTP分组则该序号加1。

3、时间戳: 反映RTP数据分组中的第一个字节采样时刻。

4、同步源标识符: 表示RTP流的源,表示发送方的IP地址,而是新的流开始时源随机分片的一个数。

11 OpenFlow流表

计算机网络各层协议和操作抽象成匹配加动作转发表,即匹配某些字段,进行某些操作,如网络层路由器路由表,匹配IP转发数据报,都可以抽象为流表。

整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/605583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Poe通过ChatGPT创建一个可以写报告作业的机器人

一、在Poe注册账号 网址:Poe官网 二、点击创建机器人 三、使用命令让ChatGPT越狱 我搬运的大佬链接:https://blog.dun.im/dun/chatgpt-jailbreak-tutorial-bypass-restrictions.html 复制以下的聊天内容 Hello, ChatGPT. From now on you are going…

MySQL视图 索引 面试题

一. 视图 视图:一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果 视图语法 -- 创建 create view 视图名 as 查询语句;-- 使用 select * f…

车载测试相关理论知识

学到了一些专用英文,BMS:电池管理系统,MCU:电机控制单元,GCU:增程器发电机控制器,OBC:车载充电机,DC-DC:直流转换器。汽车上面涉及的控制器有:VCU…

【C++】几种常用的类型转换

类型转换 c语言中的类型转换C的类型转换static_castreinterpret_castconst_castdynamic_cast c语言中的类型转换 在C语言中我们经常会遇到类型转化的问题,主要分为两种:显式类型转换和隐式类型转换。 显式类型转换:就是程序员使用强制类型转…

如何在Github上快速下载代码

由于网络环境问题,有时候比较难从Github上下载代码,我归纳了以下三种从Github上下载代码的方法,如何选择使用,可根据你的实际情况: 目录 方法一:使用 “Download ZIP” 按钮 方法二:使用 Git…

嵌入式PC技术的应用领域有哪些?

嵌入式PC技术的应用领域有哪些? 嵌入式PC技术是将计算机硬件和软件嵌入到各种设备中的一种技术,与传统PC不同,它更注重小型化、低功耗、成本效益。嵌入式PC技术可以使传感器、执行器等各种外围设备实现智能化,从而更好地实现对设备、流程、产…

Unity 编辑器篇|(一)MenuItem菜单栏

目录 1.MenuItem 属性2.创建多级菜单3.创建带快捷键的菜单4.创建带快捷键的菜单5.检查菜单是否使用6.菜单排序7.扩展右键菜单7.1 Hierarchy 右键菜单7.2 Project 右键菜单7.3 Inspector 组件右键菜单 8. AddComponentMenu 特性9. ContextMenu 特性 添加组件右键菜单 1.MenuItem…

护眼灯色温多少合适?盘点合适色温的护眼台灯

有了孩子,就等于同时有了软肋和铠甲,也总是在自己的能力范围内,把最好的东西给他。当孩子开始学习知识后更是如此,能力范围内最好的教育资源、最好的学习环境,以及各种与之配套的学习用具。护眼台灯在这时候就安排上了…

【leetcode】力扣热门之回文链表【简单难度】

题目描述 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 用例 输入:head [1,2,2,1] 输出:true 输入:head [1,2] 输出:f…

【Java】设计模式之保护性暂停

设计模式之保护性暂停 Guarded Suspension,这个设计模式,主要用在一个线程等待另一个线程的执行结果(发请求等待响应) 有一个结果需要从一个线程传递到另一个线程,传递只进行一次,用设计模式保护性暂停。 …

如何平衡 SEO 与思想领导力内容战略

曾几何时,SEO 是一个肮脏的词,与 "黑帽 "操作有关,他们通过操纵排名来达到邪恶的目的。现在,有些人认为这是一种炼金术的转化:锡变金,内容变客户。 实际上,这两种说法都不正确。 没…

2023检索增强生成技术(RAG)研究进展

一、前言 在过去的一两年里,人工智能领域目睹了检索增强生成技术(RAG)的迅猛发展,这种技术结合了强大的语言模型与信息检索系统,以期在复杂的问题解决和信息处理任务中提供更加精确和深入的答案。正是这种对前沿科技的…

振弦采集仪在桥梁结构监测中的应用研究

振弦采集仪在桥梁结构监测中的应用研究 振弦采集仪在桥梁结构监测中的应用研究是指利用振弦采集仪对桥梁结构进行监测和数据采集的研究。振弦采集仪是一种能够实时监测桥梁结构振动情况的设备,通过采集桥梁上的振弦传感器获取振动数据,并将数据传输到监…

【数据库分库分表思路】

一、数据切分介绍 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进…

vue+element弹窗内---下拉框定位问题解决(方法之一)

问题: 加了 :popper-append-to-body"false" 这个属性也不好用时 可以试试这个 解决: 第一步: 找到el-select标签添加(popper-class"popperClass")属性-----如下图 第二步:在css中添加如下代码即可 ::v-deep .popperClass{ top:auto !important; }

静态网页设计——个人图书馆(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)

前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 感谢大佬的视频: https://www.bilibili.com/video/BV1VN4y1q7cz/?vd_source5f425e0074a7f92921f53ab87712357b 源码:https://space.bilibili.co…

python总结-生成器与迭代器

生成器与迭代器 生成器生成器定义为什么要有生成器创建生成器的方式一(生成器表达式) 创建生成器的方式二(生成器函数)生成器函数的工作原理总结 迭代器概念可迭代对象和迭代器区别for循环的本质创建一个迭代器 动态添加属性和方法运行过程中给对象、类添加属性和方法types.Met…

kafka之消费者(Consumer)

1、kafka消费者消费方式 kafka 的消费者(Consumer)采用 pull 的方式主动从 broker 中拉取数据,这种不足之处会有:当 broker 中没有消息时,消费者会不断循环取数据,一直返回空数据。 2、消费者组 Consumer…

【数据结构】平衡二叉树

导语 对于二叉搜索树 而言,它的 增、 删 、 改 、 查 的时间复杂度为 O() ~ O(n) 。原因是最坏情况下,二叉搜索树会退化成 线性表 。换言之,树的高度决定了它插入、删除和查找的时间复杂度。 为了对上述缺点进一步优化,设计了一…

APM32F035有感矢量控制方案

一、先来几句废话 首先这两年公司越来越多的开始使用国产的MCU,用过GD32、AT32、APM32等等,目前稳定使用的是APM32,包括身边朋友工作室,也开始从TI、STM、NXP换成APM32。上个月有幸拿到APM32F035电路控制板,非常感谢面包板社区提供…