您的位置:首页 > 理论基础 > 计算机网络

网络传输协议概述——第四讲:TCP/IP协议之链路层详解

2013-11-28 13:16 239 查看
链路层作用目的:

在 T C P / I P 协 议 族 中 , 链 路 层 主 要 有 三 个 目 的 :( 1 )为 I
P 模 块 发 送 和接收 I P 数 据 报 ; ( 2 )为 A
R P 模块发送 A R P 请 求 和 接 收 A R P 应
答 ; ( 3 )为R A R P 发送 R
A R P 请求和接收 R A R P 应答。

T C P / I P 支 持 多 种 不 同 的 链 路 层 协 议 , 这 取 决 于 网 络 所 使 用 的 硬 件 , 如 以太 网 、 令 牌 环 网 、 F
D D I ( 光 纤 分 布 式 数 据 接 口 ) 及 R S- 2 3 2 串 行 线 路 等 。

一:以太网和IEEE802封装

在 T C P / I P 世 界 中 , 以 太 网 I
P 数 据 报 的 封 装 是 在 R F C 8 9 4 中定义的, I
E E E 8 0 2网络的 I P 数据报封装是在 R F C 1
0 4 2 中定义的。主机需求 R F C要求每台 I n t e
r n e t 主机都与一个 10 Mb/s 的以太网电缆相连接:

1) 必须能发送和接收采用 RFC 894(以太网)封装格式的分组。

2) 应该能接收与RFC 894混合的RFC 1042(IEEE 802)封装格式的分组。

3) 也许能够发送采用 RFC 1042格式封装的分组。如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置的,而且默认条件下必须是 RFC
894分组。

两种帧格式都采用 4 8 b i t ( 6 字节)的目的地址和源地址( 8
0 2 . 3 允许使用 1 6 b i t 的地址,但一般是 4
8 b i t 地址)。 这就是我们所称的硬件地址 。接下来的 2个字节在两种帧格式中互不相同。在802标准定义的帧格式中
, 长度字段是指它后续数据的字节长度,但不包括 CRC检验码 。 以 太 网 的 类 型 字 段 定 义 了 后 续 数 据 的 类 型 。在 8
0 2 标准定义的帧格式中,类型字段则由后续的子网接入协议( S u b - n e t w o r k A c c e s sP r o t o c o l , S
N A P )的首部给出。幸运的是, 8 0 2定义 的 有 效 长 度 值 与 以 太 网 的 有 效 类 型 值 无 一相同,这样,就可以对两种帧格式进行区分。

在以太网帧格式中,类型字段之后就是数据;而在 8 0 2 帧格式中,跟随在后面的是 3 字节的802.2 LLC和5字节的802.2
SNAP。目的服务访问点( Destination Service Access Point,D S A P ) 和 源 服 务 访 问 点 ( S o u r c e S e r v i c e A c c e s s P o i n t , S S A P )
的 值 都 设 为 0 x a a 。 C t r l 字段的值设为 3 。随后的 3 个字节 o
rg c o d e 都置为 0 。再接下来的 2 个
字 节 类 型 字 段 和 以 太 网 帧 格 式 一 样。C R C 字 段 用 于 帧 内 后 续 字 节 差 错 的 循 环 冗 余 码 检 验 ( 检 验 和 )( 它 也 被 称 为 F C S 或帧检验



8 0 2 . 3 标 准 定 义 的 帧 和 以 太 网 的 帧 都 有 最 小 长 度 要 求 。 8 0 2 . 3 规
定 数 据 部 分 必 须 至 少 为 3 8字节,而对于以太网,则要求最少要有 4 6 字 节 。 为 了 保 证 这 一 点 , 必 须 在 不
足 的 空 间 插 入 填 充( p a d )字节。在开始观察线路上的分组时将遇到这种最小长度的情况。

二:SLIP:串行线路IP

S L I P 的全称是 S e r i a l L i n e I P 。
它 是 一 种 在 串 行 线 路 上 对 I P 数 据 报 进 行 封 装 的 简 单 形 式 , 在R F C 1 0 5 5 [ R o m k e y 1 9 8 8 ] 中有详细描述。S
L I P 适用于家庭中每台计算机几乎都有的 R S - 2 3 2串行端口和高速调制解调器接入 I
n t e r n e t 。

下面的规则描述了 S L I P 协议定义的帧格式:

1 ) I P 数据报以一个称作 E N D( 0 x c 0 ) 的 特 殊
字 符 结 束 。 同 时 , 为 了 防 止 数 据 报 到 来 之 前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个 E N D字 符 ( 如 果 有 线路噪声,那么 E
N D 字 符 将 结 束 这 份 错 误 的 报 文 。 这 样 当 前 的 报 文 得 以 正 确 地 传 输 , 而 前 一 个错误报文交给上层后,会发现其内容毫无意义而被丢弃)。

