链路层 ---《TCP/IP协议》卷一

2.1引言

链路层主要有三个目的:
①为IP模块发送和接收IP数据报。
②为ARP模块发送ARP请求和接收ARP应答。
③为RARP发送RARP请求和接收RARP应答。

2.2以太网和IEEE802封装

以太网:它的IP数据报封装在RFC894中定义,它采用一种CSMA/CD(带冲突检测的载波监听多路接入机制,注:半双工使用,全双工不使用),它的速率为10Mb/s,地址为48bit。
IEEE802:802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络。
它的IP数据报封装在RFC1042中定义,主机需求RFC要求每一台Internet主机都与一个10Mb/s的以太网电缆相连接。
①必须能发送和接收采用RFC894(以太网)封装格式的分组。
②应该能接收与RFC894混合的RFC1042(IEEE802)封装格式的分组。
③也许能够发送采用RFC1042格式封装的分组。如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置的,而且默认条件下必须是RFC894分组。

两种帧格式结构分析

共同点①
都采用48bit的目的地址和源地址(注:802.3允许使用16bit的地址),这是本书中所称的硬件地址。
共同点②
APR和RARP协议对32bit的IP地址和48bit的硬件地址进行映射。
不同点①
a.802标准定义的帧格式中,长度字段是指后续数据的字节长度,但不包括CRC检验码。
b.以太网的类型字段定义了后续数据的类型,而802的类型字段则由后续的子网接入协议的首部给出。
注:幸运的是,802定义的有效长度值与以太网的有效类型值无一相同,这样,就可以对两种帧类型格式进行区分。
不同点②
a.以太网帧格式中,类型字段之后就是数据。
b.802帧格式中,长度字段之后还有3个字节的802.2LLC和5个字节的802.2SNAP。目的服务访问点DSAP和源服务访问点SSAP的值都设为0xAA。Ctrl的值设为3。随后的3个字节org code都置0。接下来的2个字节类型字段和以太网的帧格式一样。紧接着就是数据。
共同点③
CRC字段用于帧内后续字节差错的循环冗余码检验(校验和它也被称为FCS或帧检验序列)
不同点③
a.802.3规定数据部分必须至少为38字节。
b.以太网,则要求最少要有46字节。

2.3尾部封装(过时)

现在,尾部封装已遭到反对。

2.4SLIP:串行线路IP

SLIP的全称是Serial Line IP。SLIP适用于家庭中,因为每台计算机机会都会有RS-232串行端口和高速调制解调器接入Internet。
帧格式:
①IP数据报以一个称作END(0xC0)的特殊字符结束。(为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个END字符)
②如果IP报文中某个字符为END,那么就要连续传输两个字节0xDB和0xDC来取代它。(0XDB这个特殊的字符被称作SLIP的ESC字符,但是它的值与ASCII码的ESC字符(0x1B)不同)
③如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xDB和0xDD来取代它。
缺陷:
①每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。(也就是整个帧格式其实就是一个IP报文)
②数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP,那么它不能同时使用其他协议。
③SLIP没有在数据帧中加上检验和(类似于以太网中的CRC字段)。如果SLIP传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器可以检测并纠正错误报文)。这样,上层协议提供的某种形式的CRC就显得很重要。

2.5压缩的SLIP

由于串行线路的速率比较低(19200b/s或更低),而且通信经常是交互式的,因此在SLIP线路上有许多小的TCP分组进行交换。为了传送1个字节的数据需要20个字节的IP首部和20个字节的TCP首部,总数超过40个字节。
认识到这些性能上的缺陷,人们提出一个被称作CSLIP(即压缩SLIP)的新协议,它在RFC1144[Jacobson 1990a]中被详细描述。CSLIP一般能把上面的40个字节压缩到3或5个字节,它能在CSLIP的每一端维持多达16个TCP连接,并且知道其中每个连接的首部中某些字段一般不会发生变化。对于那些发生变化的字段,大多数只是一些小的数字和改变。这些被压缩的首部大大缩短了交互响应时间。

2.6 PPP:点对点协议(支持上层IP等各种协议)

PPP,点对点协议修改了SLIP协议中的所有缺陷
①在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶校验的异步模式,还支持面向比特的同步链接。
②建立、配置及测试数据链路的链路控制协议(LCP)。它允许通信双方进行协商,以确定不同的选项。
③针对不同网络层协议的网络控制协议(NCP)体系。当前RFC定义的网络层有IP、OSI网络层、DECnet以及AppleTalk。例如:IP NCP允许双方商定是否对报文首部进行压缩,类似于CSLIP(注:缩写词NCP也用来指TCP的前身)。

RFC 1548描述了报文封装的方法和链路控制协议。RFC 1332描述了针对IP的网络控制协议。
PPP数据帧的格式看上去很像ISO的HDLC(高层数据链路控制)标准。

帧格式

①每一帧都以标志字符0x7e开始和结束,紧接着是一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节。
②接下来是协议字段,类似于以太网中的类型字段的功能。它的值为0x0021时,表示信息字段是一个IP数据报;值为0xc021时,表示信息字段是链路控制数据;值为0x8021时,表示信息字段是网络控制数据。
③CRC字段(或者FCS,帧检验序列)是一个循环冗余验证码,以检测数据帧中的错误。
转义:
0x7e0x7d和0x5e进行转义
0x7d0x7d和0x5d进行转义
③默认情况下,小于0x20都需要进行转义。例如:0x010x7d和0x21进行转义。
转义原因
①防止它们出现在双方主机的串行接口驱动程序或者调制解调器中,因为有时它们会把这些控制字符解释成特殊含义
②另一种可能是用链路控制协议来指定是否需要对着32个字符中的某一些值进行转义。默认情况下是对所有的32个字符进行转义
压缩PPP
与SLIP类似,由于PPP经常用于低速的串行链路,因此每减少一帧的字节数可以降低应用程序的交互延时。利用链路控制协议,大多数的产品通过协商可以省略标志字符和地址字段,并且把协议字段由2个字节减少到1个字节。如果我们把PPP的帧格式与前面的SLIP的帧格式进行比较会发现,PPP只增加了3个额外的字节:1个字节留给协议字段,另外2个给CRC字段使用。另外,使用IP网络控制协议,大多数的产品可以通过协商采用Van Jacobson报文首部压缩方法(对应于CSLIP压缩),减小IP和TCP首部长度。
PPP 优点
①PPP支持在单根串行线路上运行多种协议,不只是IP协议。
②每一帧都有循环冗余检验。
③通信双方可以进行IP地址的动态协商(使用IP网络控制协议)。
④与CSLIP类似,对TCP和IP报文首部进行压缩。
⑤链路控制协议可以对多个数据选项进行设置。
(注:为这些优点付出的代价是在每一帧的首部增加3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。)

猜你喜欢

转载自blog.csdn.net/qq_37340753/article/details/78688530
今日推荐