`
白粥若水
  • 浏览: 100985 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

《TCP/IP详解》_卷一_链路层及其协议简述

阅读更多

链路层,有时也被称为数据链路层或网络接口层。它是TCP/IP协议族中四个分层中的最底层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。

 

功能和作用:为上层模块发送和接受数据,如:IP数据报,ARP应答,和RARP应答,其中最重要的是IP数据报。从总体上来看,链路层帮我们屏蔽了所有关于电缆(或其他任何传输媒介)的物理接口细节。因此,我们在传输数据的时候可以忽略网络使用的硬件:是以太网、令牌环网、或是FDDI(光光纤分布式数据接口)及RS-232串行线路等。

 

 

关于以太网:以太网不是实际上的一个网络,或者说不是一个由很多台主机构成的电缆网,这个术语一般是指数字设备公司(DEX)、英特尔公司、和Xerox公司在1982年联合公布的一个标准。它是当今TCP/IP采用的主要的局域网技术。因此,这里只介绍以太网链路层协议。

 

 

一、尾部封装

 

尾部封装是以一种早期的用于以太网的封装格式,它主要通过调整IP数据报中字段的次序来提高性能。现在,由于这种格式已遭到反对,因此,我们不讨论它的细节。若有对TCP/IP历史感兴趣的童鞋或是需要写这方面论文的童鞋,请参阅RFC 893。

 

 

 

二、SLIP:串行线路IP

 

串行线路IP,Serial Line IP,是一种在串行线路上对IP数据报进行封装的简单格式。

SLIP协议定义的帧格式十分简单:

1)在IP数据报的开泰和末尾添加一个称作END的特殊字符,这个字符的值是0xc0

2)若IP报文中摸个字符的值为END,即0xc0,那么就需要传输两个连续的字节0xdb和0xdc来代替之。0xdb这个特殊字符被称为SLIP的ESC字符,需要注意的是:它与ASCII码得ESC字符(0x1b)不同

3)若报文中出现了SLIP中的ESC字符,那么就要用二个连续的字符0xdb和0xdd来代替之

 

 

由上可知,SLIP的定义是十分简单的——3句话就能说明,还不简单? 简单的东西就容易实现,而且这个简单性又提高了调制解调器的速率和可靠性,因此,SLIP是一种被广泛使用的协议

 

但是,简单的另一种表达就是功能匮乏,以下是SLIP的值得一提的缺陷:

1)通信的一端必须知道对方的IP,而SLIP是没有办法将本机IP通知另一端的

2)我们看到,根据规则SLIP仅仅是在IP报的基础上添加了开始、结束标志,而没有类型字段的。因此,如果一条串行线路用于SLIP,那么它不能使用其他的协议。这大大降低了线路的复用度

3)SLIP上没有类似于TCP上面的检验和字段。因此当线路上传输的数据出错时,在链路层上是发现不了的。出错信息只能通过上层协议才能发现

 

 

 

 

三、CSLIP:压缩的SLIP

 

SLIP还有一个很大的缺陷,就是性能不高,传输速率较低。因此,为解决这个问题,人们改进了SLIP技术,这就是CSLIP。CSLIP一般能把IP和TCP首部攻40字节压缩成4到5个字节,大大缩短了交互应答时间,因此应用十分广泛。现在 的SLIP产品大多数采用的就是CSLIP技术。

 

 

 

 

四、PPP:点对点协议

 

PPP,点对点协议修改了SLIP协议中的所有缺陷。其数据帧的结构依次是:

1)1byte的标志字符

2)1byte 的地址字符

3)1byte 的控制字符

4)2byte 的协议字段

5)信息字段你(最多1500字节)

6)2byte 的CRC字段

7)1byte 的标志字段

 

 

其解释:

标志字符:每一帧的开始与结束,值固定为0x7E

地址字符:值固定为0xFF

控制字符:值固定为0x03

协议字段:类似于类型字段的功能,当它的值为0x0021时,表示信息字段是一个IP数据报;值为0xc021时,表示信息字段死链路控制数据;值为0x8021时,表示信息字段是网络控制数据

CRC字段(或FCS,帧检验序列)是一个循环冗余检验码,检错用的

 

 

当然,PPP协议之中也有字符转义的要求,如0x7E字符的转义

 

总的来说,PPP比SLIP具有以下优点:1、由于有协议字段,因此PPP串行线路了运行多种协议,不止IP协议 2、由于有CRX字段,因此可以自检错 3、与CSLIP相似,对TCP和IP报文首部进行了压缩 4、通信双方可以进行IP地址的动态协商

 

 

PS:尽管PPP比SLIP有更多的优点,但由于历史原因,SLIP拥有更多的用户。但随着产品的增多,PPP最终应该会取代SLIP

0
4
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics