博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】以太网最大帧和最小帧、MTU
阅读量:5881 次
发布时间:2019-06-19

本文共 821 字,大约阅读时间需要 2 分钟。

根据rfc894的说明,以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步码 + 1字节帧开始定界符 + 6字节的目的MAC + 6字节的源MAC + 2字节的帧类型 + 1500 + 4字节的FCS。

    按照上述,最大帧应该是1526字节,但是实际上我们抓包得到的最大帧是1514字节,为什么不是1526字节呢?

    原因是当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和出错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交给“设备驱动程序”做进一步处理。这时我们抓包的软件才能抓到数据,因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、FCS之外的数据,其最大值是6 + 6 + 2 + 1500 = 1514。

    以太网规定,以太网帧数据域部分最小为46字节,也就是以太网帧最小是 6 + 6 + 2 + 46 + 4 = 64。除去4个字节的FCS,因此,抓包时就是60字节。当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面填充以满足数据帧长不小于64字节。由于填充数据是由MAC子层负责,也就是设备驱动程序。不同的抓包程序和设备驱动程序所处的优先层次可能不同,抓包程序的优先级可能比设备驱动程序更高,也就是说,我们的抓包程序可能在设备驱动程序还没有填充不到64字节帧的时候,已经捕获了数据。因此不同的抓包工具抓到的数据帧的大小可能不同。(比如,wireshark抓到的可能没有填充数据段,而sniffer抓到的就有填充数据段)

 

转载于:https://www.cnblogs.com/xinghen1216/p/9112699.html

你可能感兴趣的文章
25000个布满恶意软件的摄像头组成的僵尸网络
查看>>
FB全球开放360度直播功能 首先需要一个FB账号
查看>>
量子通信成信息安全领域发展重点 潜在市场望达1000亿元
查看>>
数据中心新的自动化运维技术
查看>>
OpenFlow下一步该怎么走?
查看>>
CoreOS为容器安全带来不同方法
查看>>
用EXCEL导入QC需求和测试用例详解
查看>>
中了WannaCry病毒的电脑几乎都是Win 7
查看>>
iOS开发月报#2|201808
查看>>
SMSSDK进化之路
查看>>
【干货来袭】使用 Python 扩展 UiBot 的功能
查看>>
node之搭建一个http完整的静态服务器(命令行工具)
查看>>
阿里云IPv6 DDoS防御被工信部认定为“网络安全技术应用试点示范项目
查看>>
史上最快Docker入门实战! (二) - Docker环境的搭建方法
查看>>
【思维导图】PHP基础
查看>>
小程序使用之自定义组件
查看>>
Java springcloud B2B2C o2o多用户商城 springcloud架构(四):熔断器Hystrix
查看>>
spring cloud微服务分布式云架构-服务消费者Feign
查看>>
Lua Windows环境搭建以及配置netbeans IDE Glider插件For Lua
查看>>
TypeScript系列1-简介及版本新特性
查看>>