TCP/IP详解读书笔记--链路层

2015/04/30

##引言 如图1-4所示,在TCP/UP协议族中,链路层主要有三个目的:

  • 为IP模块发送和接收IP数据报;
  • 为ARP模块发送ARP请求和接收ARP应答;
  • 为RARP发送RARP请求和接收RARP应答。

img-1-4

##以太网和IEEE 802封装 以太网这个术语一般是指数字设备公司(Digital Equipment Corp.)、英特尔公司(Int e lCorp.)和Xerox公司在1982年联合公布的一个标准。是当今TCP/IP采用的主要的局域网技术。它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collision Detection)。它的速率为10 Mb/s,地址为48 bit。

##SLIP:串行线路IP SLIP的全称是Serial Line IP。它是一种在串行线路上对IP数据报进行封装的简单形式。

###SLIP协议定义的帧格式:

  • IP 数据报以一个称作END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前 的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个END字符(如果有线 路噪声,那么END字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前一个 错误报文交给上层后,会发现其内容毫无意义而被丢弃)。
  • 如果IP报文中某个字符为END ,那么就要连续传输两个字节0xdb和0xdc来取代它。0xdb这个特殊字符被称作SLIP的ESC 字符,但是它的值与ASCII码的ESC字符(0x1b)不同。
  • 如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xdb和0xdd来 取代它。

图2-2中的例子就是含有一个END字符和一个ESC字符的IP报文。

img-2-2

###缺陷

  • 每一端必须知道对方的IP地址。没有办法把本端的 P地址通知给另一端。
  • 数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP, 那么它不能同时使用其他协议。
  • SLIP没有在数据帧中加上检验和(类似于以太网中的CRC字段)。如果SLIP传输的报 文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调 器可以检测并纠正错误报文)。这样,上层协议提供某种形式的CRC就显得很重要。

##压缩的 SLIP 承认SLIP性能上的缺陷,于是人们提出一个被称作CSLIP(即压缩SLIP)的新协议。CSLIP一般能把上面的40个字节压缩到3或5个字节。它能在CSLIP的每一端维持多达16个TCP连接,并且知道其中每个连接的首部中的某些字段一般不会发生变化。对于那些发生变化的字段,大多数只是一些小的数字和的改变。这些被压缩的首部大大地缩短了交互响应时间。

##PPP:点对点协议 PPP包括以下三个部分:

  • 在串行链路上封装I P数据报的方法。PPP既支持数据为8位和无奇偶检验的异步模式 (如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。
  • 建立、配置及测试数据链路的链路控制协议(LCP:Link Control Protocol)。它允许通信双方进行协商,以确定不同的选项。
  • 针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)体系。当前RFC定义的网络层有IP、OSI网络层、DECnet以及AppleTalk。例如,IPNCP允许双方商定是否对报文首部进行压缩,类似于CSLIP(缩写词NCP也可用在TCP的前面)。

图2-3是PPP数据帧的格式。

img-2-3

###说明 每一帧都以标志字符0x7e开始和结束。紧接着是一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节。接下来是协议字段,类似于以太网中类型字段的功能。当它的值为0x0021时,表示信息字段是一个IP数据报;值为0xc021时,表示信息字段是链路控制数据;值为0x8021时,表示信息字段是网络控制数据。CRC字段(或FCS,帧检验序列)是一个循环冗余检验码,以检测数据帧中的错误。

标志字符0x7e出现在信息字段中时,PPP需要对它进行转义。

总的来说, P P P比S L I P具有下面这些优点:

  • PPP支持在单根串行线路上运行多种协议,不只是IP协议;
  • 每一帧都有循环冗余检验;
  • 通信双方可以进行IP地址的动态协商(使用IP网络控制协议);
  • 与CSLIP类似,对TCP和IP报文首部进行压缩;
  • 链路控制协议可以对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。

##环回接口 环回接口(Loopback Interface),允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。A类网络号127就是为环回接口预留的。

图2-4是环回接口处理I P数据报的简单过程。

img-2-4

###关键点

  • 传给环回地址(一般是127.0.0.1)的任何数据均作为IP输入。
  • 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是 因为广播传送和多播传送的定义(第12章)包含主机本身。
  • 任何传给该主机IP地址的数据均送到环回接口。

图2-4一个隐含的意思是送给主机本身IP地址的IP数据报一般不出现在相应的网络上。

##最大传输单元 MTU 如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片(fragmentation),把数据报分成若干片,这样每一片都小于MTU。

图2-5列出了一些典型的MTU值,它们摘自RFC 1191[Mogul and Deering 1990]。

img-2-5

##路径MTU 路径MTU。两台通信主机路径中的最小MTU。

两台主机之间的路径MTU不一定是个常数。它取决于当时所选择的路由。而选路不一定是对称的(从A到B的路由可能与从B到A的路由不同),因此路径MTU在两个方向上不一定是一致的。

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

对于交互应用来说,等待533 ms是不能接受的。关于人的有关研究表明,交互响应时间超过100~200ms就被认为是不好的。这是发送一份交互报文出去后,直到接收到响应信息(通常是出现一个回显字符)为止的往返时间。



通过赞赏码赞助此文