2 ) 如果 I P 报 文 中 某 个 字 符 为 E
N D , 那 么 就 要 连 续 传 输 两 个 字 节 0 x d b 和 0
x d c 来 取 代 它 。0 x d b 这个特殊字符被称作 S
L I P 的 E S C 字符,但是它的值与 A S C I I码的
E S C 字符( 0 x 1 b )不同。

3) 如果 I P 报 文 中 某 个 字 符 为 S
L I P 的 E S C 字 符 , 那 么 就 要 连 续 传 输 两 个 字 节 0
x d b 和 0 x d d 来取代它。

图 2 - 2 中 的 例 子 就 是 含 有 一 个 E
N D 字 符 和 一 个 E S C 字符的 I P 报
文 。 在 这 个 例 子 中 , 在 串 行线路上传输的总字节数是原 I P 报文长度再加 4 个字节。



S L I P 是一种简单的帧封装方法,还有一些值得一提的缺陷:

1) 每一端必须知道对方的 I P 地址。没有办法把本端的 I
P 地址通知给另一端。

2) 数据帧中没有类型字段(类似于以太网中的类型字段 )。如果一条串行线路用于 SLIP ,那么它不能同时使用其他协议。

3 ) SLIP没有在数据帧中加上检验和 (类似于以太网中的CRC字段)。如果SLIP 传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器
可 以 检 测 并 纠 正 错 误 报 文 )。 这 样 , 上层协议提供某种形式CRC 就显得很重要 。

尽管它本身的描述是一种非标准的协议,但是随着调制解调器的速率和可靠性的提高, S L I P 越来越流行。现在,它的许多产品可以公开获得,而且很多厂家都支持这种协议。

三:PPP:点对点协议

P P P ,点对点协议修改了 S L I P 协议中的所有缺陷。 P
P P 包括以下三个部分:

1 ) 在串行链路上封装 I P 数据报的方法。 P
P P 既支持数据为 8 位 和 无 奇 偶 检 验 的 异 步 模 式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。

2) 建立、配置及测试数据链路的链路控制协议( L C P : L
i n k C o n t r o l P r o t o c o l )。它允许通信双方进行协商,以确定不同的选项。

3) 针对不同网络层协议的网络控制协议( N C P : N
e t w o r k C o n t r o l P r o t o c o l )体系。当前RFC定义的网络层有IP、OSI网络层、DECnet以及AppleTalk。例如,IP NCP允许双方商定是否对报文首部进行压缩,类似于 C
S L I P (缩写词 N C P 也可用在 T C P 的前面)。

P P P 数 据 帧 的 格 式 看 上 去 很 像 I S O 的 H
D L C ( 高 层 数 据 链 路 控 制 ) 标 准 。 图 2 - 3 是 P
P P 数据帧的格式。每一帧都以标志字符 0 x 7 e 开始和结束。紧接着是一个地址字节,值始终是 0
x ff ,然后是一个值为 0 x 0 3 的控制字节。



接下来是协议字段,类似于以太网中类型字段的功能。当它的值为 0 x 0 0 2 1 时 , 表 示 信 息字 段 是 一 个 I
P 数 据 报 ; 值 为 0 x c 0 2 1时 , 表 示 信 息 字 段 是 链 路 控 制 数 据 ; 值 为 0
x 8 0 2 1 时 , 表 示信息字段是网络控制数据。

C R C 字段(或 F C S , 帧 检 验 序 列 ) 是 一 个 循
环 冗 余 检 验 码 , 以 检 测 数 据 帧 中 的 错 误 。

