以太网帧格式

news2025/1/18 17:04:44

以太网帧格式

  • 以太网帧格式
    • 前导码(Preamble)
    • 帧起始界定符(SFD,Start Frame Delimiter)
    • 以太网帧头
      • 目的MAC地址
      • 源MAC地址
      • 长度/类型
    • 数据段
    • 帧检验序列(FCS,Frame Check Sequence)
    • 帧间隙(IFG,Interpacket Gap)
  • ARP 数据报
  • IP 数据报
    • IP 首部
    • UDP 数据报格式
    • ICMP 报文
      • 报文格式
      • ping 命令诊断网络故障
      • pathping命令跟踪数据包路径
    • IGMP 报文

以太网帧格式

在这里插入图片描述

前导码(Preamble)

为了实现底层数据的正确阐述,物理层使用7个字节同步码(7 个 0x55),二进制表现为 0 和 1 交替,其作用是使发送方和接收方的时钟同步。

帧起始界定符(SFD,Start Frame Delimiter)

使用 1 个字节的SFD(0xd5),二进制表现为“10101011”,用来表示一帧的开始,即后面紧跟着传输的就是以太网的帧头。

以太网帧头

目的MAC地址

即接收端物理MAC地址,占用 6 个字节。MAC地址从应用上可分为单播地址、组播地址和广播地址

  • 单播地址:第一个字节的最低位为0,比如00-00-00-11-11-11,一般用于标志唯一的设备;
  • 组播地址:第一个字节的最低位为1,比如01-00-00-11-11-11,一般用于标志同属一组的多个设备;
  • 广播地址:所有48bit全为1,即FF-FF-FF-FF-FF-FF,它用于标志同一网段中的所有设备。

源MAC地址

即发送端物理MAC地址,占用6个字节。

长度/类型

长度/类型具有两个意义

  • 当这两个字节的值小于1536(十六进制为0x0600)时,代表该以太网中数据段的长度;
  • 如果这两个字节的值大于1536,则表示该以太网中的数据属于哪个上层协议,例如0x0800代表IP协议(网际协议)、0x0806代表ARP协议(地址解析协议)等。

数据段

长度最小46个字节,最大1500个字节。

长度最小46个字节,总的以太网帧长度最小为 64 个字节,其原因是因为以太网是不可靠的,这意味着它并不知道对方有没有收到自己发出的数据包,但如果他发出的数据包发生错误,需要进行重传。以太网的错误主要是发生碰撞,碰撞是指两台机器同时监听到网络是空闲的,同时发送数据就会发生碰撞,碰撞对于以太网来说是正常的。要保证以太网的重传,必须保证收到碰撞信号的时候数据包没有传完,要实现这一要求,发送方和接收方之间的距离很关键,也就是说信号在发送方和接收方之间传输的来回时间必须控制在一定范围之内。IEEE 定义了这个标准,一个碰撞域内最 远的两台机器之间的 round-trip time 要小于 512 bit time(传输一个比特需要的时间),这也是我们常说的一个碰撞域的直径。512 个 bit time 也就是 64 字节的传输时间,如果以太网数据包 ≥ 64 个字节就能保证碰撞信号到达发送方的时候,数据包还没有传完。最小数据帧的设计和以太网电缆长度有关,为的是让两个相距最远的站点能够感知到双方的数据发生了碰撞,最远两端数据的往返时间就是争用期,以太网的争用期是 51.2 us,正好发送 64byte 数据。

最大值 1500 称为以太网的最大传输单元(MTU,Maximum Transmission Unit),之所以限制最大传输单元是因为在多个计算机的数据帧排队等待传输时,如果某个数据帧太大的话,那么其它数据帧等待的时间就会加长,导致体验变差。另外还要考虑网络I/O控制器缓存区资源以及网络最大的承载能力等因素,因此最大传输单元是由各种综合因素决定的。为了避免增加额外的配置,通常以太网的有效数据字段小于1500个字节,现在电脑的配置都很高了,很多都支持巨型帧,巨型帧可以超过 1500 个字节

