数据帧是什么意思 了解数据帧的基本概念

数据帧是什么意思 了解数据帧的基本概念

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

以太网数据帧的结构

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

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

前同步码:用来使接收端的网络适配器在接收 MAC 帧时能够迅速调整时钟频率,使它和发送端的频率相同。前同步码为7个字节,其值为1和0交替,即10101010...帧开始定界符:帧的起始符,为1个字节。其值为:10101011,标志着一个帧的开始,告诉接收端适配器:帧要来了,准备接收。目的地址:接收帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。作用是当网卡接收到一个数据帧时,首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同,就会进一步处理;如果不同,则直接丢弃。源地址:发送帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。类型:上层协议的类型,占2个字节。由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。例如,字段为 0x0800 时,表示将数据交付给 网络层的IP 协议。数据:也称为效载荷,表示交付给上层的数据。以太网帧数据长度最小为 46 字节,最大为 1500 字节,最大值也叫最大传输单元(MTU)。如果不足 46 字节时,会填充到最小长度。帧检验序列 FCS:检测该帧是否出现差错,占 4 个字节(32 比特)。发送方计算帧的循环冗余码校验(CRC)值,把这个值写到帧里。接收方计算机重新计算 CRC,与 FCS 字段的值进行比较。如果两个值不相同,则表示传输过程中发生了数据丢失或改变。这时,就需要重新传输这一帧。

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

Wireshark分析以太帧

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

说明如下:

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包。

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

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

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