以太网(Ethernet)是一种常见的计算机组网技术,其技术标准在IEEE 802.3中规定。目前广泛使用的以太网是通过双绞线(俗称网线)进行信息交换。那么这些在以太网链路也就是在网线中传输的数据包被称做以太网数据帧。我们知道,所有在互联网上传送的数据都以分组即IP数据报为传送单位,那么简单地说当网络层的IP数据报传送到数据链路层时会在前后分别添加首部和尾部把它封装成帧,这样的帧就是数据据链路层的数据传送单元。本文详细介绍以太网数据帧的结构,并结合数据包分析工具Wireshark捕获实际网络中传输的数据包,深入理解以太网数据帧。

wireshark捕获ip地址原理(以太网数据帧结构详解并结合Wireshark工具深入分析)(1)

以太网数据帧的结构

以太网数据帧简称以太帧,起始部分由前同步码和帧开始定界符组成,后面紧跟着一个以太网报头,以 MAC 地址说明目的地址和源地址。以太帧的中部是该帧负载的包含其他协议报头的数据包,最常见的如 IP 协议。另外以太帧由一个 32 位冗余校验码结尾,用于检验数据传输是否出现损坏。以太帧结构如下图所示。

wireshark捕获ip地址原理(以太网数据帧结构详解并结合Wireshark工具深入分析)(2)

上图中每个字段的含义如下说明:

因此,以上可知以太网数据帧的整体大小在 64~1518 字节之间(不含前导字段7字节和帧起始符1字节)。

Wireshark分析以太帧

打开Wireshark工具找到自己ip对应的网卡抓取一些数据包,这里以QQ程序传输的数据包为例,截图如下:

wireshark捕获ip地址原理(以太网数据帧结构详解并结合Wireshark工具深入分析)(3)

说明如下:

Frame 3765: 129 bytes on wire (1032 bits), 129 bytes captured (1032 bits) on interface \Device\, id 0: 这句话的意思就是说数据帧号码3765,捕获了129个字节,也就是1032位(一字节等于八位),在interface 0上面,也就是在网卡0上面(一个机器可能有多个网卡)。

Ethernet II:以太帧的包头, 可以清楚地看到里面包含三个信息:Destination, Source,Type依次对应前面介绍以太帧数据结构的目的地址、源地址、类型,而type类型值为0x0800表示IPv4,也就是说它是一个IP包。

wireshark捕获ip地址原理(以太网数据帧结构详解并结合Wireshark工具深入分析)(4)

Internet Protocol Version 4:第三个就是IP数据包。关于IP数据包格式我们以后在进行介绍,这里可以看到,这个IP数据包的总长度为115字节。

wireshark捕获ip地址原理(以太网数据帧结构详解并结合Wireshark工具深入分析)(5)

User Datagram Protocol:UDP数据包。这个IP数据包高层传输层协议为UDP,也就是说QQ这个应用程序选择UDP作为通信协议,而不是TCP。关于传输层协议也以后再进行介绍。

wireshark捕获ip地址原理(以太网数据帧结构详解并结合Wireshark工具深入分析)(6)

那么,最后我们可以得出捕获到的这个以太帧的总长度为129字节,IP数据包的total length是115字节,加上以太帧的包头(6 6 2=14)14字节,115 14就等于129字节,然而,根据前面介绍以太帧尾部还有四个字节的FCS校验和。后面的FCS四个字节哪里去了呢?是不是我们计算错误了?显然我们的计算是正确的,这是因为数据包经过网络设备,如路由器、交换机等硬件已经把以太帧的校验做过了,它返回给操作系统的只有前面的部分,FCS没有返回给操作系统,所以wireshark也抓不到后面校验的四个字节,当然,校验错误的以太帧也不会被wireshark所捕获,所以,我们看到的以太帧都是通多校验的正确的以太帧。

以上就是以太网数据帧的相关内容并结合wireshark工具加以分析,关于更多网络知识可以加个关注,另外对Wireshark数据包捕获分析感兴趣的同学可以订阅专栏内容~

,