不同的协议,数据段的组成结构不同,后面再详细说明。

帧检验序列(FCS,Frame Check Sequence)

为了确保数据的正确传输,在数据的尾部加入了4个字节的循环冗余校验码(CRC校验)来检测数据是否传输错误。CRC数据校验从以太网帧头开始即不包含前导码和帧起始界定符。通用的CRC标准有CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在网络通信系统中应用最广泛的是CRC-32标准。

帧间隙(IFG,Interpacket Gap)

帧间隙的时间就是网络设备和组件在接收一帧之后,需要短暂的时间来恢复并为接收下一帧做准备的时间,IFG的最小值是96 bit time,即在媒介中发送96位原始数据所需要的时间,在不同媒介中IFG的最小值是不一样的。不管10M/100M/1000M的以太网,两帧之间最少要有96bit time,IFG的最少间隔时间计算方法如下:

  • 10Mbit/s最小时间为:96*100ns = 9600ns;
  • 100Mbit/s最小时间为:96*10ns = 960ns;
  • 1000Mbit/s最小时间为:96*1ns = 96ns;

ARP 数据报

ARP 地址解析协议,即 ARP(Address Resolution Protocol),根据 IP 地址获取物理地址。主机发送包含目的 IP 地址的 ARP 请求广播(MAC 地址为 48’hff_ff_ff_ff_ff_ff)到网络上的主机,并接收返回消息,以此确定目标的物理地址,收到返回消息后将 IP 地址和物理地址保存到缓存中,
并保留一段时间,下次请求时直接查询 ARP 缓存以节约资源。下图为 ARP 数据报格式 。

在这里插入图片描述

字段长度 (Byte)默认值备注
前导码+SFD80x5555…D5
以太网首部目的 MAC 地址6
源 MAC 地址6
长度/类型20x0806ARP帧类型值
ARP 字段硬件类型20x0001指链路层网络类型,1 为以太网
上层协议类型20x0800上层协议为 IP 协议
MAC地址长度10x6以太网 MAC 地址长度为 6
IP地址长度10x4IP 地址长度为 4
操作码20x1 / 0x21 表示 ARP 请求包
2 表示 ARP 应答包
源 MAC 地址6
源 IP 地址4
目的 MAC 地址6
目的 IP 地址4
填充数据18数据段最小长度为46
以太网校验校验字4除前导码+SFD 外均计算

IP 数据报

在这里插入图片描述

IP 首部

在这里插入图片描述

  • 版本 :4位IP版本号(Version),这个值设置为二进制的 “0100” 时表示 IPv4,设置为 “0110” 时表示 IPv6,目前使用比较多的IP协议版本号是 4
  • 首部长度 : 4位首部长度(IHL,Internet Header Length),表示IP首部一共有多少个 32bits(4个字节)。最大可表示15个 32 bits,因此 IP 的首部长度最大值为 60 字节
  • 服务类型 :8位服务类型(TOS,Type of service),该字段被划分成两个子字段:3位优先级字段(现在已经基本忽略掉了)和4位TOS字段,最后一位固定为0。服务类型为0时表示一般服务
  • 总长度 :16位IP数据报总长度(Total Length),包括IP首部和IP数据部分,以字节为单位。我们利用IP首部长度和IP数据报总长度,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16bit,所以IP数据报最长可达65535字节。尽管理论上可以传输长达65535字节的IP数据报,但实际上还要考虑网络的最大承载能力等因素
  • 标识 :16位标识(Identification)字段,用来标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1
  • 标志 :3位标志(Flags)字段
    • 最高位为保留位
    • 中间位是 DF (Don’t Fragment),表示禁止分片,只有 DF = 0 时才允许分片
    • 最低位是 MF (More Fragment),MF = 1 表示后面还有分片,MF = 0 表示最后一个分片
  • 片偏移 :13位片偏移字段,指较长的分组在分片后某片在原分组中的相对位置,以 8 字节为偏移单位,也就是说每个分片的长度一定是 8 字节的整数倍
  • 生存时间 :8位生存时间字段TTL(Time To Live),设置了数据报可以经过的最多路由器数,表示数据报在网络上生存多久,防止丢失的数据包在无休止的传播TTL的初始值由源主机设置,一般为32、64或者128,一旦经过一个路由器,它的值就减 1,减到 0 时,数据报就丢弃,并发送 ICMP 消息通知源主机
  • 协议 :8位协议(Protocol)类型,指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个处理过程。 0x01 表示为 ICMP 协议, 0x02 表示为 IGMP 协议, 0x06 表示为 TCP 协议, 0x11 表示为 UDP 协议
  • 首部校验和 :16位首部校验和(Header Checksum),该字段只校验数据报的首部,不包含数据部分;校验IP数据报头部是否被破坏、篡改和丢失等。
  • 源 IP 地址 :32位源IP地址(Source Address),即发送端的IP地址,如192.168.1.123
  • 目的 IP 地址 :32位目的IP地址(Destination Address),即接收端的IP地址,如192.168.1.102
  • 可选字段 :是数据报中的一个可变长度的可选信息,选项字段以32bit为界,不足时插入值为0的填充字节,保证IP首部始终是32bit的整数倍,没有的话长度可以为 0 。

