读书笔记——TCP/IP详解卷一 第二章 链路层

10/10

第二章 链路层

2.4 SLIP:串行链路IP (Serial Link IP)

       SLIP定义的帧格式:

1) IP数据报一个END(0xc0)的特殊字符结束,大多数实现还会加一个END字符开始。(如果在传输过程中,遇到线路噪声,那么END字符,就会结束这段错误的报文。这样当前的报文得以正确的传输,而前面的一个错误的报文就会交给上层,上层发现无意义的时候,就会丢弃)

2) 如果在报文中有个字符是END,那么用0xdb和0xdc取代。0xdb为特殊字符,称作SLIP的ESC字符。

3) 如果遇到SLIP的ESC字符(0xdb),那么就用0xdb和0xdd代替。

 

SLIP是一个简单的帧封装方法,还有一些缺陷

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

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

3) SLIP没有在数据帧上加入检验和(类似于以太网中的CRC字段)。如果SLIP在传输的报文遇到噪声影响发生错误,那么他无法自行检测,只能通过上层协议发现,这里就发现上层协议提供的某种CRC就很重要了。

2.5 压缩的SLIP:CSLIP

       由于串行线路速率通常很低,而且通信通常是交互的,所以在SLIP的线路上有许多小的TCP分组交换。往往在传输过程中,为了一个小小的分组交换,需要加上20个字节的IP首部和20个字节的TCP首部,这样就很浪费。

       因此人们提出了压缩的SLIP(CSLIP),把40左右个字节压缩到3到5个字节。而且CSLIP能维持每端多大16个TCP连接,并且知道每个连接首部中那些字段一般不会发生变化,对于那些发生变化的字段,大多数只是些小的数字和的变化。这些被压缩的首部就大大的缩短了交互相应的时间。

       SLIP的浪费主要是为了几个字节而添加了太多的首部,而压缩的SLIP就帮忙维持这些不是经常变化的首部,进而达到高效快速的传输。

2.6 PPP:点对点协议

       PPP修改了SLIP协议中的所有的缺陷。PPP协议包括一下3个部分:

1) 在串行链路上封装IP数据报的方法。PPP协议既支持8位和无奇偶校验的异步模式(串口一般是),又支持面向比特的同步模式。

2) 建立、配置及测试数据链路的链路控制协议(LCP:LinkControl Protocol)。允许通信双方协商,已确定不同的选项。

3) 针对不同网络层协议的网络控制协议(NCP:NetworkControl Portocol)体系。IP NCP允许通信双方商定是否对报文首部进行压缩。


PPP的帧格式:

1) 每一帧都以标志字符0x7e开始和结束。紧接着一个地址字节,始终都是0xff。然后一个值为0x03的控制字节

2) 接下来是协议字段,类似于以太网中类型字段的功能: 0x0021表示一个IP数据报,0xc021表示是链路控制数据,0x8021表示是网络控制数据。

3) 后面接CRC字段(帧检验序列)是一个循环冗余检验码。

 

标志字符:

       PPP协议中,标志字符为0x7e,碰到该字符时,协议会根据协议对它进行转移。在同步链路中,该过程是通过一种称作比特填充(bit stuffing)的硬件技术完成的。在异步链路中,特殊的转移字符0x7d用作转义字符。当他出现在数据帧中,那么紧跟着的6个比特要取其反码。具体实现如下:

1) 遇到字符0x7e时,传0x7d和0x5e两个字符,实现转义。

2) 当遇到转义字符0x7d时,传0x7d和0x5d,实现转义。

3) 默认请求下,如果字符的值小于0x20,一般要对其进行转义。例如遇到0x01就传0x7d和0x21两个字符(这时,第6个比特取补码后变为1,而前面2中情况均把她变为0)。

从上面可以看出来0x7d作为转义字符的意思。就跟java中的“\”类似。

 

PPP协议与SLIP的比较和优点

       从上面可以发现,PPP协议只增加了3个额外的字节:一个保留给协议字段,另外两个用于校验CRC。这样就使PPP协议具有以下有点:

1) PPP支持在单根串行线路上运行多种协议,而不只是IP协议;

2) 每一帧都有循环冗余检验;

3) 通信双方可以进行IP地址的动态协商(使用IP网络控制协议);

4) 与CSLIP类似,对TCP和IP报文首部进行压缩;

5) 链路控制协议可以对多个数据链路选项进行设置。

为了实现这些有点,付出的代价是在每一帧的首部增加3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的接口。

2.7 环回接口

       环回接口的存在可以允许在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。

       一个传给环回接口的IP数据报不能在任何网络上出现。原因:分组一般不会被传出去然后读回来,许多网卡不能读取自己发出去的数据


图中的关键点:

1) 传给环回地址的任何数据均作为IP输入;

2) 传给广播地址或者多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是由于广播和多播定义了包含主机本身;

3) 任何传给该主机IP地址的数据均送到环回接口。

可见,环回接口可以看作网络层上面的另一个链路层。

2.8 最大传输单元MTU

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

       如果IP层有一个数据报比链路层的MTU要大,那么IP层就要进行分片,把数据分成若干片。

2.9 路径MTU

       在同一我网络上,两台主机通信时,可能经过多个网络,不同网路的MTU可能不同,取决于路径中的最小MTU,它被称作路径MTU.

       另外,主机通信的时候,路径的选择可能不是对称的,A到B的路由和B到A的路由可能不同。而路径MTU的大小又取决与路由的选择。

总结

       讨论了Internet协议族中的最底层的协议,链路层协议。比较了以太网和IEEE802.2/802.3的封装格式,以及SLIP和PPP的封装格式。由于SLIP和PPP经常应用于低速的链路,二者都进行了压缩不常变化的公共字段的方法。使交互性能提高。

       大多数的实现都提供了环回接口。访问这个接口可以通过特殊的环回地址,一般都是127.0.0.1。也可以通过发送IP数据报给主机所拥有的任意IP地址(他们都会发送一份给环回接口)。当换回数据回到上层的协议栈中,它已经过传输层和IP层的完整的处理过程。

       链路层的一个重要特性,MTU,以及相关概念链路MTU。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值