以太网 以太网帧格式与IP报文分片

article/2025/10/3 18:09:14

2.1.0 以太网 以太网帧格式与IP报文分片

一、以太网数据帧信息简介

以太网有两种类型的数据帧,一种是Ethernet_II另一种是IEEE802.3。

两者并没有明确的规定两种类型的使用场景,通常都是由协议/应用程序的开发者定义的。

通过观察发现:

  • 应用程序产生的包大多为Ethernet_II
  • 部分网络协议工作时产生的包为IEEE802.3(如:STP产生的BPDU)

数据帧格式
数据帧格式2

DMAC字段(目标的MAC地址)

SMAC字段(发送者的MAC地址)

Type字段(描述Data中的封装的报文类型)常见类型:ARP[0x0806]IP[0x0800]VLAN[0x8100]

Data字段(用户数据,其中还包含IP报头、TCP/UDP报头)

其中的封装可以看作以下的抽象描述:【          Data数据            】
【     IP报头【Data数据】        】
【  IP报头【TCP报头【用户数据】】 】

FCS字段(以太网校验字段,校验方法为循环冗余检验)

二、以太网数据帧长度

以太网数据帧及封装

以太网帧最短帧长度为64Byte(字节)、最长1518Byte,当超过1518Byte之后的数据帧就需要进行一个分片处理。

以太网帧所占用的长度为:DMAC+SMAC+Type+FCS=18Byte

已知最短帧长为64Byte,减去以太网18Byte之后就说明Date字段封装内容最短需要有46Byte。

46Byte中还包含着IP报头与TCP或UDP报头:

  • 46Byte减去IP报头的20Byte=26Byte
  • 当内部封装TCP时:26Byte减去TCP报头20Byte=6Byte
  • 当内部封装UDP时:26Byte减去UDP报头8Byte=18Byte

得出的结果大小,也就是实际用户数据的最小长度。

三、数据填充

如果不满足最短帧长会怎样?

 以太网帧中的Data字段会自行填充0,直到满足最短帧长。
最小帧测试

疑惑:理论上说以太网帧不满足最小帧长,Data字段会填充0,但在终端所发送的包中并没有体现出来。

 以下是抓包用户发送的ICMP数据包结果,可以看了总帧长为45Byte(并没有将FCS字段长度计算在内),用户实际长度为3Byte,完全不符合最小帧长度的要求。
在这里插入图片描述

网络设备这边,则是能够正常的进行填充,实现数据帧满足最小帧长要求

 网络设备这边可以看到帧长度为60Byte(加上FCS字段4byte就满足了最小64Byte帧长了)

如何计算填充多少字节?

64Byte-18Byte(以太网帧长度)-20Byte(IP报头)-8Byte(ICMP属于UDP报文占8Byte)-3Byte(实际发送长度)=64-18-20-8-3 =15Byte

填充抓包

四、数据分片

以太网帧最短帧长度为64Byte(字节)、最长1518Byte,当超过1518Byte之后的数据帧就需要进行一个分片处理。

为什么数据包需要分片呢?

 因为有MTU(最大传输单元)限制,网络设备限制最大传输的MTU大小为1500Byte(此处的1500Byte指的是以太网中Data字段大小限制在1500Byte内),超过MTU值的数据包就需要进行分片,将数据包分成小于/等于MTU值大小的数据分片,到了目的地再组装起来。

换名话讲,当以太网帧长度大于1518Byte就需要进行分片。

如果数据包大小大于1518Byte,我强制不分片会怎样?

 会禁止发送该不正常的数据包。
最大帧测试


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

相关文章

SOME/IP报文格式-Message ID

–回目录页 SOME/IP报文格式-Message ID Message ID [32 Bit] The Message ID is a 32 Bit identifier that is used to dispatch the RPC call to a method of an application and to identify an event. The Message ID has to uniquely identify a method or event of a …

TCP/IP报文格式详解

1.端口号   标记同一台计算机上的不同进程   源端口:占2个字节,源端口和IP的作用是标记报文的返回地址。   目的端口:占2个字节,指明接收方计算机上的应用程序接口。   TCP报头中的源端口号和目的端口号同IP报头中的源…

ping内网流程以及ARP,ICMP,IP报文格式

ping内网流程 正常ping流程 A->B arp广播报文格式: 以太网目的MAC 以太网源MAC 帧类型 硬件类型 4 6 OP 发送端以太网MAC 发送端IP地址 目的MAC 目的IP FF-FF-FF-FF-FF-FF 00-50-56-C0-00-01 0806 0800 1 00-50-56-C0-00-01 1.1.1.1 00-00-0…

TCP,IP,UDP等各种报文格式

1.TCP:全双工,传输层协议 源端口和目的端口:各占2个字节,是运输层与应用层的服务接口。 序号:占4个字节。TCP连接传送的数据流中的每一个字节都被编上一个序号。首部中序号字段的值指的是本报文段所发送的数据的第一个…

IP报文格式及各字段的意义