IP首部校验和的计算方法:

1、将16位检验和字段置为0,然后将IP首部按照16位分成多个单元;
2、对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算是直接丢掉溢出的高位);
3、此时仍然可能出现进位的情况,将得到的和再次分成高16位和低16位进行累加;
4、最后将得到的和的反码填入校验和字段。

在这里插入图片描述

UDP 数据报格式

在这里插入图片描述

  • 源端口号 :16位发送端端口号,用于区分不同服务的端口,端口号的范围从0到65535
  • 目的端口号 :16位接收端端口号
  • UDP 长度 :16位UDP长度,包含UDP首部长度 + 数据长度,单位是字节
  • UDP 校验和 ** :16位UDP校验和。UDP计算校验和的方法和计算IP数据报首部校验和的方法相似,但不同的是IP数据报的校验和只检验IP数据报的首部,而UDP校验和包含三个部分:UDP 伪首部,UDP 首部和 UDP 的数据部分。伪首部的数据是从IP数据报头和UDP数据报头获取的,包括源IP地址,目的IP地址,协议类型和UDP长度**

数据是可以直接封装在IP协议里而不使用TCP、UDP或者其它上层协议的。然而在网络传输中同一IP服务器需要提供各种不同的服务,各种不同的服务类型是使用端口号来区分的,例如用于浏览网页服务的80端口,用于FTP(文件传输协议)服务的21端口等。TCP和UDP都使用两个字节的端口号,理论上可以表示的范围为0~65535,足够满足各种不同的服务类型。

TCP协议与UDP协议作为传输层最常用的两种传输协议,这两种协议都是使用IP作为网络层协议进行传输。下面是TCP协议与UDP协议的区别:

①TCP协议面向连接,是流传输协议,通过连接发送数据,而UDP协议传输不需要连接,是数据报协议;
②TCP为可靠传输协议,而UDP为不可靠传输协议。即TCP协议可以保证数据的完整和有序,而UDP不能保证;
③UDP由于不需要连接,故传输速度比TCP快,且占用资源比TCP少;
④TCP协议常用在对数据文件完整性较高的一些场景中,如文件传输等。
 UDP协议常用于对通讯速度有较高要求或者传输数据较少时,如视频直播和QQ等。

UDP 协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法 计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡 改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此 UDP 协议可以检测是否出错。虽然 UDP 提供有错误检测,但检测到错误时,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。

ICMP 报文

报文格式

