链路层学习笔记

概述

在深入学习链路层的时候把比较重要的知识点记下来。

链路层主要的目的

在TCP/IP协议族中,链路层主要有三个目的:(1) 为IP模块发送和接收IP数据报; (2) 为ARP模块发送ARP请求和接收ARP应答; (3)为RARP发
送RARP请求和接收RARP应答;

TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网,令牌环网,FDDI(光纤分布式数据接口)及RS-232串行线路等。

以太网的封装

以太网的首部长14个字节,分别是6字节(48位)的目的地址和6字节(48位)的源地址,目的地址和源地址即为MAC硬件地址,还有2字节的帧
类型,这两个字节可以区分帧是以太网帧还是802.3帧,事实上大多数是以太网帧。这两个字节长的以太网类型表示后面数据的类型,对于
ARP请求或应答来说,该字段的值为0x0806;如果它的值为0x0800,则表示类型后面是IP数据报。
以太网要求数据部分最少要有46字节,
为保证这一点,必须在不足的空间插入填充(pad)字节。以太网要求数据部分的最大值为1500字节。数据部分(帧)后面还有4字节的CRC检
验码,CRC字段用于帧内后续字节差错的循环冗余码检验(检验和)(它也被称为FCS或帧检验序列)。

最大传输单元MTU

以太网和820.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输单元。不同类型
的网络大多数都有一个上限。

如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片(fragmentation),把数据报分成若干片,这
样每一片都小于MTU。

路径MTU

当在同一个网络上的两台主机互相进行通信时,该网络的MTU是非常重要的。但是如果两台主机之间的通信要通过多个网络,那么每个网
络的链路层就可能有不同的MTU。重要的不是两台主机所在网络的MTU值,重要的是两台通信主机路径中的最小MTU。它被称作路径
MTU。两台主机之间的路径MTU不一定是个常数。它取决于当时所选择的路由。而选路不一定是对称的(从A到B的路由可能与从B到A的路
由不同),因此路径MTU在两个方向上不一定是一致的。