TCP/IP 第二章 链路层

2.1引言

根据第一章(https://blog.csdn.net/weixin_41462404/article/details/90448342)的图3-2可以看出,链路层的主要目的:(1)为IP模块发送和接收IP数据报。(2)为ARP(地址解析协议)模块发送ARP请求和接收ARP应答。(3)为RARP(逆地址解析协议)发送RARP请求和接收RARP应答。

下面我们来讨论以太网链路层协议,两个串行接口链路层协议,以及环回驱动程序。

2.2以太网和IEEE802封装

以太网是当今TCP/IP采用的主要的局域网技术。它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入。下图显示了两种不同形式的封装格式,图中方框下的数字是它们的字节长度。

                                                        IEEE802.2/802.3和以太网的封装格式

上图两种帧结构都是用6字节的目的地址和源地址,接下来的2个字节有所不同。在802标准定义的帧格式中,长度字段是指它后续数据的字节长度,而以太网的类型字段则定义了后续数据的类型。

在802帧格式中,长度字段后跟随的是3字节的802.2 LLC和五字节的802.2 SNAP。目的访问节点(DSAP)和源服务访问节点(SSAP)的值都设为0xaa。cntl字段的值设为3,随后的3个字节值都为0。CRC字节用于帧内后续字节差错的循环冗余码检验。

2.3 SLIP:串行线路IP

SLIP的全称是Serial Line IP。它是一种在串行线路上对IP数据报进行封装的简单形式,在RFC 1055中有详述。SLIP适用于家庭中每台计算机几乎都有的RS-232串行端口和高速调制解调器接入Internet。

(1)IP数据报以一个称作END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报开始处也传一个END字符。

(2)如果IP数据报中间的某个字符为END,那么就要连续传输两个字节0xdb和0xdc来取代它。

(3)0xdb被称作SLIP的ESC字符,若报文中间出现此字符,那么久要用0xdb和0xdd来替代。

SLIP是一种简单的帧封装办法,所以会存在一些缺陷,如:每一端必须知道哦对方的IP地址;数据帧中没有类型字段;没有在数据帧中增加检验字段,若出现错误,只能通过上层协议来发现。

2.4 压缩的SLIP

由于SLIP上存在许多小的TCP分组进行交换,而传送一个字节的数据需要20个字节的IP首部和20个字节的TCP首部,是严重的缺陷。

因此人们提出了一个CSLIP(压缩SLIP)的新协议,在RFC 1144中有详述,可将浪费的40个字节压缩到3或5个字节,大大地缩短了交互响应时间。

2.5 PPP:点对点协议

PPP,点对点协议修改了SLIP协议中的所有缺陷。包括如下三部分:

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

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

(3)针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)体系。

PPP数据的每一帧都以标志符0x7e开始和结束,紧接着是一个地址字节,始终是0xff,然后是一个值为0x03的控制字节。后面跟着的是协议字段,相当于以太网中的类型字段的功能。当它的值为0x0021时,表示信息字段是一个IP数据报;值为0xc021时,表示信息字段是链路控制数据;值为0x8201时,表示信息字段是网络控制数据。

CRC是一个循环冗余校验码,以检测数据帧中的错误。

由于0x7e是标识符,因此当信息字段包含该字符时,PPP需对其进行转义。在同步链路中,该过程是通过一种称作比特填充的硬件技术来完成的。在异步链路中,特殊字符0x7d用作转义字符。当它出现在PPP数据帧中时,那么紧接着的字符的的6个比特要取其补码。具体实现过程如下:

(1)当遇到字符0x7e时,需连续传送两个字符:0x7d和0x5e,以实现标志字符的转义。

(2)当遇到转义字符0x7d时,需连续传送两个字符:0x7d和0x5d,以实现转义字符的转义。

(3)默认情况下,如果字符的值小于0x20,一般都要进行转义。

这样做的原因是防止它们出现在双方逐级的串行接口驱动程序或调制解调器中。

PPP经常用于低速的串行链路,因此减少每一帧的字节数可以降低应用程序的交互时延。利用链路控制协议,大多数的产品通过协商可以省略标志符和地址字段,并且把协议字段由2个字节降低为1个字节。

与前面的SLIP帧格式对比发现,PPP只增加了3个额外的字节:1个字节留给协议字段,2个字节给CRC字段使用。

PPP与SLIP相比,具有的优点:

(1)PPP支持在单根串行线路上运行多种协议,不止是IP协议。

(2)每一帧都具有循环冗余校验。

(3)通信双方可以进行IP地址的动态协商。

(4)可对TCP和IP报文首部进行压缩。

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

2.6 环回接口

大多数主机都支持环回接口,以允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。

根据惯例,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost,一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。下图为环回接口处理IP数据报的简单过程。

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

(1)传给换回地址(一般是127.0.0.1)的任何数据报均作为IP输入。

(2)传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。

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

一台主机必须处理发送给自己的IP数据报,而许多以太网接口又无法读回他们发送的数据,所以上图所示过程为最简单的处理办法。

2.7最大MTU与最小MTU

在2.2节中,给出了802.3和以太网的封装格式,图中可以看到它们对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。MTU,最大传输单元,是指一种通信协议的某一层上面所能通过的最大数据包大小。若传输的数据报长度比MTU大,则要对其进行分片。

网络中的最小MTU被称为路径MTU。

2.8串行线路吞吐量计算

吞吐量是指单位时间内成功传送数据的数量。若线路速率为9600b/s,而一个字节有8bit,加上一个起始比特和停止比特,那么线路速率就是960B/s(字节/秒)。以这个传输速率传输一个1024字节的分组需要1066ms。如果用SLIP链接运行一个交互式应用程序(即可以互动交流的程序),同时还运行另一个应用程序如FTP发送或接受1024字节的数据,那么一般来说就必须等待一半的时间(533ms)才能把交互式应用程序的分组数据发送出去。

而对于交互程序来说,等待533ms是不能接受的。若把MTU缩短至256个字节,则根据960B/s的传输速率,传输一帧需266ms,等待一般的时间会降低至133ms。大块数据提供良好的线路利用率,假设CSLIP的报文首部占5个字节,数据总帧为261个字节,256个字节的数据使线路的利用率为98.1%。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值