在这里插入图片描述

  • ICMP 是 TCP/IP 协议族的一个 IP 层子协议,包含在 IP 数据报里,用于 IP 主机、路由器之间传递控制消息。控制消息是指网络是否连通,主机是否可达等功能。其中 ping 功能采用回送请求和回答报文,回送请求报文类型为 0x08,回答报文类型为 0x00

  • ICMP报文可分为两大类

    1. 有关信息采集和配置的 ICMP 报文,称为查询报文(query)或者信息类报文(information message)
    2. 有关 IP 数据报传递的ICMP报,称为差错报文(error message)
  • 校验和计算(校验 ICMP 首部和数据部分)

    • 将校验和字段设置为0
    • 每16个bit(即2个字节)组成一个数,相加,如果超过16个bit,把超过的高位值加到这16个bit值上,得到的新值再和下一个值相加
    • 如果最后还剩8个bit值,不能简单的加到低位,要把这8个bit当成高位值,再用0填充一个16个bit值,相加
    • 最后取反,填充到校验和字段
  • 报文类型字段(Type)及代码字段(Code)含义

类型TYPE代码CODE描述 Description
00Echo Reply——回显应答(Ping应答)
30Network Unreachable——网络不可达
31Host Unreachable——主机不可达
32Protocol Unreachable——协议不可达
33Port Unreachable——端口不可达
34Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特
35Source routing failed——源站选路失败
36Destination network unknown——目的网络未知
37Destination host unknown——目的主机未知
38Source host isolated (obsolete)——源主机被隔离(作废不用)
39Destination network administratively prohibited——目的网络被强制禁止
310Destination host administratively prohibited——目的主机被强制禁止
311Network unreachable for TOS——由于服务类型TOS,网络不可达
312Host unreachable for TOS——由于服务类型TOS,主机不可达
313Communication administratively prohibited by filtering——由于过滤,通信被强制禁止
314Host precedence violation——主机越权
315Precedence cutoff in effect——优先中止生效
40Source quench——源端被关闭(基本流控制)
50Redirect for network——对网络重定向
51Redirect for host——对主机重定向
52Redirect for TOS and network——对服务类型和网络重定向
53Redirect for TOS and host——对服务类型和主机重定向
80Echo request——回显请求(Ping请求)
90Router advertisement——路由器通告
100Route solicitation——路由器请求
110TTL equals 0 during transit——传输期间生存时间为0
111TTL equals 0 during reassembly——在数据报组装期间生存时间为0
120IP header bad (catchall error)——坏的IP首部(包括各种差错)
121Required options missing——缺少必需的选项
130Timestamp request (obsolete)——时间戳请求(作废不用)
14Timestamp reply (obsolete)——时间戳应答(作废不用)
150Information request (obsolete)——信息请求(作废不用)
160Information reply (obsolete)——信息应答(作废不用)
170Address mask request——地址掩码请求
180Address mask reply——地址掩码应答

