本文主要是介绍Ch2:链路层,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、 概述
本章讨论了Internet协议族中的最底层协议,链路层协议。我们比较了以太网和IEEE802.2/802.3的封装格式,以及SLIP和PPP的封装格式。由于SLIP和PPP经常用于低速的链路,二者都提供了压缩不常变化的公共字段的方法。这使交互性能得到提高。
大多数的实现都提供环回接口。访问这个接口可以通过特殊的环回地址,一般为127.0.0.1。也可以通过发送IP数据报给主机所拥有的任一IP地址。当环回数据回到上层的协议栈中时,它已经过传输层和IP层完整的处理过程。
二、 链路层功能
在TCP/IP协议族中,链路层主要有三个目的:
- 为IP模块发送和接收IP数据报;
- 为ARP模块发送ARP请求和接收ARP应答;
- 为RARP发送RARP请求和接收RARP应答。
三、 以太网和IEEE 802封装
图1. IEEE802.2/802.3和以太网的封装格式
IEEE802.2标准帧比以太网帧多一个802.2 LLC和802.2 SNAP域。
802.2规定帧数据部分至少为38字节,而以太网则要求至少为46字节。
四、 SLIP:串行线路IP
SLIP(Serial Line IP,串行线路IP),它是一种在串行线路上对IP数据报进行封装的简单形式。
下面的规则描述了SLIP协议定义的帧格式:
1) IP数据报以一个称作END(0xc0)的特殊字符结束。大多数实现在数据报的开始处也传一个END字符。
2) 如果IP报文中某个字符为END,那么就要连续传输两个字节0xdb和0xdc来取代它。
3) 如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xdb和0xdd来取代它。
图2. SLIP报文的封装
SLIP是一种简单的帧封装方法,还有一些值得一提的缺陷:
- 每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。
- 数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP,那么它不能同时使用其他协议。
- SLIP没有在数据帧中加上检验和(类似于以太网中的CRC字段)。
五、 PPP:点对点协议
PPP(Point-to-Point Protocol),点对点协议修改了SLIP协议中的所有缺陷。PPP包括以下三个部分:
- 在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶检验的异步模式,还支持面向比特的同步链接。
- 建立、配置及测试数据链路的链路控制协议(Link Control Protocol)。它允许通信双方进行协商,以确定不同的选项。
- 针对不同网络层协议的网络控制协议(Network Control Protocol)体系。
PPP协议对数据的具体实现过程如下:
- 当遇到字符0x7e时,需连续传送两个字符: 0x7d和0x5e,以实现标志字符的转义。
- 当遇到转义字符0x7d时,需连续传送两个字符: 0x7d和0x5d,以实现转义字符的转义。
- 默认情况下,如果字符的值小于0x20(比如,一个ASCII控制字符),一般都要进行转义。
图3. PPP数据帧的定义
PPP的帧格式与SLIP帧格式相比只增加了3个额外的字节:1个字节留给协议字段,另外2个给CRC字段。
PPP帧封装却具有如下方面的优势:
- PPP支持在单根串行线路上运行多种协议,不只是IP协议;
- 每一帧都有循环冗余检验;
- 通信双方可以进行IP地址的动态协商(使用IP网络控制协议);
- 与CSLIP类似,对TCP和IP报文首部进行压缩;
- 链路控制协议可以对多个数据链路选项进行设置。
六、 环回接口
环回接口( Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。
其对IP数据报的处理过程如下图所示。
图4. 环回接口处理IP数据报的过程
根据上图,环回接口数据输入:
- 传给环回地址(一般是127.0.0.1)的任何数据均作为IP输入。
- 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。
- 任何传给该主机IP地址的数据均送到环回接口。
七、 MTU
MTU(Maximum Transfer Unit,最大传输单元),是指链路层对传输的数据帧长度的上限限制。
以太网的MTU为1500,而IEEE802.2/802.3帧的MTU为1492。
线路MTU为两台通信主机线路中的最小MTU值。
(完)
这篇关于Ch2:链路层的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!