我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:创富心水论坛 > 点对点协议 >

一百四十七)TCPIP详解笔记-第2章 链路层

归档日期:07-31       文本归类:点对点协议      文章编辑:爱尚语录

  CRC:循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。

  最常使用的封装格式是RFC 894定义的格式。图2-1显示了两种不同形式的封装格式,802帧格式和以太网帧格式。图中每个方框下面的数字是它们的字节长度。

  两种帧格式都采用48 bit(6字节)的目的地址和源地址(802.3允许使用16 bit的地址,但一般是48 bit地址)。这就是我们在本书中所称的硬件地址。

  接下来的2个字节在两种帧格式中互不相同。在802标准定义的帧格式中,长度字段是指它后续数据的字节长度,但不包括CRC检验码。以太网的类型字段定义了后续数据的类型。在802标准定义的帧格式中,类型字段则由后续的子网接入协议(Sub-network Access Protocol,SNAP)的首部给出。幸运的是,802定义的有效长度值与以太网的有效类型值无一相同,这样,就可以对两种帧格式进行区分。

  CRC字段用于帧内后续字节差错的循环冗余码检验(检验和)(它也被称为FCS或帧检验序列)。

  802.3标准定义的帧和以太网的帧都有最小长度要求。802.3规定数据部分必须至少为38字节,而对于以太网,则要求最少要有46字节。为了保证这一点,必须在不足的空间插入填充(pad)字节。在开始观察线路上的分组时将遇到这种最小长度的情况。

  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报文。在这个例子中,在串行线路上传输的总字节数是原IP报文长度再加4个字节。

  数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP,那么它不能同时使用其他协议。

  SLIP没有在数据帧中加上检验和(类似于以太网中的CRC字段)。如果SLIP传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器可以检测并纠正错误报文)。这样,上层协议提供某种形式的CRC就显得很重要。在第3章和第17章中,我们将看到IP首部和TCP首部及其数据始终都有检验和。在第11章中,将看到UDP首部及其数据的检验和却是可选的。

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

  在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶检验的异步模式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。

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

  针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)体系。当前RFC定义的网络层有IP、OSI网络层、DECnet以及AppleTalk。例如,IP NCP允许双方商定是否对报文首部进行压缩,类似于CSLIP(缩写词NCP也可用在TCP的前面)。

  每一帧都以标志字符0x7e开始和结束。紧接着是一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节。

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

  CRC字段(或FCS,帧检验序列)是一个循环冗余检验码,以检测数据帧中的错误。

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

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

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

  默认情况下,如果字符的值小于0x20(比如,一个ASCII控制字符),一般都要进行转义。例如,遇到字符0x01时需连续传送0x7d和0x21两个字符(这时,第6个比特取补码后变为1,而前面两种情况均把它变为0)。

  这样做的原因是防止它们出现在双方主机的串行接口驱动程序或调制解调器中,因为有时它们会把这些控制字符解释成特殊的含义。另一种可能是用链路控制协议来指定是否需要对这32个字符中的某一些值进行转义。默认情况下是对所有的32个字符都进行转义。

  (5)链路控制协议可以对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。

  大多数的产品都支持环回接口(Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。A类网络号127就是为环回接口预留的。根据惯例,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost。一个传给环回接口的IP数据报不能在任何网络上出现。

  正如在图2-1看到的那样,以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU ,最大传输单元。不同类型的网络大多数都有一个上限。

  如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片(fragmentation),把数据报分成若干片,这样每一片都小于MTU。我们将在11.5节讨论IP分片的过程。

  图2-5列出了一些典型的MTU值,它们摘自RFC 1191[Mogul and Deering 1990]。点到点的链路层(如SLIP和PPP)的MTU并非指的是网络媒体的物理特性。相反,它是一个逻辑限制,目的是为交互使用提供足够快的响应时间。在2.10节中,我们将看到这个限制值是如何计算出来的。

  当在同一个网络上的两台主机互相进行通信时,该网络的MTU是非常重要的。但是如果两台主机之间的通信要通过多个网络,那么每个网络的链路层就可能有不同的MTU。重要的不是两台主机所在网络的MTU的值,重要的是两台通信主机路径中的最小MTU。它被称作路径MTU。

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

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

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

  把SLIP的MTU缩短到256就意味着链路传输一帧最长需要266 ms,它的一半是133 ms(这是一般需要等待的时间)。这样情况会好一些,但仍然不完美。我们选择它的原因(与64或128相比)是因为大块数据提供良好的线路利用率(如大文件传输)。假设CSLIP的报文首部是5个字节,数据帧总长为261个字节,256个字节的数据使线%,这样的利用率是很不错的。如果把MTU降到256以下,那么将降低传输大块数据的最大吞吐量。

  在图2-5列出的MTU值中,点对点链路的MTU是296个字节。假设数据为256字节,TCP和IP首部占40个字节。由于MTU是IP向链路层查询的结果,因此该值必须包括通常的TCP和IP首部。这样就会导致IP如何进行分片的决策。IP对于CSLIP的压缩情况一无所知。

  我们对平均等待时间的计算(传输最大数据帧所需时间的一半)只适用于SLIP链路(或PPP链路)在交互通信和大块数据传输这两种情况下。当只有交互通信时,如果线 b/s,那么任何方向上的1字节数据(假设有5个字节的压缩帧头)往返一次都大约需要12.5ms。它比前面提到的100~200 ms要小得多。需要注意的是,由于帧头从40个字节压缩到5个字节,使得1字节数据往返时间从85 ms减到12.5ms。

  本章讨论了Internet协议族中的最底层协议,链路层协议。我们比较了以太网和IEEE802.2/802.3的封装格式,以及SLIP和PPP的封装格式。由于SLIP和PPP经常用于低速的链路,二者都提供了压缩不常变化的公共字段的方法。这使交互性能得到提高。

  大多数的实现都提供环回接口。访问这个接口可以通过特殊的环回地址,一般为127.0.0.1。也可以通过发送IP数据报给主机所拥有的任一IP地址。当环回数据回到上层的协议栈中时,它已经过传输层和IP层完整的处理过程。

  我们描述了很多链路都具有的一个重要特性,MTU,相关的一个概念是路径MTU。根据典型的串行线路MTU,对SLIP和CSLIP链路的传输时延进行了计算。

  本章的内容只覆盖了当今TCP/IP所采用的部分数据链路公共技术。TCP/IP成功的原因之一是它几乎能在任何数据链路技术上运行。

  第一章:概述应用层和运输层使用端到端的协议,网络层提供的是逐跳协议(点到点的服务).网络层IP提供的是一种不可靠的服务,即刻能快地分组从源节点送到目的节点,并不提供任何可靠性保证;TCP在不可靠的IP...博文来自:Jinming Su

  《TCP/IP详解·卷2:实现》完整而详细地介绍了TCP/IP协议是如何实现的。书中给出了约500个图例,15000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。《TCP/IP详解·卷2:实现》不仅说明了插口API和协...

  TCP/IP详解 卷1:协议[第2版]完整版,带标签目录,PDF格式,非扫描版,Kindle可用,不乱吗,配图清晰。

  CIDR和聚合曼彻斯特编码,CRC全双工,半双工模式生成树协议,快速生成树协议PPP协议,无线局域网Wi-Fi,VPNIP头格式...博文来自:hixiaoxiaoniao的专栏

  TCP/IP协议族中设计链路层的目的是为IP模块发送和接收IP数据报。它可用于携带一些支持IP的辅助性协议(例如ARP)。TCP/IP支持多种不同的链路层,它依赖于使用的网络硬件类型:有线局域网,例如...博文来自:真正的大师永远怀着一颗学徒的心

  本书是《TCP/IP详解》第1卷的第2版,主要讲述TCP/IP协议,结合大量实例讲述TCP/IP协议族的定义原因,以及在各种不同的操作系统中的应用及工作方式。

  《TCP/IP详解》是已故网络专家、著名技术作家W. Richard Stevens的传世之作,内容详尽且极具权*,被誉为TCP/IP领域的不朽名著。 本书是《TCP/IP详解》第1卷的第2版,主要讲述TCP/IP协议,结合大量实例讲述...

  本书是《TCP/IP详解》第1卷的第2版,主要讲述TCP/IP协议,结合大量实例讲述TCP/IP协议族的定义原因,以及在各种不同的操作系统中的应用及工作方式。第2版在保留Stevens卓越的知识体系和写作风格的基础上,新加入的作者Kev...

  tcp/ip详解卷1第二版(中英文合集),英文版是文字PDF版本,中文版是清晰文字版,都带完整书签。考虑到第一版的确已经过时(很多技术已经被弃用或者修改),还是推荐读第二版,而且最好读英文版,中文版用来对照一下就好(有些翻译实在让人不忍卒...

  中文版由很多翻译上的错误,给很多新人入门带来很大困难。英文版可以作为中文版的对照阅读用书。mobi格式适合kindle阅读工具使用,清晰度很高。

  《TCP-IP详解 卷2:实现》(高清无水印全目录) 《TCP-IP详解 卷2:实现》(高清无水印全目录) 《TCP-IP详解 卷2:实现》(高清无水印全目录) 《TCP-IP详解 卷2:实现》(高清无水印全目录)

  TCP/IP详解是学习传统网络知识的最佳书籍,书中详细介绍了各协议的详细原理及实现过程,卷二是实现,对网络知识的进阶有很大帮助。

  TCP-IP详解卷二:实现(超清晰版),撸主找了N久,找到个拆散的高清版,合并后共享给大家。

  数据链路层的作用是什么?数据链路层的作用主要有三个:1.IP数据报经路由寻址后,交由下层,也就是数据链路层进行转发。2.发送APR请求和应答ARP请求,IP—-MAC的转换。3.发送RARP请求和应...博文来自:wh1511995112的博客

  数据链路层将不可靠的物理层转变为一条无差错的链路,传输的是帧(frame),高层的协议数据被封装在以太网帧的数据字段发送。...博文来自:SouthWind0的博客

  原文链接:本文要点 《TCP/IP详解卷2》原书章节简介 第一个网络编程示例 网络层次结构 ...博文来自:LClansefengbao的专栏

  第01章概述OSI7层模型: 物理层:指定连接器、数据速率和如何在某些介质上进行编码。本层也描述低层的差错检测和纠正、频率分配。 链路层:指定经过单一链路通信的方法,包括多个系统共享同一介质时的“介质...博文来自:SJLin

  数据链路层有三个目的:(1)为IP模块发送和接收IP数据报。(2)为ARP模块发送ARP请求和接收ARP应答。(3)为RARP发送RARP请求和接收RARP应答。ARP叫做地址解析协议,是用IP地址转...博文来自:爱橙子的OK绷的专栏

  上次我们简单介绍了TCP/IP模型,它包括五层(也可以叫四层),今天我们具体的看下物理层和数据链路层。物理层1.物理层的功能根据所使用的传输介质不同,制定不同的物理层协议,规定数据的编码方式,传输速率...博文来自:的博客

  TCP IP详解卷1协议 英文版 第2版,英文书籍原版,比纸质的英文版还要原版(国产纸质英文版书皮还是中文,只是内容是英文,增减了一些前言介绍部分)。页码我做了重排,增删,更易读。强迫症呀。。。。

  经典网络书籍 TCP-IP详解(卷一、二、三)[3卷全]中文超清彩色带目录版[PDF]

  TCP_IP协议详解,总共30章,第2章 链路层.pdf,第3章 IP:网际协议.pdf,第4章 ARP:地址解析协议.pdf,第5章 RARP:逆地址解析协议.pdf。。。第17章 TCP:传输控制协议.pdf。。。

  1 TCP/IP概述1.1 TCP/IP协议通常所说的TCP/IP协议指的其实是“TCP/IP协议族”,是指包括TCP、IP等网络协议在内的众多网络协议的集合。TCP/IP协议也可以认为是对OSI模型...博文来自:风居住的城市

  【计算机网络高分笔记】第三章:数据链路层标签(空格分隔):【计算机网络】第三章:数据链路层第三章:数据链路层3.1数据链路层的功能我的微信公众号大纲要求:数据链路层功能组帧差错控制检错编码纠错编码流量...博文来自:vsym

  第一章:网络基础知识第二章:TCP/IP基础知识第三章:数据链路第四章:IP协议第五章:IP协议相关技术第六章:TCP与UDP第七章:路由协议第八章:应用协议第九章:网络安全《图解TCP/IP:第5版...博文来自:衣舞晨风

  本书共分三个部分。第一部分主要介绍了网络和路由选择的基本知识,其中包括IPv4协议、IPv6协议和路由技术。第二部分是本书的精华,这一部分详细、深入地讲述了各种常用的内部路由协议,如RIP、RIPv2、RIPng、无类别路由选择、EIGR...

  TCP-IP详解卷一、卷二、卷三 pdf(高清) TCP-IP详解卷一、卷二、卷三 pdf(高清)

  TCP IP详解 第二版 卷1 中文版+英文版,可以对照查看。虽然有电子版的,但是这种经典还是建议买本纸质版的,祝大家有所收获!

  :你好,想问一下,堆栈二的报错中,修复方案里面的package是不是那个包名出错,就用那个包名判断?

  kenllf:谢谢回复!我用的是以太网,不是连wifi。我的目的就是让网络风暴持续到设备失去ip之后,因为实际使用中也有可能会碰到这样的问题。现在目标是实现,在网络风暴结束后,设备能够自动重新发送discover包来获取ip地址。这个曾经在安卓5.1的设备上实现过,但是因为安卓5.1时用dhcpcd来获取ip的,而且也不是我实现的,是公司其他人弄的,现在也没办法咨询了。我想既然安卓5.1可以,安卓7.1应该也是可行的,就是不知道方法。

  sinat_20059415:[reply]kenllf[/reply] 我理解是ip租约过期以后WiFi由于缺少ip信息会断开的,之后重连由于dhcp失败一直连接不上,最后被禁用,也许撑不到所谓的风暴之后

  kenllf:博主你好,看了这篇文章,解决了我对租约的疑惑,感谢! 请教一个问题!我的系统是安卓7.1.2,也是使用dhcp进行获取ip。 我是在设备已经获取到ip的情况下,环路路由器制造网络风暴(为了测试设备在网络风暴结束后能不能自动获取ip,目前结果是不能的)。我的是短租10分钟,我通过查看logcat发现,在5分钟的时候,确实发了request数据包,后面再7/8时间时也发了,最后在10分钟的时候租约到期。 而且在租约到期后,马上又发了一个 discover 包,因为还处于网络风暴,所以肯定是获取不到ip的,然后就看到dhcpclient发出一些退出线程之类的log。之后就再也没有dhcpclient的log出现了,估计也是退出了。 请问需要怎么做才能让设备能够在网络风暴之后自动重新获取ip,需要修改哪里的代码。 先谢谢博主了

本文链接:http://websarmiento.com/dianduidianxieyi/669.html