ping 命令诊断网络故障

  • ping 命令只能检测两端口通或不通

  • PING(Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序。Ping 发送一个 ICMP 回声请求消息给目的地并报告是否收到所希望的 ICMP 回声应答。

  • ping指的是端对端连通,通常用来作为可用性的检查,但是某些病毒木马会强行大量远程执行ping命令抢占你的网络资源,导致系统变慢,网速变慢。严禁ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。

  • 如果你打开IE浏览器访问网站失败,你可以通过ping命令测试到Internet的网络连通,可以为你排除网络故障提供线索,下面展示ping命令返回的信息以及分析其原因。

    • 目标主机不可到达

      在这里插入图片描述

    • 目标网络不可到达

      在这里插入图片描述

    • 请求超时

      在这里插入图片描述

      说明丢包了

    • 通过延迟评估网络带宽

      在这里插入图片描述

      可以看到最小延迟为54ms,最大延迟57ms,平均延迟55ms

      当 ping 本计算机网关的时候延迟小,速度快

      在这里插入图片描述

pathping命令跟踪数据包路径

在这里插入图片描述

  1. 当PC0 ping PC1时不通,可能是1~4处某一处或多处断了,也可能是PC1没有开机。而使用PC0 pathping PC1时,从PC0到PC1,每经过一个路由器都会通过该路由器给PC0发回一个数据包说明PC0到该路由器的路径是通的。即Router1给PC0发回一个数据包则表示1、 2通;Router2给PC0发回一个数据包表示1、 2、 3通。在网络排错中具有很强的实用意义。

  2. 若 Router0 设置了进入的数据包无法追踪该路由器,PC0 pathping PC1时,数据包可以通过Router0,但是Router0不会给PC0返回一个数据包


输入命令

pathping www.bilibili.com

表示从本计算机访问 “www.bilibili.com” 该网站的服务器,并追踪途经的各个中转路由器

在这里插入图片描述

同时pathping命令还会统计通信方到每个中转路由器的丢包率,由此可以看出从哪到哪丢包严重,网络延迟大,据此可以优化网络。

相同类型的有trace route命令,该命令较为简略不会统计丢包率

IGMP 报文

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

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

相关文章

Vue全家桶:vue2+vue3全部搞懂:第八篇,重要!正式工程化项目开发——开始怎么写代码

前提,建议先学会前端几大基础:HTML、CSS、JS、Ajax,不然不好懂 这一专栏知识将一次性将vue、vue2、vue3全部讲明白 这一篇内容蛮多,我本人也打算加快学习速度,于是下面大量解释将出自于黑马程序员的视频课堂截图&…

Java面试篇【RabbitMQ】常见面试题(2024最新)

RabbitMQ 1.为什么使用MQ?优点是什么 因为MQ可以异步处理,提高系统吞吐量。 应用解耦,系统之间可以通过消息通信,不关心其他系统的处理。 流量削峰,可以通过消息队列的长度,控制请求量。可以缓解短时间内的高并发请…

热插拔更换ESXI宿主机系统硬盘导致紫屏故障案例一则

关键词 vmware、esxi5.5raid、热插拔、紫屏 华为 CH121V3刀片、SSD硬盘 There are many things that can not be broken! 如果觉得本文对你有帮助,欢迎点赞、收藏、评论! 一、问题现象 现网vmware云平台一台华为E9000刀箱CH121V3刀片服务…

16-Java命令模式 ( Command Pattern )

Java命令模式 摘要实现范例 命令模式(Command Pattern)中请求以命令的形式包裹在对象中,并传给调用对象 调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令 命令模式是行为型模式&…

面试官让说出8种创建线程的方式,我只说了4种,然后挂了。。。

写在开头 昨天有个小伙伴私信说自己面试挂在了“Java有几种创建线程的方式”上,我问他怎么回答的,他说自己有背过八股文,回答了:继承Thread类、实现Runnable接口、实现Callable接口、使用线程池这四种,但是面试官让说…

艺术与科技的结合,AI绘画图生图怎么样?

AI绘画图生图是指通过人工智能技术生成的具有艺术价值的图像。它可以根据用户提供的参考图像或描述,自动生成具有艺术风格的新图像。这些图像可以是风景、人物、抽象画等各种形式。那么ai绘画图生图到底怎么样? AI绘画图生图的优点在于它可以快速、高效地…

产品展示型wordpress外贸网站模板

孕婴产品wordpress外贸网站模板 吸奶器、待产包、孕妇枕头、护理垫、纸尿裤、孕妇装、孕婴产品wordpress外贸网站模板。 https://www.jianzhanpress.com/?p4112 床品毛巾wordpress独立站模板 床单、被套、毛巾、抱枕、靠垫、围巾、布艺、枕头、乳胶枕、四件套、浴巾wordpre…

【学习】DenseNet

DenseNet介绍 DenseNet模型的基本思路与ResNet一致,但它建立的是前面所有层与后面层的密集连接(即相加变连结),它的名称也是由此而来。DenseNet的另一大特色是通过特征在通道上的连接来实现特征重用。这些特点让DenseNet的参数量…

C# CallerMemberName、CallerFilePath、CallerLineNumber

CallerMemberName:调用某个方法的主方法名称 CallerFilePath:调用某个方法的主方法所在的类文件地址 CallerLineNumber:调用这个方法所在的行号 用这三个附加属性,需要设置默认值。

推荐5款极具效率的实用工具软件

​ 每次分享实用的软件,都会给人一种踏实和喜悦的感觉,这也是我热衷于搜集和推荐高效工具软件的原因。 1.个人日记软件——EDiary ​ EDiary是一款功能丰富的个人日记软件,用户可以在不联网的状态下使用,保护隐私。它支持日记、记事本、日历、事件提醒…

QT----云服务器部署Mysql,Navicat连接1698 -Access denied for user ‘root‘@‘‘

阿里云有活动,白嫖了一年的新加坡轻量级服务器,有点卡,有时候要开梯子 白嫖300元优惠券 目录 1 安装启动Mysql服务2 更改连接权限2.1 Navicat连接报错1698 -Access denied for user root 3 qt连接云服务器数据库 1 安装启动Mysql服务 我使用…

Docker-部署若依项目

文章目录 后端一、搭建局域网二、redis安装测试 三、MySQL安装四、后端项目放入位置及使用Dockerfile自定义镜像后端项目放入位置 前端配置检查各个端口是否启动nginx部署 首先得先把内部的文件给删除清空 docker images–查看有哪些文件 docker rmi -f ID–删除ID 后端 一、…

linux 安装OpenRestry

一、OpenRestry官网 openRestry中文官网 openRestry英文官网 二、OpenRestry搭建 可以参考官方提供的网址进行搭建:OpenRestry安装官网 ​ 三、开始安装 1、安装依赖库 yum install libtermcap-devel ncurses-devel libevent-devel readline-devel pcre-deve…

Docker 创建容器并指定时区

目录 1. 通过环境变量设置时区(推荐)2. 挂载宿主机的时区文件到容器中3. 总结 要在 Docker 容器中指定时区,可以通过两种方式来实现: 1. 通过环境变量设置时区(推荐) 在 Docker 运行时,可以通…

简析:老阳分享的视频号带货蓝海项目前景如何?

随着社交媒体的快速发展,视频号带货已经成为电商领域的一大热点。近期,知名网红老阳分享了自己的视频号带货项目,引发了广泛关注。本文将从视频号前景、注意事项等方面,分析老阳分享的视频号带货项目前景如何。 首先,从…

三维GIS的业务导向

的确,目前三维GIS以做特效居多,酷炫、亮眼,从二维转到三维,第一眼就给人眼前一亮的感觉,就凭这一项,很多客户就会买单,GIS的客户以政府、科研院所、特种行业为主,买过一次单后&#…

10年架构师和CTO经验总结:从程序员到CTO

在这个不断变化的技术环境中,软件架构的重要性愈发凸显。然而作为一个职业,软 件架构师的地位却不断受到业内外的挑战。在20世纪90年代互联网技术发展初期,软件架 构师是备受推崇的职位。在相对简单的技术诉求下,他们的决策直接决…

【网络】:再谈传输层(UDP)

传输层 一.再谈端口号二.UDP 一.再谈端口号 端口号(Port)标识了一个主机上进行通信的不同的应用程序。 在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过netstat -n查看); 1.端口号划分 0 - 1023:…

【python 1】----Pytest基础知识

定义 用于编写和执行Python测试全功能测试框架(工具),是一个第三方库 安装 pip insatll pytest 安装pytest --version 校验 pytest的组成构成 不写调用语句也可以执行函数内容 在用例运行语句里面: -s:指的是开启与终端的…

有一点好看的wordpress外贸独立站模板

手机配件wordpress外贸网站模板 充电器、移动电源、手机膜、手机电池、手机壳、手机转接头等手机配件wordpress外贸网站模板。 https://www.jianzhanpress.com/?p3809 车载电器wordpress外贸网站模板 车载吸尘器、空气净化器、行车记录仪、车载充电器、车载影音导航等车载电…