• 【杂记-浅谈以太网IP数据帧】


    一、以太网数据帧

    以太网数据帧是网络通信的基础单元,遵循IEEE 802.3标准,用于在以太网中传输数据。一个典型的以太网数据帧包括前导码、帧开始符、目的MAC地址、源MAC地址、类型或长度字段、数据载荷和帧校验序列。其中,类型字段指明了上层协议的种类,常见的类型值为0x0800代表IP协议帧,而类型字段为0x0806代表ARP协议帧。

    二、IP头部

    概念
    IP首部是IP数据报的核心部分,它确定了数据报的格式和行为。IP首部固定部分通常为20字节,但在某些情况下可扩展到60字节。首部包含了版本、首部长度、区分服务、总长度、标识、标志、片偏移、生存时间(TTL)、协议、首部校验和、源地址和目的地址等关键字段。
    内部
    1、版本(Version):占用4位,指明了IP协议的版本,通常为IPv4。
    2、首部长度(Header Length):占用4位,指明了首部的长度,单位为32位字,因此最小值为5(20字节),最大值为15(60字节)。
    3、区分服务(Differentiated Services):占用8位,用于服务质量管理,但目前并不常用。
    4、总长度(Total Length):占用16位,指明了整个IP数据报的长度,单位为字节,最大值为65535字节。
    5、标识(Identification):占用16位,用于数据报分片和重组,每产生一个数据报,计数器加1,并将此值赋给标识字段。
    6、标志(Flags):占用3位,其中最重要的位是DF(Don’t Fragment)位,表示不允许分片;MF(More Fragment)位表示后面还有分片。
    7、片偏移(Fragment Offset):占用13位,表示该片在原数据报中的相对位置,以8字节为单位。
    8、生存时间(Time To Live):占用8位,设置了数据报可以经过的最多路由器数,防止无限循环。
    9、协议(Protocol):占用8位,指明了上层协议的类型,如TCP或UDP。
    10、首部校验和(Header Checksum):占用16位,用于校验首部是否完整。
    11、源地址(Source Address)和目的地址(Destination Address):各占用32位,分别指明了数据报的发送者和接收者的IP地址。

    三、以太网帧结构及长度计算

    以太网帧长度计算
    1、最小以太网帧长度:以太网帧的最小长度为64字节,这是因为以太网的设计要求最短的合法帧也要足够长,以便在发生碰撞时能够被检测到。最小以太网帧的组成如下:目的地址:6字节、源地址:6字节、类型/长度:2字节(对于IEEE 802.3格式,此处为长度字段)、数据:至少46字节(如果不足46字节,则需要填充)、帧校验序列:4字节。
    2、最大以太网帧长度:以太网帧的最大长度为1518字节,这是因为以太网的最大传输单元(MTU)为1500字节,而以太网帧本身还有一些固定的开销,如目的地址、源地址、类型/长度和帧校验序列等。具体而言,最大以太网帧的组成如下:目的地址:6字节、源地址:6字节、类型/长度:2字节、数据(最大1500字节):1500字节、帧校验序列:4字节。

  • 相关阅读:
    docker安装opengrok环境
    Element Plus 组件库相关技术:7. 组件实现的基本流程及 Icon 组件的实现
    Linux启动流程分析
    Jenkins--基础--6.1--Pipeline--介绍
    PHP使用Redis实现关注关系
    深化产教融合,知了汇智助力高校数字化人才培养
    mongodb语法以及springboot中操作mongodb数据库(query update Criteria的使用)
    【服务的主从切换实现原理】
    规则引擎Drools使用,0基础入门规则引擎Drools(一)基础入门
    MyBatis 执行原理,源码解读,基于SpringBoot讲解
  • 原文地址:https://blog.csdn.net/weixin_46398572/article/details/139723043