以太网帧格式

以太网帧格式

  • 以太网帧格式
    • 前导码(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 报文

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 文件操作命令

1 文件与目录操作 cd /home 进入 ‘/home’ 目录 cd .. 返回上一级目录cd ../.. 返回上两级目录cd - 返回上次所在目录cp file1 file2 将file1复制为file2cp -a dir1 dir2 复制一个目录 cp -a /tmp/dir1 . 复制一个…

网络安全审计是什么意思?与等保测评有什么区别?

网络安全审计和等保测评在信息安全领域中都是非常重要的环节。但不少人对于这两者是傻傻分不清楚,今天我们就来简单聊聊网络安全审计是什么意思?与等保测评有什么区别? 网络安全审计是什么意思? 网络安全审计是通过对网络系统和网…

selenium鼠标操作实战

鼠标操作实战 鼠标单击操作 click()内置鼠标操作包ActionChains鼠标双击操作double_click()鼠标右击操作context_click()鼠标指针悬浮操作move_to_element(ele)鼠标拖动操作drag_and_drop(source, target)其他鼠标操作汇总 鼠标单击操作 click() from selenium import webdriv…

MySQL存储过程2——if、case、while、repeat、loop、cursor、handler

1、if用作条件判断 1.1、语法结构 IF 条件1 THEN... ELSEIF 条件2 THEN... ELSE... END IF; 在if条件判断的结构中,Else if结构可以有多个,也可以没有。Else结构可以有,也可以没有 1.2、示例 根据定义的分数score变量,判断当…

openssl调试记录

openssl不能直接解密16进制密文,需要把密文转化成base64格式才能解密 调试记录如下:

搭建SpringBoot项目——开发环境搭建开发环境搭建

简介 SpringBoot 是 Java 社区最有影响力之一的开源的Spring后端开发框架,也是企业级应用开发的首选技术,Spring Boot 拥有良好的技术基因,它是伴随着Spring 4 而产生的技术框架,在继承了 Spirng 框架所有优点的同时也为开发者带来…

scrapy 爬虫:多线程爬取去微博热搜排行榜数据信息,进入详情页面拿取第一条微博信息,保存到本地text文件、保存到excel

如果想要保存到excel中可以看我的这个爬虫 使用Scrapy 框架开启多进程爬取贝壳网数据保存到excel文件中,包括分页数据、详情页数据,新手保护期快来看!!仅供学习参考,别乱搞_爬取贝壳成交数据c端用户登录-CSDN博客 最终…

AI智商排名:Claude-3首次突破100

用挪威门萨(智商测试题)中 35 个问题对chatGPT等人工智能进行了测试: ChatGPT 对ChatGPT进行了两次挪威门萨测试,在 35 个问题中,它平均答对了 13 个,智商估计为 85。 测试方法 每个人工智能都接受了两次…

【b站咸虾米】1 Vue介绍 2021最新Vue从基础到实例高级_vue2_vuecli脚手架博客案例

课程地址:【2021最新Vue从基础到实例高级_vue2_vuecli脚手架博客案例】 https://www.bilibili.com/video/BV1pz4y1S7bC/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 感觉尚硅谷的Vue看完忘得差不多了,且之前学过咸虾米的unia…

Java agent技术的注入利用与避坑点

什么是Java agent技术? Java代理(Java agent)是一种Java技术,它允许开发人员在运行时以某种方式修改或增强Java应用程序的行为。Java代理通过在Java虚拟机(JVM)启动时以"代理"(agent…

Redis(十七)分布式锁

文章目录 面试题分布式锁锁的种类分布式锁需要具备的条件和刚需分布式锁 案例nginx分布式微服务部署,单机锁问题分布式锁注意事项lock/unlocklua脚本自研版的redis分布式锁搞定lua脚本 可重入锁可重入锁种类可重入锁hset实现,对比setnx(重要&…

react高阶组件:如何同时兼容class类组件和函数式组件。

场景: 每个页面都要实现分享功能,但是页面有些是用class类,有些又直接是函数式。 方案1: 写2套方法。各自引用。(维护不太好,改要改2遍) 方案2: 可以封一个 jsx的组件&#xff0c…

NLP:spacy库安装与zh_core_web_sm配置

到公司来第一个项目竟然是偏文本信息抽取与结构化的,(也太高看我了┭┮﹏┭┮) 反正给机会了就上吧,我就一臭实习的,怕个啥。配置了两天的环境,也踩了不少坑,我把我的经历给大家分享一下&#…

HarmonyOS NEXT应用开发案例集

概述 随着应用代码的复杂度提升,为了使应用有更好的可维护性和可扩展性,良好的应用架构设计变得尤为重要。本篇文章将介绍一个应用通用架构的设计思路,以减少模块间的耦合、提升团队开发效率,为开发者呈现一个清晰且结构化的开发…

【Tauri】(4):整合Tauri和actix-web做本地大模型应用开发,可以实现session 登陆接口,完成页面展示,进入聊天界面

1,视频地址 https://www.bilibili.com/video/BV1GJ4m1Y7Aj/ 【Tauri】(4):整合Tauri和actix-web做本地大模型应用开发,可以实现session 登陆接口,完成页面展示,进入聊天界面 使用国内代理进行加…

【HTML】HTML基础7.3(自定义列表)

目录 标签 效果 代码 注意 标签 <dl> <dt>自定义标题</dt><dd>内容1</dd><dd>内容2</dd><dd>内容3</dd> 。。。。。。 </dl> 效果 代码 <dl><dt>蜘蛛侠系列</dt><dd>蜘蛛侠1</dd…

PyCharm Community Edition 2023.3.3,UI界面设置成旧版

File->Settings->Appearance & Behavior->New UI->Enable new UI(取消勾选)->重启PyCharm 旧版UI: 新版UI&#xff1a;

基于决策树实现葡萄酒分类

基于决策树实现葡萄酒分类 将葡萄酒数据集拆分成训练集和测试集&#xff0c;搭建tree_1和tree_2两个决策树模型&#xff0c;tree_1使用信息增益作为特征选择指标&#xff0c;B树使用基尼指数作为特征选择指标&#xff0c;各自对训练集进行训练&#xff0c;然后分别对训练集和测…

【ETCD】简介安装常用操作---图文并茂详细讲解

目录 一 简介 1.1 etcd是什么 1.2. 特点 1.3. 使用场景 1.4 关键字 1.5 工作原理 二 安装 2.1 etcd安装前介绍 2.2 安装 2.3 启动 2.4 创建一个etcd服务 三 常用操作 一 简介 1.1 etcd是什么 etcd是CoreOS团队于2013年6月发起的开源项目&#xff0c;它的目标是构建…

git 如何将多个提交点合并为一个提交点 commit

文章目录 核心命令详细使用模式总结示例 核心命令 git merge branch2 是将分支branch2的提交点合并到本地当前分支。 而在执行这条命令的时候&#xff0c;加一个选项--squash就表示在合并的时候将多个提交点合并为一个提交点。 git merge --squash branch2 先看squash单词的意…