链路层
简介:从前一章节可以看出,TCP/IP 协议族中,链路层主要有三个目的:
为 IP 模块接收和发送数据报
为 ARP 模块发送 ARP 请求和接收 ARP 应答
为 RARP 模块发送 RARP 请求和接收 RARP 应答
TCP/IP 支持多种类型的链路层协议,这取决于网络所使用的硬件,如以太网,令牌环网等.
本文主要讨论的是以太网链路层协议,两个串行接口链路层协议(SLIP 和 PPP ),以及大部数实现都包含的环回(loop back) 驱动程序.
1.,以太网和 IEEE 802 封装
在 TCP/IP 族中,以太网 IP 数据报的封装是在 RFC 894 中定义的, IEEE 802 网络的 IP 数据报分装实在 RFC 1042 中定义的.主机需求 RFC 要求每台 Internet 主机都与一个 10Mb/s 的以太网电缆相连接:
必须能发送和接收采用 RFC 894 封装格式的分组
应该能接收与 RFC 894 混合的 RFC 1042 封装格式的分组
也许能够发送采用 RFC 1042 格式封装的分组.如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置,而且默认条件下必须是 RFC 894 分组.
最常使用的封装格式是 RFC 894 定义的格式.
下图显示了两种不同形式的封装格式;
封装格式
两种帧格式都采用 48bit(6 字节)的目的地址和源地址,这就是我们在本书中所称的硬件地址.ARP 和 RARP 对 32 bit 的 IP 地址和 48 bit 的硬件地址进行映射;
接下来的两个字节在两种帧格式中互不相同.在
802
标准定义的帧格式中,长度字段表示它后续字段的字节长度,但不包括 CRC 检验码.以太网的类型字段的定义了后续数据的类型.在
802
标准定义的帧格式中,类型字段则由后续的子网接入协议(
Sub - network Access Protocol,SNAP
)的首部给出.幸运的是,
802
定义的有效长度值与以太网的有效类型值无一相同,这样,就可以对两种帧格式进行区分.
在以太网帧格式中,类型字段之后就是数据;而在
802
帧格式中,跟随在后面的是 3 字节的 802.2 LLC 和 5 字节的 802.2 SNAP.目的服务访问点(
Destination Service Access Point,D S A P
)和源服务访问点(
Source Service Access Point, SSAP
)的值都设为
0xaa
.Ctrl 字段的值设为 3.随后的 3 个字节 orgcode 都置为 0.再接下来的 2 个字节类型字段和以太网帧格式一样(其他类型字段值可以参见 RFC 1340 [Reynolds and Postel 1992]).CRC 字段用于帧内后续字节差错的循环冗余码检验(检验和)(它也被称为
FCS或帧检验序列
).
802.3
标准定义的帧和以太网的帧都有最小长度要求.802.3
规定数据部分必须至少为 38 字节,而对于以太网,则要求最少要有 46 字节.为了保证这一点,必须在不足的空间插入填充(pad)字节.在开始观察线路上的分组时将遇到这种最小长度的情况.在本书中,我们在需要的时候将给出以太网的封装格式,因为这是最为常见的封装格式.
2,尾部封装
现在已经遭到反对,故不再讲解;
3,SLIP: 串行线路 IP
SLIP 全称为:Serial Line Ip .它是一种在串行线路上对 IP 数据报进行封装的简单形式,
它的要求如下:
IP 数据报以一个称作 END (0xc0) 的特殊字符结束;同时为防止线程噪声的干扰,大多数实现在数据报的开始也加入一个 END 字符.
如果 IP 报文中含有 END 字符,则使用连续传输两个字节
0xdb
(也被称为 SLIP 的 ESC 字符)和
0xdc
来取代它.
如果报文中某个字符为 SLIP 的 ESC 字符,那么就要连续传输两个字节
0xdb
和
0xdd
取代它.
一个简单的例子如下:
SLIP
SLIP 是一种简单的帧封装方法,还有一些值得一提的缺陷:
每一端都必须知道对方的 IP 地址,没有办法把本端的 IP 地址通知给另一端.
数据帧中没有类型字段,类似于以太网中的类型字段,如果一条串行线路用于 SLIP,它就不能同时使用其他协议;
SLIP 没有校验和,类似于以太网的 CRC 字段,如果传输报文受到线路噪声影响而发生错误,只能通过上层协议来实现.
4,PPP: 点对点协议
点对点协议,修改了 SLIP 协议中的所有缺陷;
5,环回接口
大多是产品都支持环回接口,以允许运行在同一台主机上的客户程序与服务器程序通过 TCP/IP 进行通信.A 类网络好 127 就是为环回接口预留的.大多显示系统把 IP 地址为 127.0.0.0 分配给环回接口,命名为 localhost.
一旦传输层检测到目的端地址为环回地址时,可以省掉部分传输层与所有网络层的逻辑操作.
下面时环回接口处理 IP 数据报的简单过程:
环回接口
关键点:
传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上.
任何传给该主机 IP 地址的数据均送到环回接口.
传给环回地址的任何数据均作为 IP 输入.
6,最大传输单元 MTU
以太网和 802.3 对数据帧的长度都有一个限制,其最大值分别为 1500 和 1492 字节.链路层的这个特性称作 MTU, 最大传输单元.
如果 IP 层有一个数据报长度比链路层的 MTU 要大,则要对该数据报进行分片操作,要求每一片都小于 MTU
7,路径 MTU
当在同一网络上的两台主机进行互相通信时,该网络的 MTU 就会很重要了.此时,两台通信主机路径中的最小 MTU,被称为此路径的路径 MTU.
详细内会在后续章节进行解读;
8,穿行线路吞吐量计算
线路速度为 V b/s,而一个字节为 a bit , 再加上其实和结束 bit,则线路的速率为 v= V/(a+2) B/s. 而一个分组为 m 字节,则需要时间为: m/v ms;
来源: http://www.jianshu.com/p/46de80c3b4ff