IP数据包由报头和数据两部分组成。报头的前一部分是固定长度,共20字节。在报头的固定部分的后面是可选部分——IP选项和填充域。 首部各字段的含义如下 1、版本 占4位,指IP协议的版本。 2、报头长度 占4位,该字段的单位是32位字(1…

IP报文格式和实例分析

上面是IP的报文格式,接下来我们先说明各个字段的意义。然后,用Etheral软件转包分析IP的报文格式。 1.版本:ip报文中,版本占了4位,用来表示该协议采用的是那一个版本的ip,相同版本的ip才能进行通信。一般此…

TCP/IP协议中IP数据保报文格式详解

在 TCP/IP 协议中,使用 IP 协议传输数据的包被称为 IP 数据包,每个数据包都包含 IP 协议规定的内容。IP 协议规定的这些内容被称为 IP 数据报文(IP Datagram)或者 IP 数据包。 IP 数据报文由首部(称为报头)…

TCP/IP报文格式及通讯

目录 1 分层结构 1.1 PHY物理层 1.2 MAC层(LLC逻辑链路层) 1.3 IP层(net网络层) 1.3.1 IP报路由时MAC变IP不变 1.3.2 ARP原理 1.3.3 IP报拆分 1.3.4 生存时间 1.3.5 协议种类 1.3.7 划分子网 1.4 TCP报文、UDP报文 1.5 应…

TCP/IP 报文格式(IP数据包、TCP报头、UDP报头)

TCP/IP 报文格式(IP数据包、TCP报头、UDP报头) 一、IP包格式 IP数据包,是一种可以变长的分组,由首部与数据负载组成。首部长度为20-60字节(Byte),后40字节是可选的,但长度不固定&a…

SOMEIP报文格式部分字段概述(二)

书非借而不能读也! 为了提高效率,现在参考了某网友的(忘记来源了)相关文章。 【SOMEIP报文格式部分字段概述】 【Message ID】 Message ID是一个32位标识符,用于将RPC调用分派给应用程序的method并识别event 。 Mess…

【TCP/IP详解】IP报文格式

我将工作中用到的报文格式进行了汇总,方便查阅: 【TCP/IP协议】各层报文首部数据格式汇总 解析: 4位版本:目前的协议版本号是4,因此IP有时也称作IPv4。4位首部长度:普通的IP首部长为20个字节,除非含有选项字…

IP报文格式

每一行由32bit组成(4字节) 每一个小格子称为“字段” 每一个字段或者某些字段的组合用来表达IP协议相关的功能如下图 字段解释: 1、版本 ver 占4bit表示IP协议的版本 通行双方的版本必须一致,目前广泛使用ipv4版本 2、首部长…

IP 报文格式详解(IPv4、IPv6)

文章目录 1 概述2 IP 报文格式2.1 IPv42.2 IPv62.3 两者区别 3 网工软考真题 1 概述 #mermaid-svg-Z10Ft1t2MtizhS0J {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Z10Ft1t2MtizhS0J .error-icon{fill:#552222;}#m…

IP数据报格式

1、报文格式 前几篇总结过较多网络层的知识,ARP,ip地址、子网掩码等等。这次总结一下IP数据报的报文格式 IP数据报的格式能够说明IP协议都具有什么功能。在TCP/IP的标准中,各种数据格式常常以32位(4字节)为单位来描述…

IP报文格式详解

转载:https://www.cnblogs.com/zhangbing12304/p/11016921.html 下图为常见的IP报文格式表: 上面是IP的报文格式,接下来我们先说明各个字段的意义。然后,用Etheral软件转包分析IP的报文格式。 1.版本:ip报文中&#…

matlab fsolve 与fzero,fsolve / fzero:找不到解决方案,看似常规

您的系统设置方式,绘制它并观察其行为实际上很方便 . 我向你的函数进行了矢量化并绘制了 f(x) = MLNEfun(x)-x ,其中 MLNE(x) 的输出是 newA . 实际上,您对系统的固定点感兴趣 . 我观察到的是: 在A~3800处有一个奇点和一个根交叉 . 我们可以使用 fzero ,因为它是一个括号中…

matlab fsolve实例,转 Matlab非线性方程求解器fsolve总结(含实例)

this.p{ m:2, b:2, loftPermalink:, id:fks_080067080082080074080086083095085085082071082086082074092, blogTitle:转 Matlab非线性方程求解器fsolve总结(含实例), blogAbstract: fsolve是采用最小二乘法来求解非线性方程。它的一般求解方式为: XFSOLVE(FUN,X0,O…

MATLAB-fsolve函数帮助文档翻译与补充

fsolve 解非线性方程组 非线性系统解算器 解决指定的问题 F(x) 0对于x, F(x)是一个返回向量值的函数。 x是一个向量或者一个矩阵;看矩阵参数。 语法: x fsolve(fun,x0) x fsolve(fun,x0,options) x fsolve(problem) [x,fval] fsolve(___) [x,fval,exitfla…

[Matlab] fsolve函数隐藏输出

fsolve函数用于求解方程的解,第一参数是要求解的方程,方程形式是f(x)0,第二个参数是从哪个点开始迭代搜索。 比如: fsolve会输出两部分内容,第一部分是迭代的结果(是否找到根),第二部分是求解结果(如果没找…

matlab之fsolve方法求解复杂非线性方程常见问题(入门)

问题描述: 二十六道二次方程,共二十个未知数。 考虑了matlab中可用的各类算法,最后采用fsolve函数解该复杂非线性方程。 参考:非线性方程(组):MATLAB内置函数 solve, vpasolve, fsolve, fzero, roots [MATLAB] - Ge…