二三层报头及IP分片详解

article/2025/9/13 1:29:36

一、报文数据格式

 二、二层数据格式

二层以太帧格式
DMAC(6字节)SMAC(6字节)type(2字节)DATA(46-1500字节)CRC(4字节)
字段长度含义
DMAC6字节目的MAC地址,IPV4为6字节,该字段确定帧的接收者。
SMAC6字节源MAC地址,IPV4为6字节,该字段标识发送帧的工作站。
Type2字节协议类型。下表列出了链路直接封装的协议。
0x0800  IPv4协议
Data变长

数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输一字节信息也必须使用46字节的数据字段。如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充。数据字段的最大长度为1500字节。

CRC4字节用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。

三、IP报文字段

IP头格式
versionHeader Lenthtype of service                   Total length
Identification FlagsFragment offset
time to liveprotocolheader    checksum
                                               Source address
                                            Destination address
Options(可变)Padding(可变)

IP头字段解释

字段长度含义
Version4比特
  • 4:表示为IPV4;
  • 6:表示为IPV6。
Header Lenth4比特首部长度,如果不带Option字段,则为20,最长为60,该值限制了记录路由选项。以4字节为一个单位。
Type of Service8比特服务类型。只有在有QoS差分服务要求时这个字段才起作用。
(不重要 一般都是0)
Total Length16比特总长度,整个IP数据报的长度,包括首部和数据之和,单位为字节,最长65535,总长度必须不超过最大传输单元MTU。
Identification16比特标识,主机每发一个报文,加1,分片重组时会用到该字段。(Identification相同的代表是同一个包的分片)
Flags3比特标志位:

 IP Flag字段格式

  • Bit 0: 保留位,必须为0。
  • Bit 1: DF(Don't Fragment),能否分片位,0表示可以分片,1表示不能分片。
  • Bit 2: MF(More Fragment),表示是否该报文为最后一片,0表示最后一片,1代表后面还有。
Fragment Offset13比特

片偏移:分片重组时会用到该字段。表示较长的分组在分片后,某片在原分组中的相对位置。以8个字节为偏移单位,也就是分片长度必须是8的倍数

偏移字节数是该值*8 ,

Time to Live8比特生存时间:可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。一般是128
Protocol8比特

协议:下一层协议。指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个进程处理。

常见值:

  • 0: 保留Reserved
  • 1: ICMP, Internet Control Message [RFC792]
  • 6: TCP Transmission Control Protocol [RFC793]
  • 17: UDP User Datagram Protocol [RFC768]
Header Checksum16比特首部检验和,只检验数据包的首部,不检验数据部分。
Source Address32比特源IP地址。
Destination Address32比特目的IP地址。
Options可变选项字段,用来支持排错,测量以及安全等措施,内容丰富。选项字段长度可变,从1字节到40字节不等,取决于所选项的功能。
Padding可变填充字段,全填0。

 二、IP分片产生原因

数据链路层用MTU(Maximum Transmission Unit,最大传输单元)来限制所能传输的数据包大小,MTU是指一次传送的数据最大长度,不包括数据链路层数据帧的帧头,如以太网的MTU为1500字节,实际上数据帧的最大长度为1514字节,其中以太网数据帧(二层)的帧头为14字节。

如果IP层有数据包要传,而且数据包的长度(包括IP头)超过了MTU,那么IP层就要对数据包进行分片操作,使每一片的长度都小于或等于MTU。

三、IP分片原理

IP分片发生在IP层(三层),不仅源端主机会进行分片,中间的路由器也有可能分片,因为不同的网络的MTU是不一样的,如果传输路径上的某个网络的MTU比源端网络的MTU要小,路由器就可能对IP数据包再次进行分片。而分片数据的重组只会发生在目的端的IP层。 

UDP和ICMP不会像TCP那样自己分段,如果组成的 IP数据报长度超过了MTU大小,那么IP数据报显然就要进行分片。(TCP会自己分段所以一般不会产生IP分片,如果TCP不分段而交由IP层分片,则原理一样)

UDP和ICMP认为网络层可以传输无限长(实际上有65535的限制)的数据,当这两种协议发送数据时,它们不考虑数据长度,仅在其头部添加UDP或ICMP首部,然后直接交给网络层。接着网络层IP协议会对数据进行分片,它会直接将整个的上层数据切成N个分片,这样做的结果是,只有最后一个分片具有UDP或者ICMP首部,而其它分片则没有。

一般MTU为1500,IP首部为20字节,UDP或ICMP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据静荷载部分大于1472字节,就会出现分片现象。 

下图为MTU设置为100时,IP分片情况:

可以看到IPv4报文长度为114=mtu(100)+14字节的二层以太网长度

mtu(100)-IP头部(20)= IP最大负载长度(80),所以可以看到offset偏移量为80的倍数

四、tcp分段与IP分片(MSS和MTU) 

MSS=MTU-IP头部长度-TCP头部长度,所以一般MTU为1500时,可以看到MSS为1460

MTU与MSS的关系

为什么说tcp一般不会产生分片呢?

Tcp建立连接的时候,必须进行三次握手,在前两个握手包中,双方互相声明了自己的MSS。经过握手后,彼此知道自己的MSS,这个协商就是用来自动调整从而适配MTU的。如一个IP包最多可以携带1500-20=1480字节的数据,再减去TCP头部20字节。当要传输的数据块大于1460字节时,TCP层就会把它分段,封装成多个网络包。这样,数据经过本地 TCP 层分段后,交给本地 IP 层,在本地 IP 层就不需要分片了。

但如果网络上有交换机之类的MTU比发送方和接收方都小,则还是有可能分片的


http://chatgpt.dhexx.cn/article/mv0Vbrm5.shtml

相关文章

哈希分片总结

主要参考: 《大数据日知录》 https://zhuanlan.zhihu.com/p/34985026 什么是哈希分片 后台随着数据规约的越来越大,单机明显无法存储着庞大的数据量,只能依靠大规模集群在对数据进行存储和处理,所以系统的可扩展性也成为了很重要…

MongoDB 分片

分片 sharding 分片是指将数据拆分,将起分散到不同服务器的过程.,将数据分散到不同的服务器上,可以存储更多的数据,处理更大的负载 MongoDB分片机制允许你创建一个包含许多服务器(分片)的集群,将子数据分散在集群中.每个分片维护着一个数据集合的子集,相比单服务器和副本集&…

LaTeX制作幻灯片

LaTeX \LaTeX LATE​X幻灯片制作采用的是beamer类。beamer类默认使用sans serif family,和article不同,article默认是roman font family。所以如果我要实现幻灯片的标题和正文字体的设置可以通过下面的命令: \setsansfont{TeX Gyre Termes} …

MySQL的分片

前言 从开发人员的角度来说,为什么要了解和掌握MySQL分片? 第一,了解MySQL分片可以更合理地定制分片策略,选分片字段是要讲科学的。 第二,了解MySQL分片以后如果出现故障报错,也有助于问题的排查。 第三…

外汇天眼:新手如何模拟炒外汇?模拟炒外汇的一点心得分享

模拟炒外汇通常是在没有进行外汇交易之前利用外汇交易软件的模拟账户进行无风险的外汇交易。是刚入门的投资者为熟悉外汇交易软件和外汇市场而经常使用的方法。 新手如何模拟炒外汇? 外汇市场的火热让不少投资者纷纷加入,很多高手也都是从新手走过来的…

外汇套利原理及策略EA

外汇套利,通俗解释就是当相同货币对或相关货币对之间的价差偏离正常范围时进行买卖,当价差回归正常范围时获利平仓的一种交易策略。 外汇套利分为三类 单品种的跨平台套利两相关品种的对冲套利三相关品种的三角套利 如何开发三角套利策略 “三角” 是…

外汇平台怎么选择?玩外汇又有那些优势呢?

外汇平台怎么选择?玩外汇又有那些优势呢? 怎么选择好的外汇平台呢? 第一个 是优先选择大炒外汇的交易平台,虽然也不排除一些小平台是优质的,不过对于新手投资者来说在判断上是很难下决断的。选大平台的主要原因是可以搜索相关的口碑&…

创建模拟外汇网站

1.创建网站模板 2.创建网站服务器 1.创建网站模板 打开pycharm,File→New Project,创建项目文件夹project1 单击项目文件project1,右键新建一个名称为rates.csv的文件。 输入以下内容: 交易币,交易币单位,现汇卖出价,现钞卖出价,现汇买入价…

量化交易之平台搭建

该篇主要是是用来展示量化交易的效果,不构成任何投资建议,仅供参考 搭建的环境: ​ 系统 linux-centos7 python环境: ​ python3.7.4 先安装好我们的库: cd demo pip install -r requirements.txt -i https://pypi.douban.com/simple安…

外汇交易平台怎么选择?

近年来,外汇业发展可谓是生机勃勃,形形色色外汇交易商如雨后春笋般涌出,铺天盖地的外汇广告不停袭击着你的眼球,一夜暴富的神话天天都在上演……外汇市场一片繁荣。市场繁荣说明大众投资理财意识正日渐成熟,但是这个杂…

五步看平台,选好安全的MT4交易外汇平台

在选择MT4外汇交易平台时,如何避免不正规的平台?以下是5招教你远离不正规MT4交易外汇平台。 1. 查看平台是否取得合法许可证 首要考虑的是该平台是否取得了合法的许可证。许可证是证明一个交易平台合法的最重要证据,因此务必在选择时核查该平台的许可证…

结算平台的搭建

写在前头的话: 希望这一系列可以多多帮到一些人——想要做后端产品经理的人、正在做后端产品经理的人、已经放弃了后端产品的人。博主产品经理的资历不深,是一个”复盘“派。 因为涉及部分商业信息,所以时隔了好几年后,才在这里…

如何搭建自己的外汇平台,教你如何搭建外汇平台,如何省钱

外汇市场从世纪之初进入中国,到如今有十几个年头。从起初耳熟能详的几个平台商到现在如雨后春笋般出现,中国的外汇市场越来越开放,价格成本也越来越透明。很多外汇代理商不断发展壮大,对搭建自己的平台有了需求。 开外汇平台赚钱,是一个普遍流传的说法。但是开平台到底有…

泰坦科技MT4平台搭建提供一站式白标方案 快速开启外汇经纪业务

众所周知,外汇市场是全球最大的金融市场,而利用白标技术成为外汇服务提供商是很多人选择运营外汇业务的第一步。相对于外汇主标需要购买整套系统和独立服务器这样的高额成本,搭建一个白标平台要容易的多,也可以相对较快地开展外汇…

领歌敏捷协作——修改密码

文章目录 领歌敏捷协作——修改密码1、进入用户中心2、点击修改密码3、输入原密码进行确认 领歌敏捷协作——修改密码 1、进入用户中心 2、点击修改密码 3、输入原密码进行确认

领歌敏捷协作——自定义领歌背景

文章目录 领歌敏捷协作——自定义领歌背景1、登陆领歌2、点击菜单,选择设置背景3、选择背景图片 领歌敏捷协作——自定义领歌背景 1、登陆领歌 领歌地址:https://www.leangoo.com 2、点击菜单,选择设置背景 3、选择背景图片 选择背景图片&…

领歌敏捷协作——设置备用邮箱,主备切换

文章目录 领歌敏捷协作——设置备用邮箱,主备切换1、进入用户中心2、点击添加备用邮箱3、输入备用邮箱并进行验证4、主备邮箱切换 领歌敏捷协作——设置备用邮箱,主备切换 1、进入用户中心 2、点击添加备用邮箱 3、输入备用邮箱并进行验证 4、主备邮箱切…

领歌敏捷协作——通过数据筛选进行快速定位

文章目录 领歌敏捷协作——通过数据过滤进行快速定位1、选择并进入一个看板2、进入筛选面板1、点选标签2、点选成员3、输入关键词 3、全局搜索4、执行搜索 领歌敏捷协作——通过数据过滤进行快速定位 1、选择并进入一个看板 点击右侧菜单的筛选 2、进入筛选面板 1、点选标签 …

领歌敏捷协作——设置微信接收卡片提醒

文章目录 领歌敏捷协作——设置微信接收卡片提醒1、进入用户中心2、进入第三方帐号页面3、点击绑定4、关注领歌公众号5、哪几种情况才会收到领歌的微信通知 领歌敏捷协作——设置微信接收卡片提醒 1、进入用户中心 2、进入第三方帐号页面 3、点击绑定 打开微信,扫描…

领歌敏捷协作——修改看板名称

文章目录 领歌敏捷协作——修改看板名称1、进入看板列表2、选择一个看板3、点击修改名称4、输入新名称并保存 领歌敏捷协作——修改看板名称 1、进入看板列表 2、选择一个看板 进入看板后,点击看板名称 3、点击修改名称 4、输入新名称并保存