当前位置:首页 > TCP/IP > 正文内容

数据链路层

待你如初恋7个月前 (06-03)482

2024-06-03_22-01.png


为什么使用Wireshark抓包 (enp4s0网卡)ARP ,帧的长度只有42个字节?

因为Wireshark 抓包位置如果是在本地,那么对于本地产生所发出的数据包,是在进网卡之前所抓取的包,而填充数据以及 CRC(上面的FCS4个字节) 一般是由网卡硬件/驱动程序完成,所以 42 字节的组成并不包含填充数据和 CRC 部分。 (这里是发送数据出去)

为什么使用Wireshark抓包 (enp4s0网卡)ARP ,帧的长度只有60个字节?

因为现在这60个字节的帧 是来自对方的 ARP 响应包,包含了填充数据 (对方网卡完成,有效载荷字节不够46字节会补够46字节),但不含 FCS部分 (本地网卡接收到后会剥离这4字节,可以说普通网卡基本都会剥离它,所以Wireshark 看不到 CRC 部分)。



 当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和出错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交给“设备驱动程序”做进一步处理。这时我们抓包的软件才能抓到数据,因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、FCS之外的数据,其最大是6 + 6 + 2 + 1500 = 1514,最小是6+6+2+46=60。
因此,抓包时就是60字节。当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面填充以满足数据帧长不小于64 字节。由于填充数据是由MAC子层负责,也就是设备驱动程序。 不同的抓包程序和设备驱动程序所处的优先层次可能不同,抓包程序的优先级可能比设备驱动程序更高,也就是说,我们的抓包程序可能在设备驱动程序还没有填充到64字节帧的时候,已经捕获了数据。因此不同的抓包工具抓到的数据帧的大小可能不同。 (比如,wireshark抓到的可能没有填充数据段,而sniffer抓到的就有填充数据段)



本地ICMP在wireshark抓包时的42字节发送给服务器后,服务器接收到的是60字节的ICMP。。


版权声明:本文由学习记录吧发布,如需转载请注明出处。

本文链接:https://xxjl8.com/?id=28

标签: TCP/IP
分享给朋友:
返回列表

没有更早的文章了...

下一篇:解决使用scapy库无法发包问题

“数据链路层” 的相关文章

解决使用scapy库无法发包问题

使用了root用户还是提示没有权限:PermissionError: [Errno 1] Operation not permitted原因:运行脚步是使用了root权限,但是如果python解释器没有执行原始套接字的访问权限和网络管理权限,就会出现上面的错误。解决:使用 setcap 命令对实际的...

Scapy中发送数据包的函数集合

在 Scapy 中,有多个函数用于发送数据包,每个函数适用于不同的协议层。下面详细解释这些函数及其用途:send()用途: 发送数据包到网络(通常用于三层,即网络层)。适用层: 网络层(第三层),例如 IP 层。使用场景: 发送 IP 层的数据包,如 TCP/UDP 数据包。from sc...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。