计算机网络基础 中文版 word可编辑006Word格式.docx
- 文档编号:16510176
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:15
- 大小:77.17KB
计算机网络基础 中文版 word可编辑006Word格式.docx
《计算机网络基础 中文版 word可编辑006Word格式.docx》由会员分享,可在线阅读,更多相关《计算机网络基础 中文版 word可编辑006Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
当计算机A发送一个文件到计算机D时,计算机B和C必须等待。
个文件需要多长时间?
如果一个文件有5兆字节(一个典型的大数据
传输一文件),并且通
AC
共享资源
BD
图6-1计算机网络使用包的原因的图解。
当一对计算机在通信时,其他计算机必须等待
信系统的传输速率是每秒56000位(典型的远程网络传输速率),这个传输需要大约12分钟。
这个实例清楚地表明:
任何允许一个应用独占共享资源的网络将使其他计算机受到难以容忍的长时间阻塞。
相对而言,当图6-1的网络要求计算机把数据分成大小为1000字节的包时,我们考虑这个要求所带来的延迟。
假设计算机A开始向D发送数据。
同时假设在A开始发送后,计算机B需要向C发送数据。
在A完成发送一个包后,网络将允许B发送一个包。
因为每个包只有8000位的数据,硬件每秒能传输56000位的数据,一个完整的包只要0.143秒就能发送出去。
这样,B在开始发送前至多等待143ms。
我们总结如下:
为使发送方与接收方能协调并保证所有共享网络资源的计算机能公平、迅速地使用网络,大多数计算机网络把数据分成叫作包的小块。
计算机在共享资源上按次序发送包。
因为每个包都很小,所以没有计算机在使用时要经历长时间的等待。
6.3包和时分多路复用
从概念上讲,允许多个源机按次序使用共享通信资源的网络实际上是提供了一种时分多路复用的形式。
图6-2表明了这个思想。
发生多路复用计算机1使用通道发送一个包
计算机1
计算机2
计算机3a)
计算机2使用通道发送一个包
计算机3b)
图6-2包的多路复用图解。
源机按次序使用共享通信信道
a)计算机1使用资源发送一个包,然后b)计算机2使用资源发送一个包
把数据分成包保证了所有源机能得到迅速、即时的服务,因为它禁止一台源机任意长时间独占网络。
特别是,如果一台源机有少量包要发送,另一台也有许多包要发送,那么,让两台源机按次序发送包的方法将确保传输数据较少的源机能迅速完成。
6.4包和物理帧
尽管术语包(packet)指的是小数据块的一般概念,但是在确切的包格式方面没有达到完全一致。
相反,每种硬件技术都定义了能在该硬件上传输的包的细节,并指明了包的位串是如何传输的。
为了帮助区分包传输的一般概念与特定硬件技术所使用的包,我们用术语帧
(frame)来定义用在特定网络类型中的包。
这样,可以定义一帧能容纳的最大数据量或者帧的位串在网络上的发送顺序。
为了理解一种网络技术是如何定义帧格式的,可以考虑这样一个简单的例子。
假设某人需要使用面向字节的传输方案(比如第4章描述的RS-232机制)把一数据块从一台计算机发送到另一台。
尽管RS-232标准指明了怎样编码以及怎样传输单个字节,但是它并没有一个能让发送
方标记数据块结尾的方案—发送和接收的计算机必须在这些细节上保持一致。
这就是说,发
送方和接收方必须在怎样指明每一帧的开始与结束上保持一致。
如果帧中数据不使用所有可能值,那么网络系统可以选择两个不用的值来标记每帧的开始
与结束。
例如,假设用RS-232来传输ASCII字符形式的文本文件(附录2中列有ASCII字符编码)。
因为ASCII码包括不能打印的字符,它们不出现在一般的文本文件中,所以网络能用两个不能打印的ASCII字符来标记帧的边界。
图6-3表明网络怎样用ASCII字符soh(十六进制数01)和eot(十六进制数04)来标记帧的边界(事实上,ASCII包含了专用于定义帧的一些字符—soh是startofheader的缩写,而eot是endoftransmission的缩写)。
soh帧中的数据块eot
图6-3一个帧的例子,用字符soh标记帧的开始,用字符eot标记帧的结束。
这一格式简单且无二义性—当整个帧到达时,接收方能辨别出来,即使字符之间存在延迟
例子中的帧方案兼有缺点和优点。
主要缺点是网络开销。
为了了解原因,我们考虑当传输者无延迟地传输两帧时会发生什么。
当第一个帧结束时,传输者传输eot,然后无延迟地传输soh开始第二帧。
在这种情况下,只需要一个字符来区分两块数据—这种标记帧开始和结束的方案在数据块之间传输了一个多余的,无用的字符。
但如果考虑到长延迟和计算机崩溃的情况,在帧的开始和结束传输字符的主要优点就显得
很明显了。
回忆一下,异步传输系统允许字符间的任意延迟,期间计算机系统可能会崩溃并重启。
用两个字符来标记帧的边界能很好地处理这种情况。
如果发送计算机在传输一个完整帧以前崩溃,eot将不会到达,那么接收计算机会知道这个帧是不完整的。
当发送计算机重启并传输一个新帧时,它将以soh开始,这样接收计算机就会检测出这个问题。
如果接收计算机崩溃并重启,它能用帧的开始符soh来区别两种可能性:
重启在发送计算机开始传输帧之前完成
(soh在帧的其他字符之前到达)或者发送计算机在重启完成前开始传输(soh将会丢失,其他字符将先到达)。
6.5字节充填
尽管用字符标记每帧开始与结束的方法有其优点,但是大多数计算机网络不能保留网络使用的那些字符。
相反,允许在网络上传输任意数据值。
特别是应用可以选择发送数据,在那些数据中包含soh与eot的一次或多次出现。
因此,简单地在帧的数据部分中传输这些字符会引起问题。
例如,接收计算机将把字符eot解释为一个完整的帧已经到达。
相似地,如果接收计算机遇到一个soh字符,它会认为一个新帧将开始到达。
通常,为了区分传输的数据与控制信息,例如帧的定界符,网络系统会要求发送方在发送之前稍微修改一下数据,然后要求接收方在把数据传输给应用之前恢复原来的数据。
这样,尽管网络上的应用能传输任意的数据,但网络系统决不会把它们与控制信息混淆。
因为网络系统通常插入其他多余的位或字符来修改传输的数据,所以这种技术被称为数
据充填(datastuffing)。
术语字符充填(characterstuffing)与字节充填(bytestuffing)是指使用面向字符硬件的数据充填,而更常用的位充填(bitstuffing)是指使用面向位硬件的数据充填。
为了理解数据充填是怎样允许帧中包含任意数据值的,我们考虑上面讨论的面向字符的帧格式。
因为发送计算机与接收计算机同意使用字符soh与eot来标记帧的界限,所以这两个字符
就不能在数据中出现。
字节充填能解决这个问题,它使用另一个特殊字符来标识数据中的特殊
字符的出现。
例如,假设选择ASCII字符esc(十六进制值为1B)作为另一个特殊字符。
当这三个特殊字符中的任何一个在数据中出现时,发送计算机就插入esc来代替这个字符。
图6-4中的
表概括了这种映射关系。
每次出现,用esc与y代替eot的每次出
为了实现字节充填,发送计算机必须扫描整个数据块,并且在数据发送前执行映射操作。
正如上表所示,发送计算机用两个字符esc与x代替soh的
,
现,用esc与z代替esc的每次出现。
当字符到达时,接收
计算机必须寻找esc的出现以及随后的x,y,z中的一个用相应的一个字符代替这两个字符组合。
图6-5表示了一个数据块以及字节充填后的帧的例子。
如图6-5所示,仔细地选择映射关系,可以保证发送计算机在完成字节充填后,字符soh与eot不在帧的数据部
ot总是表明帧的结束。
分出现。
这样接收计算机能确定soh总是表明帧的开始以及e
数据中的字符发送的字符
图6-4字节充填的例子。
数据中一旦出现左栏中字符,发送方计算机就会传输右栏中相应的两个字符
escsoheotesc
a)
soh
escz
escx
escy
b)
eot
图6-5字节充填的图解
a)包括soh,eot,esc特殊字符的数据的例子
b)字节充填后的帧。
虚线表明新字符插入的位置
6.6传输差错
雷击、电压骤变以及其他电磁干扰都能在用于通信的电子部件或电缆上产生意外的电流。
严重的干扰(例如雷击)能给网络设备造成永久性的损坏。
然而更常见的是,干扰仅仅改变用来传输的信号而不损坏设备。
电子信号的一个小小的变化能使接收计算机误解一个或多个数据位。
事实上,干扰能完全破坏一个信号,这是指尽管发送计算机传输了数据,但接收计算机检测不到任何到达的信息。
奇怪的是,在空闲线路上的干扰能产生相反的效果—尽管发送计算机没有传输任何数据,接收计算机也可能把接收到的干扰当做有效的位串或字符流。
所谓的传输差错(transmissionerror),就是丢失、改变或错误出现位串的问题,这些问题在很大程度上导致了计算机网络的复杂性。
我们可以概括为:
计算机网络许多复杂性的出现是因为数字传输系统很容易受到干扰,这些干扰能引起随机数据的出现或传输数据的丢失或改变。
6.7奇偶位与奇偶校验
幸运的是,大多数通信系统并不经常受到干扰。
例如,局域通信线路通常能运行数年而不
发生严重的问题。
更重要的是,长距离通信线路上的干扰可能很小以至于调制解调器就能自动
地处理所有问题。
尽管出现差错的概率很低,设计网络的科学家与工程师们还是认为传输差错确实会发生,所以他们提供硬件与软件机制来检测和纠正这些差错。
第4章讨论了RS-232硬件用来检测差错的一种机制:
当一个字符开始到达时,接收计算机
就启动一个计时器并用它来检查收到字符的位串。
如果信号的每一位不能使固定的电平保持一段时间或者如果停止位没有在相应的时间内出现,那么硬件就认为干扰引起了差错。
另外,大多数RS-232线路还使用第二种机制来帮助确保每一个字符都无破坏的到达。
奇偶校验(parity
check)机制要求发送计算机在发送前对每一个字符都计算一个附加位,叫做奇偶位(paritybit),并把它放在每一个字符后面。
在一个字符的所有位到达之后,接收计算机去掉奇偶位,进行与发送计算机同样的计算,并证实结果与奇偶位一致。
之所以选择这种奇偶计算是因为如果字符中的一位在传输中被破坏了,那么接收计算机的计算结果不会与奇偶位一致,它就能报告有差错发生。
有两种奇偶校验形式,偶(even)校验与奇(odd)校验;
两者都要求发送与接收计算机使用一致的形式。
在每一种形式中,一个字符的奇偶位的计算都是很容易的。
为了得到偶校验位,发送计算机把校验位置为0或1,使得1的总数(包括校验位)是偶数。
这样,当使用偶校验时,0100101的校验位是1,因为这个字符含有奇数个1,而0101101的校验位是0,因为这个字符已经含有偶数个1。
相似地,为了得到奇校验位,发送计算机选择校验位使得1的总数是奇
数。
当一个字符到达时,接收计算机计算1的个数来检查校验位。
如果字符的所有位都无损坏地到达,接收计算机的计算结果将与发送计算机的计算结果一致。
如果在传输中干扰改变了某一位,那么接收计算机的计算结果与发送计算机的计算结果不一致,接收计算机就会报告奇偶校验错。
奇偶校验表明了网络硬件与软件实现过程中的一个重要思想:
为了检测差错,网络系统通常随数据一起发送一小部分附加信息。
发送计算机根据数据计算附加信息的值,并且接收计算机进行同样的计算来核对结果。
6.8差错检测中的概率和算术
尽管上面讨论的奇偶校验机制能很好地检测一位差错,但它不能检测所有可能的差错。
为了理解其原因,我们考虑如果传输差错改变一个字符的两位时会发生什么。
例如,偶校验是指发送计算机传输的位,包括校验位,要有偶数个1。
如果传输差错改变两位,那么有三种情况:
两个改变的位原来都是0,两个改变的位原来都是1,或者一个改变的位原来是0而另一个改变的位原来是1。
如果两个0都变成1,那么1的总个数增加了偶数个,偶校验位保持不变。
相似地,如果两个1都变成0,偶校验位还是保持不变,因为1的总个数减少了偶数个。
最后,如果一个1变成0并且一个0变成1,那么偶校验位还是保持不变,因为1的总个数也保持不变。
上面的例子表明,奇偶校验不能检测改变两位的传输差错。
事实上,奇偶校验不能检测任何改变偶数位的传输差错。
在最坏情况下,所有位是1的字符变成全0,偶校验位还是保持不变!
我们能概括为:
为帮助检测传输差错而设计的奇偶校验方案要求发送计算机为每个字符增加一个附加位,并要求接收计算机证实这个附加位是正确的。
尽管奇偶校验允许接收计算机确定是否有一位发生改变,但是它不能检测改变偶数个位的传输差错。
统计学家与工程师们分析了关于检测传输差错的问题,并且已经发明了几种代替的机制。
在每一种机制中,发送计算机把附加信息同数据一起传输,接收计算机使用这些信息来证实数
据的无损到达。
这些机制的差异表现在三个方面:
附加信息的大小(它决定了传输开销),算法的计算复杂度(它决定了创建与证实这些信息所需的计算开销),以及能检测出的差错位的个数
(它决定某种方法检测传输差错的优劣程度)。
当然,如果基础的传输系统会任意地改变位,那
么没有任何附加信息能绝对保证数据无差错到达,因为附加信息会与原始数据一样被改变。
因此,所有差错检测方法都是近似的—它们的目的是通过合理的努力来降低数据错误的概率。
6.9校验和检测差错
尽管已经设计了几种差错检测方式,但只有一些有实用价值。
许多计算机网络系统随同每个包一起发送一个校验和(checksum)来帮助接收计算机检测差错。
为了计算校验和,发送计算机把数据看成二进制整数序列并且计算它们的和。
数据并不限制为整数值—它能包含字符,浮点数或位图。
网络系统为了计算校验和,它只把数据当成整数序列处理。
例如,图6-6表明一个小的字符串的16位校验和的计算。
为了计算校验和,发送计算机把每对字符当成16位整数处理并计算校验和。
如果校验和大于16位,那么把进位一起加到最后的校验和中。
图6-612个ASCII字符的字符串的16位校验和计算的实例。
字符分成16位一组,使用16进制加法,进位也要加到最后的结果
校验和方法既有优点也有缺点。
主要的优点是计算的容易性与校验和的大小。
大多数网络应用16位或32位的校验和技术,为每一个包计算一个校验和。
检验和的小尺寸意味着传输校验和的费用比传输数据的费用小很多。
另外,因为校验和只要求加法,所以创建或核对校验和所需的计算量很小。
校验和的缺点是不能检测所有常见错误。
例如,图6-7中的表显示出当四个数据项中的某一位都取反时,校验和用来检测这样的传输差错是不够的(把这个例子扩展到整个包时,我们
可以想象这四个改变的数据项多次发生)。
尽管有这些改变,接收计算机还是认为包有正确的校验和。
二进制数据项
校验和的值
合计
图6-7校验和不能检测传输差错的图解。
每个数据项的第二位取反产生相同的校验和
6.10循环冗余校验检测差错
网络系统怎样才能在不增加每个包的附加信息量的情况下检测出更多的差错?
答案就是循环冗余校验(CyclicRedundancyCheck,CRC)技术(CRC技术除了用于计算机网络,还用于
验证记录在存储设备上的数据的正确性,如磁盘)。
它能比校验和检测出更多的差错。
尽管
CRC机制可以用数学方法来分析,但其简单和巧妙的特点只能通过理解其硬件实现来体会。
我们将简要地分析一下基础的硬件部件,然后看看它们怎样被组合在一起来产生工作系统。
计算CRC的硬件使用两个简单的部件:
一个移位寄存器(shiftregister)与一个异或
(exclusiveor或xor)单元。
图6-8显示了硬件用来产生两个输入的异或输出所使用的图表。
第二个用来计算CRC的硬件设备是
一个移位寄存器。
我们能把移位寄存器
看成一个管道,一个文件的位串从左到右通过该管道移动。
移位寄存器只能保存固定数目的位(例如,移位寄存器可能有16位),所以每次一个新的位移入时必须有一位移出寄存器。
我们可以假设
输出ab
图6-8
ab输出
每个移位寄存器都有一个输出,它就是
最右面的位的值。
输出随着该位的变化而变化。
a)计算异或的硬件图,b)输入值四种组合所对应的输出值。
这样的硬件单元用来计算CRC
理论上讲,一个移位寄存器有两个操作:
初始化(initialize)与移位(shift)。
当初始化时,移位寄存器把所有位置为0。
结果是它的输出也是0。
当移位时,移位寄存器瞬时把所有位向左
移一个位置,把最右面的位置作为当前的输入,把最左面的位作为输出。
图6-9表明在移位操作时位的值怎样移动以及输出怎样改变。
移位寄存器
11
10110
01
01101
a)b)
输出值被移入的值
输出值改变
输入值移入
图6-9移位寄存器
a)移位操作前b)移位操作后。
在移位时,每一位向左移一个位置,最左面的位作为输出
理解改变移位寄存器的输入值不会使该值进入寄存器这一点是很重要的—移位寄存器仅仅在移位操作发生的一瞬间读它的输入。
例如,图6-9a)表明尽管输入是1,移位寄存器最右面的位还是保持0直到移位发生的那瞬间。
6.11模块联接
图6-10表明三个移位寄存器与三个异或单元是怎样结合以便用来计算16位的CRC的。
这种硬件并不昂贵,也容易制造。
如图所示,硬件包括三个分别与异或单元相连的移位寄存器。
最左面移位寄存器的输出同时到三个地点:
即三个异或单元。
在这个例子中,移位寄存器分别有5,7和4位。
为了计算CRC,所有移位寄存器中的值都被初始化为0,并且消息的位串一次移入一位(事实上有几种CRC算法,它们的区别在于三个移位寄存器分配的位数和使用的初始值)。
这就是说,消息的每一位在最右面的异或单元标记为“输入”的地方作为输入,所有三个移位寄存器同时进行移
位操作。
硬件对消息的每一位重复这样的操作。
在整个消息都被移入该设备后,移位寄存器中
包含消息的16位CRC。
接收计算机使用相同的硬件来计算一个接收到的消息的CRC,并且证实它是否与发送计算机传输的CRC相一致。
输入
图6-10用来计算CRC的硬件图。
在一个消息的位串移入这些单元后,移位寄存器中包含该消息的16位CRC
为了简化对CRC的校验,标准CRC算法对上述机制进行了很小的修改—当计算CRC时,发送方在消息末尾临时附加16位0。
从数学上来说,附加的0相当于对原来的CRC取反,这种性质对接收方有利。
原来接收方需要先计算所接收到消息的CRC,然后和所接收到的CRC相比较。
添加16位0后,接收方只需对所接收到的消息和CRC一起计算CRC,如果所有位都正确接收,最后计算的结果应该为0。
这种技术十分有效,因为硬件能够快速比较一个16位值是否为0。
直觉上讲,有两个原因说明CRC比检验和能检测到更多的差错。
第一,因为每一位输入都要经过所有三个移位寄存器,所以消息的每一位都能在很大程度上影响最后计算的CRC。
第二,
因为硬件使用反馈技术使得最左面移位寄存器的输出影响所有的异或单元,消息的每一位对移
位寄存器的影响被循环多次。
从数学上来看,CRC使用一个以X的幂表示的多项式来除消息。
图6-10所对应的多项式为:
P(X)=X16+X12+X5+1
6.12突发错误
可以从数学上证明CRC能比检验和检测出更多的差错。
CRC对两种类型的常见差错尤为有效。
首先,硬件的失效有时会破坏某些特定的数据位。
例如,一个失效的面向字符的I/O设备可能会将所有字符的前两位都设置为0。
这种差错有时被称为垂直差错(verticalerrors),因为如果把每个字符排成一行,出错位出现在某些垂直的列上。
CRC能比校验和更有效地检测垂直差错。
其次,对于那些在某个位置附近因为一部分位的改变而引起的差错,CRC特别有用。
这样的差错叫做突发性差错(burstError)。
检测突发性差错是很重要的,因为这些差错正说明了网络硬件必须处理的那部分问题。
例如,由雷击,或数据电缆附近电机的启动所产生的电子干扰,
经常导致突发性差错。
6.13帧格式和差错检测机制
网络通常把差错检测信息与每一帧相联系。
发送计算机计算那些信息,例如校验和与CRC,并把这些附加信息与帧中的数据一起传输。
接收计算机计算相同的值并与到达帧中的附加信息比较。
例如,图6-11显示了图6-3中的简单的帧格式可以扩展成在eot后带16位CRC的格式。
已字符填充的数据块
CRC
图6-11带16位CRC的帧格式的实例。
尽管帧内的数据需要字节充填,但eot后的CRC不需要字节充填
帧格式使用字节充填代替数据中字符soh,eot,esc的每次出现。
CRC也需要字节充填吗?
确
切的回答依赖于需要检测的错误的类型。
因为CRC可以包含任意的位串,所以CRC中的两个8
位值都可能对应于一个特
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络基础 中文版 word可编辑006 计算机网络 基础 word 编辑 006
![提示](https://static.bdocx.com/images/bang_tan.gif)