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

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

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

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

通过观察发现:

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


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,我强制不分片会怎样?

 会禁止发送该不正常的数据包。

以太网 以太网帧格式与IP报文分片相关推荐

  1. 以太网帧分析与IP报文结构分析(一)

    一.实验目的 深入理解Ethernet II帧结构.深入理解IP 报文结构和工作原理,掌握使用Wireshark分析俘获的踪迹文件的基本技能. 二.实验要求 1.实验前应熟悉Wireshark软件的使 ...

  2. iptables与IP报文分片浅析

    背景 192.168.0.11(iperf 服务端) 192.168.0.10(iperf 接收端) ​ 系统因会发送大于MTU的UDP组播包,且用户基于都是基于UDP带端口的组播,但是由于UDP分片 ...

  3. 网络层——IP协议(IP协议报头IP报文的分片与组装)

    1 IP协议报头 各字段解释: 版本号:占4位,指IP协议的版本,有IPv4和IPv6两种,对于IPv4协议该字段就是4 首部长度:占4位,指IP协议的报头长度,范围在20-60字节 区分服务:占8位 ...

  4. IP报文发送过程和原理

    文章目录 1.IP的概念 1.1IP,主机与路由器 1.2IP与TCP的对比 2.IP报头 2.1IP报头格式 2.2各部分作用 2.3IPv4与IPv6 2.4一跳 2.5 8位生存时间 2.6 分 ...

  5. 以太网数据包、IP包、TCP/UDP 包的结构(转)

    源:以太网数据包.IP包.TCP/UDP 包的结构 版本号(Version):长度4比特.标识目前采用的IP协议的版本号.一般的值为0100(IPv4),0110(IPv6). IP包头长度(Head ...

  6. 计算机网络基础 IP头部报文;IP的分片;

    IP头部报文: 第一行: version - 版本:占4比特: IP协议的版本,目前的IP协议版本号为4: Header length - 头部长度:占4比特: 固定部分的长度(20字节)和可变部分的 ...

  7. 网络知识入门,什么是以太网包,TCP/IP包,MAC头部,IP头部以及TCP头部(六)

    目录 一.以太网包 二.协议栈中IP模块的工作方式 1.TCP委托IP模块 2.IP模块的工作方式 三.mac头部 四.何为以太网 1.以太网的定义 2.如何收发以太网包 3.以太网接收网络包详细 4 ...

  8. [计算机通信网络]以太网的帧格式详解

    目录 一.前言 二.以太网的帧格式 Preamble(前导码): SFD(帧开始定界符): Destination Address,Source Address: Type/Len(类型/长度): D ...

  9. 【Socket网络编程】7.以太网数据包、IP数据包、UDP数据包

    以太网数据包.ip数据包.udp数据包 搭配这篇博文服用,效果更好:数据封装 和 数据拆封:https://blog.csdn.net/u011754972/article/details/11794 ...

最新文章

  1. QT的QGLFunctions类的使用
  2. java文件下载controller_Java Spring MVC 上传下载文件配置及controller方法详解
  3. 再见 Typora,这款 Markdown 编辑器开源又免费!
  4. ReviewForJob——二叉堆优先队列的实现(三种堆节点类型——int + struct HeapNode + struct HeapNode*)
  5. 【牛客 - 315C】排列(思维,贪心,同优则立证明法)
  6. android AVB2.0(六)Super动态分区介绍
  7. Python 输入一些数,统计最大值及其出现的频率,求一个数的全部质因数
  8. java arraylist length,在Java中调整ArrayList的大小时,无法理解溢出的可能性
  9. Gitlab-API各状态码解释
  10. https 带端口_基于scapy模块的8种端口扫描
  11. android 360 悬浮窗,悬浮窗的实现(如360悬浮窗效果)
  12. Thinkpad T400 Fan error报错非风扇问题解决一例
  13. 微信公众号网页登录开发测试步骤详解
  14. DTM、DEM与DSM的区别及其他
  15. 20145222何志威《网络对抗》- Web安全基础实践
  16. H5制作视频网页的架构
  17. 赠书 | 第一次送书,送排名第一的书!
  18. ie8兼容性视图灰色修复_IE8兼容性视图怎么关闭 IE8兼容性视图设置关闭方法
  19. 初探 MacBook Pro 刘海屏
  20. 仿QQ好友列表,QListWidget!

热门文章

  1. 视频转码工具 HDcinematics Convert 汉化版
  2. 数据结构通过链表实现班级同学通讯录
  3. 细说linux挂载---转自ubuntu论坛 adagio
  4. 浅聊下Spring Task定时器的Cron表达式
  5. EnCase Computer Forensics, includes DVD: The Official EnCE: EnCase Certified Examiner Study Guide
  6. matlab图像处理 背景字迹消除
  7. 智慧农业解决方案-智慧农业电子科技威海
  8. 概率论与数理统计之条件概率乘法公式
  9. 老吕架构-2021年文章精选
  10. 关于java maven 项目debug运行时,项目报sourse not found问题