关闭

关闭

关闭

封号提示

内容

首页 002

002.PDF

002

njljc 2010-12-18 评分 0 浏览量 0 0 0 0 暂无简介 简介 举报

简介:本文档为《002pdf》,可适用于IT/计算机领域,主题内容包含下载第章链路层引言从图中可以看出在TCPIP协议族中链路层主要有三个目的:()为IP模块发送和接收IP数据报()为ARP模块发送ARP请求和接收AR符等。

下载第章链路层引言从图中可以看出在TCPIP协议族中链路层主要有三个目的:()为IP模块发送和接收IP数据报()为ARP模块发送ARP请求和接收ARP应答()为RARP发送RARP请求和接收RARP应答。TCPIP支持多种不同的链路层协议这取决于网络所使用的硬件如以太网、令牌环网、FDDI(光纤分布式数据接口)及RS串行线路等。在本章中我们将详细讨论以太网链路层协议两个串行接口链路层协议(SLIP和PPP)以及大多数实现都包含的环回(loopback)驱动程序。以太网和SLIP是本书中大多数例子使用的链路层。对MTU(最大传输单元)进行了介绍这个概念在本书的后面章节中将多次遇到。我们还讨论了如何为串行线路选择MTU。以太网和IEEE封装以太网这个术语一般是指数字设备公司(DigitalEquipmentCorp)、英特尔公司(IntelCorp)和Xerox公司在年联合公布的一个标准。它是当今TCPIP采用的主要的局域网技术。它采用一种称作CSMACD的媒体接入方法其意思是带冲突检测的载波侦听多路接入(CarrierSense,MultipleAccesswithCollisionDetection)。它的速率为Mbs地址为bit。几年后IEEE(电子电气工程师协会)委员会公布了一个稍有不同的标准集其中针对整个CSMACD网络针对令牌总线网络针对令牌环网络。这三者的共同特性由标准来定义那就是网络共有的逻辑链路控制(LLC)。不幸的是和定义了一个与以太网不同的帧格式。文献Stallings对所有的IEEE标准进行了详细的介绍。在TCPIP世界中以太网IP数据报的封装是在RFCHornig中定义的IEEE网络的IP数据报封装是在RFCPostelandReynolds中定义的。主机需求RFC要求每台Internet主机都与一个Mbs的以太网电缆相连接:)必须能发送和接收采用RFC(以太网)封装格式的分组。)应该能接收与RFC混合的RFC(IEEE)封装格式的分组。)也许能够发送采用RFC格式封装的分组。如果主机能同时发送两种类型的分组数据那么发送的分组必须是可以设置的而且默认条件下必须是RFC分组。最常使用的封装格式是RFC定义的格式。图显示了两种不同形式的封装格式。图中每个方框下面的数字是它们的字节长度。两种帧格式都采用bit(字节)的目的地址和源地址(允许使用bit的地址但一般是bit地址)。这就是我们在本书中所称的硬件地址。ARP和RARP协议(第章和第章)对bit的IP地址和bit的硬件地址进行映射。接下来的个字节在两种帧格式中互不相同。在标准定义的帧格式中长度字段是指它后续数据的字节长度但不包括CRC检验码。以太网的类型字段定义了后续数据的类型。在标准定义的帧格式中类型字段则由后续的子网接入协议(SubnetworkAccessProtocolSNAP)的首部给出。幸运的是定义的有效长度值与以太网的有效类型值无一相同这样就可以对两种帧格式进行区分。在以太网帧格式中类型字段之后就是数据而在帧格式中跟随在后面的是字节的LLC和字节的SNAP。目的服务访问点(DestinationServiceAccessPoint,DSAP)和源服务访问点(SourceServiceAccessPoint,SSAP)的值都设为xaa。Ctrl字段的值设为。随后的个字节orgcode都置为。再接下来的个字节类型字段和以太网帧格式一样(其他类型字段值可以参见RFCReynoldsandPostel)。CRC字段用于帧内后续字节差错的循环冗余码检验(检验和)(它也被称为FCS或帧检验序列)。标准定义的帧和以太网的帧都有最小长度要求。规定数据部分必须至少为字节而对于以太网则要求最少要有字节。为了保证这一点必须在不足的空间插入填充(pad)字节。在开始观察线路上的分组时将遇到这种最小长度的情况。在本书中我们在需要的时候将给出以太网的封装格式因为这是最为常见的封装格式。使用TCPIP详解卷:协议下载目的地址源地址长度类型数据数据报~~~~请求应答请求应答~字节数据数据报请求应答请求应答类型类型类型类型类型类型类型源地址目的地址以太网封装图IEEE(RFC)和以太网的封装格式(RFC)尾部封装RFCLefflerandKarels描述了另一种用于以太网的封装格式称作尾部封装(trailerencapsulation)。这是一个早期BSD系统在DECVAX机上运行时的试验格式它通过调整IP数据报中字段的次序来提高性能。在以太网数据帧中开始的那部分是变长的字段(IP首部和TCP首部)。把它们移到尾部(在CRC之前)这样当把数据复制到内核时就可以把数据帧中的数据部分映射到一个硬件页面节省内存到内存的复制过程。TCP数据报的长度是字节的整数倍正好可以用内核中的页表来处理。两台主机通过协商使用ARP扩展协议对数据帧进行尾部封装。这些数据帧需定义不同的以太网帧类型值。现在尾部封装已遭到反对因此我们不对它举任何例子。有兴趣的读者请参阅RFC以及文献Leffleretal的节。SLIP:串行线路IPSLIP的全称是SerialLineIP。它是一种在串行线路上对IP数据报进行封装的简单形式在RFCRomkey中有详细描述。SLIP适用于家庭中每台计算机几乎都有的RS串行端口和高速调制解调器接入Internet。下面的规则描述了SLIP协议定义的帧格式:)IP数据报以一个称作END(xc)的特殊字符结束。同时为了防止数据报到来之前的线路噪声被当成数据报内容大多数实现在数据报的开始处也传一个END字符(如果有线路噪声那么END字符将结束这份错误的报文。这样当前的报文得以正确地传输而前一个错误报文交给上层后会发现其内容毫无意义而被丢弃)。)如果IP报文中某个字符为END那么就要连续传输两个字节xdb和xdc来取代它。xdb这个特殊字符被称作SLIP的ESC字符但是它的值与ASCII码的ESC字符(xb)不同。)如果IP报文中某个字符为SLIP的ESC字符那么就要连续传输两个字节xdb和xdd来取代它。图中的例子就是含有一个END字符和一个ESC字符的IP报文。在这个例子中在串行线路上传输的总字节数是原IP报文长度再加个字节。图SLIP报文的封装SLIP是一种简单的帧封装方法还有一些值得一提的缺陷:)每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。)数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP那么它不能同时使用其他协议。第章链路层使用下载IP数据报)SLIP没有在数据帧中加上检验和(类似于以太网中的CRC字段)。如果SLIP传输的报文被线路噪声影响而发生错误只能通过上层协议来发现(另一种方法是新型的调制解调器可以检测并纠正错误报文)。这样上层协议提供某种形式的CRC就显得很重要。在第章和第章中我们将看到IP首部和TCP首部及其数据始终都有检验和。在第章中将看到UDP首部及其数据的检验和却是可选的。尽管存在这些缺点SLIP仍然是一种广泛使用的协议。SLIP的历史要追溯到年RickAdams第一次在BSD系统中实现。尽管它本身的描述是一种非标准的协议但是随着调制解调器的速率和可靠性的提高SLIP越来越流行。现在它的许多产品可以公开获得而且很多厂家都支持这种协议。压缩的SLIP由于串行线路的速率通常较低(bs或更低)而且通信经常是交互式的(如Telnet和Rlogin二者都使用TCP)因此在SLIP线路上有许多小的TCP分组进行交换。为了传送个字节的数据需要个字节的IP首部和个字节的TCP首部总数超过个字节(节描述了Rlogin会话过程中当敲入一个简单命令时这些小报文传输的详细情况)。既然承认这些性能上的缺陷于是人们提出一个被称作CSLIP(即压缩SLIP)的新协议它在RFCJacobsona中被详细描述。CSLIP一般能把上面的个字节压缩到或个字节。它能在CSLIP的每一端维持多达个TCP连接并且知道其中每个连接的首部中的某些字段一般不会发生变化。对于那些发生变化的字段大多数只是一些小的数字和的改变。这些被压缩的首部大大地缩短了交互响应时间。现在大多数的SLIP产品都支持CSLIP。作者所在的子网(参见封面内页)中有两条SLIP链路它们均是CSLIP链路。PPP:点对点协议PPP点对点协议修改了SLIP协议中的所有缺陷。PPP包括以下三个部分:)在串行链路上封装IP数据报的方法。PPP既支持数据为位和无奇偶检验的异步模式(如大多数计算机上都普遍存在的串行接口)还支持面向比特的同步链接。)建立、配置及测试数据链路的链路控制协议(LCP:LinkControlProtocol)。它允许通信双方进行协商以确定不同的选项。)针对不同网络层协议的网络控制协议(NCP:NetworkControlProtocol)体系。当前RFC定义的网络层有IP、OSI网络层、DECnet以及AppleTalk。例如IPNCP允许双方商定是否对报文首部进行压缩类似于CSLIP(缩写词NCP也可用在TCP的前面)。RFCSimpson描述了报文封装的方法和链路控制协议。RFCMcGregor描述了针对IP的网络控制协议。PPP数据帧的格式看上去很像ISO的HDLC(高层数据链路控制)标准。图是PPP数据帧的格式。每一帧都以标志字符xe开始和结束。紧接着是一个地址字节值始终是xff然后是一个值为x的控制字节。使用TCPIP详解卷:协议下载图PPP数据帧的格式接下来是协议字段类似于以太网中类型字段的功能。当它的值为x时表示信息字段是一个IP数据报值为xc时表示信息字段是链路控制数据值为x时表示信息字段是网络控制数据。CRC字段(或FCS帧检验序列)是一个循环冗余检验码以检测数据帧中的错误。由于标志字符的值是xe因此当该字符出现在信息字段中时PPP需要对它进行转义。在同步链路中该过程是通过一种称作比特填充(bitstuffing)的硬件技术来完成的Tanenbaum。在异步链路中特殊字符xd用作转义字符。当它出现在PPP数据帧中时那么紧接着的字符的第个比特要取其补码具体实现过程如下:)当遇到字符xe时需连续传送两个字符:xd和xe以实现标志字符的转义。)当遇到转义字符xd时需连续传送两个字符:xd和xd以实现转义字符的转义。)默认情况下如果字符的值小于x(比如一个ASCII控制字符)一般都要进行转义。例如遇到字符x时需连续传送xd和x两个字符(这时第个比特取补码后变为而前面两种情况均把它变为)。这样做的原因是防止它们出现在双方主机的串行接口驱动程序或调制解调器中因为有时它们会把这些控制字符解释成特殊的含义。另一种可能是用链路控制协议来指定是否需要对这个字符中的某一些值进行转义。默认情况下是对所有的个字符都进行转义。与SLIP类似由于PPP经常用于低速的串行链路因此减少每一帧的字节数可以降低应用程序的交互时延。利用链路控制协议大多数的产品通过协商可以省略标志符和地址字段并且把协议字段由个字节减少到个字节。如果我们把PPP的帧格式与前面的SLIP的帧格式(图)进行比较会发现PPP只增加了个额外的字节:个字节留给协议字段另个给CRC字段使用。另外使用IP网络控制协议大多数的产品可以通过协商采用VanJacobson报文首部压缩方法(对应于CSLIP压缩)减小IP和TCP首部长度。总的来说PPP比SLIP具有下面这些优点:()PPP支持在单根串行线路上运行多种协议不只是IP协议()每一帧都有循环冗余检验()通信双方可以进行IP地址的动态协商(使用IP网络控制协议)()与CSLIP类似对TCP和IP报文首部进行压缩()链路控制协议可以对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加个字节当建立链路时要发送几帧协商数据以及更为复杂的实现。尽管PPP比SLIP有更多的优点但是现在的SLIP用户仍然比PPP用户多。随着产品越来越多产家也开始逐渐支持PPP因此最终PPP应该取代SLIP。第章链路层使用下载标志地址控制协议协议协议协议网络控制数据链路控制数据IP数据报最多字节信息标志环回接口大多数的产品都支持环回接口(LoopbackInterface)以允许运行在同一台主机上的客户程序和服务器程序通过TCPIP进行通信。A类网络号就是为环回接口预留的。根据惯例大多数系统把IP地址分配给这个接口并命名为localhost。一个传给环回接口的IP数据报不能在任何网络上出现。我们想象一旦传输层检测到目的端地址是环回地址时应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程只是当IP数据报离开网络层时把它返回给自己。图是环回接口处理IP数据报的简单过程。图环回接口处理IP数据报的过程图中需要指出的关键点是:)传给环回地址(一般是)的任何数据均作为IP输入。)传给广播地址或多播地址的数据报复制一份传给环回接口然后送到以太网上。这是因为广播传送和多播传送的定义(第章)包含主机本身。)任何传给该主机IP地址的数据均送到环回接口。看上去用传输层和IP层的方法来处理环回数据似乎效率不高但它简化了设计因为环回接口可以被看作是网络层下面的另一个链路层。网络层把一份数据报传送给环回接口就像传给其他链路层一样只不过环回接口把它返回到IP的输入队列中。在图中另一个隐含的意思是送给主机本身IP地址的IP数据报一般不出现在相应的网络上。例如在一个以太网上分组一般不被传出去然后读回来。某些BSD以太网的设备驱动程序的注释说明许多以太网接口卡不能读回它们自己发送出去的数据。由于一台主机必使用TCPIP详解卷:协议下载IP输出函数IP输入函数放入IP输入队列中放入IP输入队列中是否是目的IP地址是否与接口IP地址相同?否用ARP获取目的主机的以太网地址环回驱动程序目的IP地址是否与广播地址或多播地址相同?发送以太网接收以太网驱动程序基于以太网帧类型进行分用须处理发送给自己的IP数据报因此图所示的过程是最为简单的处理办法。BSD系统定义了变量useloopback并初始化为。但是如果这个变量置为以太网驱动程序就会把本地分组送到网络而不是送到环回接口上。它也许不能工作这取决于所使用的以太网接口卡和设备驱动程序。最大传输单元MTU正如在图看到的那样以太网和对数据帧的长度都有一个限制其最大值分别是和字节。链路层的这个特性称作MTU最大传输单元。不同类型的网络大多数都有一个上限。如果IP层有一个数据报要传而且数据的长度比链路层的MTU还大那么IP层就需要进行分片(fragmentation)把数据报分成若干片这样每一片都小于MTU。我们将在节讨论IP分片的过程。图列出了一些典型的MTU值它们摘自RFCMogulandDeering。点到点的链路层(如SLIP和PPP)的MTU并非指的是网络媒体的物理特性。相反它是一个逻辑限制目的是为交互使用提供足够快的响应时间。在节中我们将看到这个限制值是如何计算出来的。在节中我们将用netstat命令打印出网络接口的MTU。路径MTU当在同一个网络上的两台主机互相进行通信时该网络的MTU是非常重要的。但是如果两台主机之间的通信要通过多个网络那么每个网络的链路层就可能有不同的MTU。重要的不是两台主机所在网络的MTU的值重要的是两台通信主机路径中的最小MTU。它被称作路径MTU。两台主机之间的路径MTU不一定是个常数。它取决于当时所选择的路由。而选路不一定是对称的(从A到B的路由可能与从B到A的路由不同)因此路径MTU在两个方向上不一定是一致的。RFCMogulandDeering描述了路径MTU的发现机制即在任何时候确定路径MTU的方法。我们在介绍了ICMP和IP分片方法以后再来看它是如何操作的。在节中我们将看到ICMP的不可到达错误就采用这种发现方法。在节中还会看到traceroute程序也是用这个方法来确定到达目的节点的路径MTU。在节和节将介绍当产品支持路径MTU的发现方法时UDP和TCP是如何进行操作的。串行线路吞吐量计算如果线路速率是bs而一个字节有bit加上一个起始比特和一个停止比特那么线路的速率就是Bs(字节秒)。以这个速率传输一个字节的分组需要ms。如果第章链路层使用下载图几种常见的最大传输单元(MTU)超通道以太网网络MTU字节点对点(低时延)s令牌环(IBM)s令牌环(IEEE)用SLIP链接运行一个交互式应用程序同时还运行另一个应用程序如FTP发送或接收字节的数据那么一般来说就必须等待一半的时间(ms)才能把交互式应用程序的分组数据发送出去。假定交互分组数据可以在其他“大块”分组数据发送之前被发送出去。大多数的SLIP实现确实提供这类服务排队方法把交互数据放在大块的数据前面。交互通信一般有Telnet、Rlogin以及FTP的控制部分(用户的命令而不是数据)。这种服务排队方法是不完善的。它不能影响已经进入下游(如串行驱动程序)队列的非交互数据。同时新型的调制解调器具有很大的缓冲区因此非交互数据可能已经进入该缓冲区了。对于交互应用来说等待ms是不能接受的。关于人的有关研究表明交互响应时间超过~ms就被认为是不好的Jacobsona。这是发送一份交互报文出去后直到接收到响应信息(通常是出现一个回显字符)为止的往返时间。把SLIP的MTU缩短到就意味着链路传输一帧最长需要ms它的一半是ms(这是一般需要等待的时间)。这样情况会好一些但仍然不完美。我们选择它的原因(与或相比)是因为大块数据提供良好的线路利用率(如大文件传输)。假设CSLIP的报文首部是个字节数据帧总长为个字节个字节的数据使线路的利用率为帧头占了这样的利用率是很不错的。如果把MTU降到以下那么将降低传输大块数据的最大吞吐量。在图列出的MTU值中点对点链路的MTU是个字节。假设数据为字节TCP和IP首部占个字节。由于MTU是IP向链路层查询的结果因此该值必须包括通常的TCP和IP首部。这样就会导致IP如何进行分片的决策。IP对于CSLIP的压缩情况一无所知。我们对平均等待时间的计算(传输最大数据帧所需时间的一半)只适用于SLIP链路(或PPP链路)在交互通信和大块数据传输这两种情况下。当只有交互通信时如果线路速率是bs那么任何方向上的字节数据(假设有个字节的压缩帧头)往返一次都大约需要ms。它比前面提到的~ms要小得多。需要注意的是由于帧头从个字节压缩到个字节使得字节数据往返时间从ms减到ms。不幸的是当使用新型的纠错和压缩调制解调器时这样的计算就更难了。这些调制解调器所采用的压缩方法使得在线路上传输的字节数大大减少但纠错机制又会增加传输的时间。不过这些计算是我们进行合理决策的入口点。在后面的章节中我们将用这些串行线路吞吐量的计算来验证数据从串行线路上通过的时间。小结本章讨论了Internet协议族中的最底层协议链路层协议。我们比较了以太网和IEEE的封装格式以及SLIP和PPP的封装格式。由于SLIP和PPP经常用于低速的链路二者都提供了压缩不常变化的公共字段的方法。这使交互性能得到提高。大多数的实现都提供环回接口。访问这个接口可以通过特殊的环回地址一般为。也可以通过发送IP数据报给主机所拥有的任一IP地址。当环回数据回到上层的协议栈中时它已经过传输层和IP层完整的处理过程。使用TCPIP详解卷:协议下载我们描述了很多链路都具有的一个重要特性MTU相关的一个概念是路径MTU。根据典型的串行线路MTU对SLIP和CSLIP链路的传输时延进行了计算。本章的内容只覆盖了当今TCPIP所采用的部分数据链路公共技术。TCPIP成功的原因之一是它几乎能在任何数据链路技术上运行。习题如果你的系统支持netstat()命令(参见节)那么请用它确定系统上的接口及其MTU。第章链路层使用下载第章链路层引言以太网和IEEE封装尾部封装SLIP:串行线路IP压缩的SLIPPPP:点对点协议环回接口最大传输单元MTU路径MTU串行线路吞吐量计算小结

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +1积分

资料评分:

/9
0下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部

举报
资料