TCP/IP详解卷1:第二章(链路层)
最后更新于:2022-04-01 14:49:16
## 1. 以太网和IEEE 802封装
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-20_57678b31805a5.jpg)
## 2. SLIP:串行线路IP
SLIP的全称是serial line IP。它是一种在串行线路上对IP数据报进行封装的简单形式。下列规格描述SLIP的帧格式:
1) IP数据报以一个称作END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当做数据报内容,大多数实现在数据报开始处也传一个END字符(如果有线路噪声,那么END字符将结束这份错误的报文。这样当前的报文得以正确的传输,而前一个错误报文上交给上层后,会发现其内容毫无意义而被丢弃)
2)如果IP报文中某个字符为END,那么就连续传输两个字节0xdb和0xdc来取代它。0xdb这个特殊的字符被称作SLIP的ESC字符,但是不同于ASCII的ESC字符
3) 如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xdb和0xdd来取代它。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-20_57678b31a1e48.jpg)
但是SLIP有以下缺陷:
1) 每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。
2) 数据帧中没有类型字段。如果一条串行线路用于SLIP,那么它不能同时使用其他协议。
3) SLIP没有在数据帧中加上校验和。
## 3. PPP:点对点协议
PPP,点对点协议修改了SLIP协议中的所有缺陷。PPP包括以下三个部分:
1) 在串行链路上封装IP数据报的方法。
2) 建立,配置及测试数据链路的链路控制协议。
3) 针对不同网络层协议的网络控制协议体系。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-20_57678b31b6289.jpg)
具体实现过程如下:
1) 当遇到字符0x7e时,需连续传送两个字符:0x7d和0x5e,以实现标志字符的转义。
2) 当遇到转义字符0x7d时,需连续传送两个字符:0x7d和0x5d,以实现转义字符的转义。
3) 默认情况下,如果字符的值小于0x20,一般都要进行转义。
PPP比SLIP的优势如下:
1) PPP支持在单根串行线路上运行多种协议,不只是IP协议
2) 每一帧都有循环冗余校验
3) 通信双方可以进行IP地址的动态协商(使用IP网络控制协议)
4) 与CSLIP类似,对TCP和IP报文首部进行压缩
5) 链路控制协议可以对多个数据链路选项进行设置。
## 4. 环回接口
环回接口:允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-20_57678b31ceaef.jpg)
1) 传给环回地址(一般为127.0.0.1)的任何数据均作为IP输入
2) 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。
3) 任何传给该主机IP地址的数据均送到环回接口。