由于标志字符的值是 0 x 7 e,因此当该字符出现在信息字段中时, P P P 需 要 对 它 进 行 转 义 。在同步链路中,该过程是通过一种称作比特填充 (bit
stuffing)的硬件技术来完成的 [Tanenbaum1 9 8 9 ]。在异步链路中,特殊字符 0 x 7 d用作转义字符。当它出现在 P P P 数 据 帧 中 时 , 那 么 紧 接着的字符的第 6个比特要取其补码,具体实现过程如下:

1) 当遇到字符 0 x 7 e 时,需连续传送两个字符: 0
x 7 d 和 0 x 5 e ,以实现标志字符的转义。

2) 当遇到转义字符 0 x 7 d 时,需连续传送两个字符: 0
x 7 d 和 0 x 5 d ,以实现转义字符的转义。3 ) 默
认 情 况 下 , 如 果 字 符 的 值 小 于 0 x 2 0 ( 比 如 , 一 个 A S C I I 控
制 字 符 ), 一 般 都 要 进 行 转

义。例如,遇到字符 0 x 0 1 时需连续传送 0 x 7 d 和 0
x 2 1 两个字符(这时,第 6 个比特取补码后变为1,而前面两种情况均把它变为
0)。

这样做的原因是防止它们出现在双方主机的串行接口驱动程序或调制解调器中,因为有时它们会把这些控制字符解释成特殊的含义。另一种可能是用链路控制协议来指定是否需要对这 3 2 个 字 符 中 的
某 一 些 值 进 行 转 义 。 默 认 情 况 下 是 对 所 有 的 3 2 个 字 符 都 进 行 转 义 。

与 S L I P 类似,由于 P P P 经
常 用 于 低 速 的 串 行 链 路 , 因 此 减 少 每 一 帧 的 字 节 数 可 以 降 低 应 用程序的交互时延。利用链路控制协议,大多数的产品通过协商可以省略标志符和地址字段,并且把协议字段由 2 个字节减少到 1个字节。如果我们把
P P P 的帧格式与前面的 S L I P 的帧格式

(图 2 - 2 ) 进 行 比 较 会 发 现 , P P P 只
增 加 了 3 个 额 外 的 字 节 : 1 个 字 节 留 给
协 议 字 段 , 另 2 个给C R C 字段使用。另外,使用 I
P 网络控制协议,大多数的产品可以通过协商采用 V a n J a c o b s o n 报文首部压缩方法(对应于 C
S L I P 压缩),减小 I P 和 T C P 首部长度。

总的来说, P P P 比 S L I P 具
有 下 面 这 些 优 点 : ( 1 ) P P P 支 持 在 单 根 串 行 线 路 上 运 行 多 种 协 议 ,不只是 I P 协议; (2) 每一帧都有循环冗余检验; (3) 通信双方可以进行 I
P 地址的动态协商(使用

I P 网络控制协议); (4) 与 C
S L I P 类似,对 T C P 和 I P 报文首部进行压缩; (
5 ) 链 路 控 制 协 议 可 以对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加 3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。

尽管 P P P比 S L I P 有更多的优点,但是现在的 S L I P 用户仍然比 P
P P 用户多。随着产品越来越多,产家也开始逐渐支持PPP,因此最终PPP应该取代SLIP。

四:环回接口

大多数的产品都支持环回接口( Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过 T
C P / I P 进行通信。 A 类网络号 1 2 7 就
是 为 环 回 接 口 预 留 的 。 根 据 惯 例 ,大多数系统把 I P 地址 1 2 7 . 0 . 0 . 1 分配给这个接口,并命名为 l
o c a l h o s t 。一个传给环回接口的 I P 数据报不能在任何网络上出现。

我们想象,一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当I P 数据报离开网络层时把它返回给自己。



图中需要指出的关键点是:

1) 传给环回地址(一般是 1 2 7 . 0 . 0 . 1 )的任何数据均作为 I
P 输入。

2) 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义包含主机本身。
3 ) 任何传给该主机 I P 地 址 的 数 据 均 送 到 环 回 接 口 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: