大家好,今天小编来为大家解答谢希仁 计算机网络第五版:第三章 数据链路层(一)学习笔记这个问题,很多人还不知道,现在让我们一起来看看吧!
广播通道是一对多的广播通信方式,比较复杂。广播通道上连接着许多主机,因此必须使用共享协议来协调这些主机的数据发送。
本文首先介绍点对点通道以及该通道上常用的点对点协议PPP。然后我们讨论共享通道LAN 和相关协议。
我们可以想象,数据在数据链路层从左到右水平传输:
图片来自简书App
图片来自简书App。每个链路层可以使用不同的数据链路层协议。
一、使用点对点信道的数据链路层
1.数据链路和帧
链路和数据链路不是同一回事。
链路:从一个节点到相邻节点的物理线路,中间没有任何其他交换节点。通信时,存在很多这样的链接,因此链接只是路径的组成部分。 (物理链接)
数据链路:是指在物理线路上添加协议来控制数据传输的硬件和软件。 (逻辑链接)
早期的数据通信协议也称为过程,因此在数据链路层,过程和协议是同义词。
帧:点对点通道的数据链路层的协议单元。数据链路层将网络层传递下来的数据分成帧发送到链路,并取出接收到的帧中的数据交给网络层。在互联网中,网络层协议数据单元是IP数据报(或简称为数据报、数据包、数据包)。
图片来自简书App 点对点通信步骤: 节点A的数据链路层将网络层移交的IP数据报添加头和尾,封装成帧。 节点A将封装后的帧发送给节点B的数据链路层。 节点B的数据链路层收到的帧如果没有错误,则从收到的帧中取出IP数据报,交给A节点。网络层之上,否则该帧将被丢弃。
数据链路层不必考虑物理层如何实现比特传输的细节。甚至可以更简单地想象,帧是沿着两个数据链路层的水平方向直接相互发送的。
2.三个基本问题
封装和装框(framing)
在一段数据的前后添加一个头部和一个尾部,然后组成一个帧来进行帧定界。
发送帧时,从帧的开头开始。各种数据链路层协议必须明确定义帧头和帧尾的格式。为了提高帧的传输效率,帧的数据部分的长度应尽可能大于帧头和帧尾的长度。但各个数据链路层协议都规定了帧数据部分长度的上限,——个最大传输单元MTU(最大传输单元)。
另外:当数据是由可打印的ASC2代码组成的文本文件时,可以使用特殊的帧定界符进行帧定界。 ASC2码是一个7位码,总共可以组成128种不同的ASC2码,其中95种是可打印的,33种是不可打印的。
SOH:头的开始,十六进制编码为01。
EOT:传输结束,十六进制编码为04。
帧定界符的作用:错误控制。假设发送端在发送一帧之前突然出现故障,导致发送中断。但很快就恢复正常了,于是又从头开始发送未发送的帧。由于帧定界符的使用,接收端知道之前接收到的数据是一个不完整的帧(只有帧头起始符号SOH,没有传输结束符号EOT),必须丢弃。稍后收到的数据具有明确的帧分隔符(SOH 和EOT),因此这是一个完整的帧,应该被接受。
透明传输
如果传输数据中8 位的任意组合与用于帧定界的控制字符的位编码相匹配,则会发生帧定界错误。
当传输的帧由文本文件组成时,数据部分中不会出现SOH或EOT等帧定界控制字符。无论什么字符都可以放入这样的帧中进行传输,所以这样的传输是透明传输。
当传输的帧是具有非ASC2 代码的文本文件时,情况有所不同。数据链路层会错误地找到帧边界,接受部分帧(误认为是完整帧),其余部分找不到SOH而被丢弃。
解决透传问题:
发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”之前插入转义字符“ESC”(其十六进制编码为1B)。
字节填充或字符填充: 接收端的数据链路层在将数据发送到网络层之前删除插入的转义字符。
如果数据中还出现转义字符,则应在转义字符之前插入转义字符。当接收端收到连续两个转义字符时,第一个被删除。
错误检测
误码:比特在传输过程中,1变成0,0变成1。
误码率BER(误码率):一段时间内传输的错误比特数与传输比特总数的比率。它与信噪比有关。提高信噪比可以降低误码率。
通信链路并不理想,因此有错误检测措施。
循环冗余校验CRC(循环冗余校验)
在发送端,数据首先被划分为祖先,假设每组有K位。现在假设要传输的数据是M=101001 (k=6)。那么CRC运算就需要在待传输数据的末尾添加n位冗余码进行检测。可以简单理解为在数据后面加n个零,总共发送(k+n)位。
假设n=3,则循环冗余测试的除数为101001000。除数由通信双方商定。现在常用的方法是用多项式来表示除数。例如,P(x)=x^3+x^2+1(生成多项式),得到除数P=1101。现在您可以开始检查了。注意除数P的位数等于n+1。运算方法与除法类似,只不过减法变成了异或。运算后余数为001,称为帧校验序列FCS。
到目前为止完成的所有操作都仅在发送端执行。为了检查帧是否已被无误码地接收,在接收端进行检查。计算出的帧校验序列FCS将附加在帧尾部一起发送。
检测:
接收端以帧为单位对接收到的数据进行CRC检测:接收端收到后,将FCS取出,添加到数据部分的末尾,得到除数101001001,再除以除数P=1101。如果余数等于0,则证明本次传输没有传输任何比特。如果余数不等于0,则证明这一帧有错误。
本段参考Ukey_的博文《数据链路层-循环冗余检验》
注意:
1、循环冗余校验CRC和帧校验序列FCS不是同一个概念。 CRC是一种检测方法,而FCS是在数据后面添加的冗余代码。 CRC 可以用作或不用作错误检测方法。
2、发送端帧检测序列FCS的生成和接收端的CRC校验都是由硬件完成,处理速度快,因此数据传输不会被延迟。
3、如果传输时数据不是按帧传输,则不能添加冗余码进行检错。因此,必须将数据分帧,在每一帧中添加冗余码,逐帧传输,然后在接收端逐帧进行错误校验。
4、如果在数据链路层仅采用循环冗余校验CRC检错技术,则只能实现帧的无错接受。即:对于接收端数据链路层接受的所有帧,我们几乎人为地假设这些帧在传输过程中没有发生错误。接收端丢弃的帧虽然收到了,但最终还是因为错误而被丢弃,即没有被接受。近似表达为:接收端数据链路层接受的所有帧都是无差错的。它可以实现无误码传输,但还不是可靠传输。
5、可靠传输是指:数据链路层发送端发送的内容,接收端接收到的内容。传输错误分为:误码、帧丢失、帧重复、帧乱序。
6. OSI的观点是数据链路层必须保证传输的可靠性。所以就有了帧编号、确认和重传机制,但互联网上广泛使用的数据链路层协议并没有使用确认和重传机制,即不要求数据链路层向上提供可靠的传输服务(成本高、成本低)。不经济)。 )。如果数据链路层发生错误,则必须进行纠正。这个任务是由上层协议(如传输层的TCP协议)来完成的。这提高了沟通效率。
二、点对点协议PPP
当通信线路质量较差时,最好在数据链路层使用可靠的传输协议。因此,能够实现可靠传输的HDLC(高级数据链路控制)成为当时流行的数据链路。道路层协议。现在已经很少使用了,多采用PPP(点对点协议)数据链路层协议。
1.PPP协议的特点
是用户计算机与ISP通信时使用的数据链路层协议。
.需要满足
(1)简单
更复杂的是TCP协议。 IP协议相对简单(提供不可靠的分组服务),因此数据链路层不需要提供比IP协议更多的功能。它不需要纠错、序列号和流量控制。当然,误码率较高的无线线路需要更复杂的链路层协议。此外,简单的协议提高了不同供应商的不同协议实现的互操作性。
接收器每次接收到帧时,都会执行CRC 校验。如果验证正确,则接受该帧。如果不正确,请将其丢弃,不要执行其他操作。
(2) 封装成帧
PPP协议必须指定特殊字符作为帧定界符(标记帧开始和结束的字符),以便接收端能够准确地找到帧的开始和结束位置。
(3) 透明度
当数据中恰好出现与帧定界符相同的位组合时,必须采取有效措施来解决问题。
(4)多种网络层协议
PPP 协议必须能够运行在同一物理链路上同时支持多种网络层协议(例如IP 和IPX)的路由器上。当点对点链路连接到LAN 或路由器时,PPP 协议还必须支持链路所连接的LAN 或路由器上运行的各种网络层协议。
(5)多种类型的链接
PPP协议不仅要支持多种网络层协议,而且要运行在多种类型的链路上。例如,串行或并行、同步或异步、低速或高速等。
(6) 错误检测
PPP协议必须能够检测接收端收到的帧并立即丢弃错误的帧。如果不及时丢弃,将会浪费大量的网络资源。
(7) 检查连接状态
PPP协议必须有一种能够及时(不超过几分钟)自动检测链路是否处于正常工作状态的机制。当故障链路在一段时间后恢复正常运行时,尤其需要这种及时检测功能。
(8) 最大传输单元
每种类型的点对点链路都是必需的。这促进了各种实现之间的互操作性。如果上层协议发送的报文过长,超过了MTU值,PPP会丢弃该帧并返回错误。强调:MTU是数据链路层帧可以承载的数据部分的最大长度,而不是帧的总长度。
(9)网络层地址协商
PPP协议必须提供一种机制,使两个通信网络层(例如两个IP层)的实体能够通过协商了解或配置彼此的网络层地址。这样保证了网络层能够传输数据包。
(10)数据压缩协商
PPP 协议必须提供一种协商数据压缩算法使用的方法。然而,PPP协议并不要求数据压缩算法标准化。
二. PPP协议不需要的功能
(1)纠错:在TCP/IP协议族中,传输层TCP协议负责可靠传输,而数据链路层PPP协议只进行错误检测。这意味着PPP协议是一种不可靠的传输协议。
(2)流量控制:在TCP/IP协议族中,TCP负责端到端的流量控制,因此链路级PPP协议不需要重复的流量控制。
(3)序列号:PPP不是可靠的传输协议,因此不需要使用帧序列号(许多流行的停等协议或连续ARQ协议都使用序列号)。 TCP负责端到端的流量控制,因此链路层PPP协议不需要重复流量控制。
(4)多点线路:PPP协议不支持多点线路(即一个主站轮流与链路上的多个站进行通信),只支持点对点的链路通信。
(5)半双工或单工链路:PPP协议仅支持全双工链路。
三、PPP协议的构成
(1) 一种将IP 数据报封装到串行链路上的方法。 PPP 支持异步链路(无奇偶校验的8 位数据)和面向位的同步链路。 IP数据报是PPP帧中的信息部分。该信息部分的长度受到最大传输单元MTU的限制。
(2)链路控制协议LCP(链路控制协议),用于建立、配置和测试数据链路连接。沟通双方可以协商多种选择。
(3)一套网络控制协议NCP(网络控制协议),每个协议支持不同的网络协议层,如IP、OSI网络层等。
2.PPP协议的帧格式
一字段的含义
F-flag,标志字段,表示帧的开始和结束,是帧的分隔符。两个连续帧之间只需要一个标志字段。如果有两个连续的标志字段,则意味着这是一个空帧,应该被丢弃。指定为0x7E。
A—地址,地址字段,指定为0xFF
C—control,控制字段,指定为0x03
A和C字段实际上并不携带PPP帧的控制信息。
协议字段——为0x0021时,PPP信息字段为IP数据报;为0xC021时,为PPP链路控制协议LCP的数据;为0x8021时,为网络层的控制数据。
FCS—使用CRC 的帧检测序列
二.字节填充(异步传输)
当信息字段与标志字段具有相同的比特组合时,必须采取一些措施来防止这种与标志字段形式相同的比特组合出现在信息字段中。
PPP使用异步传输时,定义转义字符为0x7D,并使用字节填充,如下:
(1)将信息字段中出现的每个0x7E字节转换为2字节序列(0x7D,0x5E)
(2)如果信息字段中出现0x7D字节(即出现与转义字符相同的位组合),则将0x7D转换为2字节序列(0x7D,0x5D)
(3)如果信息字段中出现ASCII码控制字符(即数值小于0x20的字符),则必须在该字符前面添加0x7D字节,并且必须更改该字符的编码。例如,如果出现0x03(控制字符是传输结束ETX),则必须将其转换为2字节序列(0x07D,0x31)
发送方进行字节填充,因此链路上传输的信息字节数超过了原来的信息字节数。但接收方收到数据后,进行与发送方字节填充相反的变换,结果是正确的。恢复原始信息。
三、零位填充(同步传输)
当PPP协议用在SONET/SDH链路上时,它采用同步传输(连续传输一系列比特)而不是异步传输(一个接一个地传输字符)。在这种情况下,PPP协议采用零位填充的方法来实现透明传输。
具体方法:
发送端扫描整个信息域(硬件实现快,软件慢),只要找到连续5个1,就立即补0。这样可以保证信息字段中不会出现6个连续的1。
在接收端,首先找到标志字段F来确定帧的边界,然后使用硬件扫描比特。当找到连续5个1时,删除后面的0,恢复原来的信息比特流。
保证透明传输:传输的数据比特流中可以传输任意的比特流组合,而不会造成帧边界判断错误。
三、PPP协议工作现状
上面我们通过PPP帧的格式讨论了PPP帧是如何组成的。但是PPP链路是如何初始化的呢?当用户拨号访问ISP时,就建立了从用户PC到ISP的物理链路。此时,用户的PC会向ISP发送一系列LCP数据包(封装成多个PPP帧)以建立LCP连接。这些数据包及其响应选择一些将要使用的PPP 参数。接下来需要进行网络层配置。 NCP 为新访问的用户PC 分配临时IP 地址。这样,用户的PC就成为了互联网上拥有IP地址的主机。
当用户通信完成后,NCP释放网络层连接,收回原来分配的IP地址。接下来,LCP释放数据链路层连接。最后释放的是物理层连接。
PPP链路的初始状态和终止状态始终是图中的链路失效状态。此时,用户的PC与ISP的路由器之间不存在物理层连接。
当用户的PC通过Modem呼叫路由器时,路由器可以检测到Modem发送的载波信号。双方建立物理层连接后,PPP进入链路建立状态,其目的是在链路层建立LCP连接。
此时,LCP开始协商一些配置选项,即发送LCP配置请求帧。这是一个PPP帧,其协议字段设置为LCP对应的代码,信息字段包含具体的配置请求。链接的另一端可以发送以下响应之一:
(1) 配置确认框:接受所有选项
(2) 配置拒绝帧:所有选项均已理解但不接受
(3)配置拒绝帧:有些选项无法识别或不可接受,需要协商
LCP配置选项包括链路上的最大帧长度、所使用的认证协议的规范(如果有)以及不使用PPP帧中的地址和控制字段(因为这两个字段的值是固定的并且有没有任何信息量,PPP帧头中这两个字节可以省略)
协商完成后,双方建立LCP链路,然后进入认证状态。该状态下,只允许传输LCP协议报文、认证协议报文和链路质量检测报文。如果使用密码认证协议(PAP),则发起通信的一方需要发送身份标识和密码。系统允许用户重试多次。如果需要更好的安全性,可以使用更复杂的密码握手认证协议CHAP(挑战握手协议)。如果身份认证失败,则进入链路终止状态。如果认证成功,则进入网络层协议状态。
在网络层协议状态下,PPP链路两端的网络控制协议NCP根据不同的网络层协议相互交换网络层特定的网络控制报文。这一步很重要,因为当今的路由器可以同时支持多个网络层协议。简而言之,PPP协议的网络层可以运行不同的网络层协议,但仍然使用相同的PPP协议进行通信。
如果PPP链路上运行的是IP协议,则在为PPP链路两端配置IP协议模块(如分配IP地址)时,必须使用NCP中支持IP的协议—— IP控制协议IPCP。 IPCP报文也被封装成PPP帧(协议字段为0x8201)并在PPP链路上传输。当在慢速链路上操作时,双方还可以协商使用压缩的TCP 和IP 标头,以减少通过链路发送的位数。
当网络层配置完成后,链路进入链路打开状态,进行数据通信。链路的两个PPP 端点可以向对方发送数据包至法国。两个PPP 端点还可以发送回显请求LCP 数据包和回显回复LCP 数据包来检查链路状态。
数据传输完成后,链路的一端可以发送终止请求LCP报文,请求终止链路连接。收到对方的终止确认LCP报文后,切换到链路终止状态。如果链路出现故障,则链路从Link up 状态转为Link Down 状态。当调制解调器载波停止时,链路返回到静态状态。
图中右框给出了PPP协议的几种状态的解释,从设备间无链路开始,到先中继物理链路,再建立LCP链路。认证通过后,NCP链路建立,即可进行数据交换。可见PPP协议不再是纯粹的数据链路层协议,它还包括物理层和网络层的内容。
三、使用广播信道的数据链路层
1.局域网的数据链路层
LAN 的优点:
(1) 具有广播功能,您可以轻松地从一个站点访问整个网络。局域网内的主机可以共享局域网内的各种硬件和软件资源。
(2)有利于系统的扩展和逐步演进,各设备的位置可以灵活调整和改变。
(3)提高系统的可靠性、可用性和生存性。
局域网的工作层跨越数据链路层和物理层。由于局域网技术中数据链路层的内容比较丰富,我们将在数据链路层章节中讨论局域网的内容,但这并不意味着局域网只与数据链路层相关。
共享通道:使众多用户能够合理、便捷地共享通信媒体资源。有两种方法:
1、静态信道划分:频分复用、时分复用、波分复用、码分复用。一旦为用户分配了频道,就不会与其他用户发生冲突。但成本较高,不适合局域网使用。
2、动态媒体访问控制:又称多点访问(multiple access),用户通信时不固定分配信道,分为随机访问(用户可以随机发送信息,但多个用户可以发送信息)任何时候信息都会发生冲突,所以必须有一个协议来解决冲突)和受控访问(用户不能随意发送信息而必须服从一定的控制,典型的代表是分散控制的令牌环局域网和集中控制的多点线路探索,或轮询,较少使用)。
一、以太网的两种标准
(1)DIX以太网V2
(2)IEEE 802.3
两个标准之间的差距很小,因此很多人将802.3 LAN称为“以太网”,尽管严格来说,以太网应该是符合DIX Ethemet V2标准的LAN。
IEEE 802 委员会将LAN 链路层分为两个子层:
(1)逻辑链路控制LLC(逻辑链路控制)与传输介质无关。无论使用什么传输介质和MAC子层LAN,对于LLC子层都是透明的。
(2)媒体访问控制MAC(media access control),与访问传输媒体相关的内容都在这一层。指信号传输所通过的各种物理环境。常用的网络介质包括电缆(如双绞线、同轴电缆、光纤)、微波、激光、红外线等。
互联网的快速发展导致TCP/IP系统中唯一常用的LAN是DIX以太网V2,而不是IEEE 802.3标准中的LAN,因此LLC的作用已经消失。很多厂家生产的适配器只有MAC协议,没有LLC协议。所以这里不考虑LLC子层。
二、适配器的作用
计算机如何连接到局域网?
通过适配器,这是一个插入主机盒的网络接口板(或者是插入笔记本电脑的PCMCIA卡),也称为网络接口卡NIC(网络接口卡),或者网卡。该适配器配备有处理器和存储器(包括RAM和ROM)。
适配器需要:
(1)转换数据串行传输和并行传输
因为适配器与局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器与计算机之间的通信是通过计算机主板上的I/O总线以并行传输方式进行的。
(2)配备缓存数据的存储芯片
因为网络上的数据速率与计算机总线上的数据速率不同
(3) 能够实现以太网协议
如果将适配器插入主板,则必须在计算机操作系统中安装管理适配器的设备驱动程序。该驱动程序稍后告诉适配器数据块应该从内存中的哪个位置发送到LAN,或者从LAN发送的数据块应该存储在内存中的哪个位置。
适配器在接收和发送各种帧时是否使用计算机的CPU?
然后CPU可以处理其他任务。当适配器接收到错误帧时,它会丢弃该帧而不通知计算机。当适配器接收到正确的帧时,它使用中断来通知计算机并将其传递到协议栈中的网络层。当计算机想要发送IP数据报时,协议栈将IP数据报交给适配器,将其组装成帧,然后将其发送到LAN。
计算机的硬件地址:在适配器的ROM中
计算机的软件地址—— IP地址:在计算机内存中
2.CSMA/CD协议
一、历史背景
之前以太网解决方案的想法是寻找一种简单的方式将距离较近的计算机互连起来,使它们能够方便可靠地进行高速数据通信。最早的以太网将许多计算机连接到总线上。总线特性:当一台计算机发送数据时,总线上的所有计算机都能检测到该数据。然而,我们并不总是希望在局域网上进行一对多的广播通信。
为了实现一对一的通信,我们可以为每台计算机的适配器指定一个与其他适配器不同的地址。发送数据帧时,接收站的地址写入帧头中。只有当数据帧中的目的地址与适配器ROM中存储的硬件地址相同时,适配器才能接收该数据帧。适配器丢弃不是发送给其自身的数据帧。
二.为了方便通讯,以太网的两种措施
(1)采用更加灵活的无连接工作方式
无需先建立连接,即可直接发送数据。适配器不对发送的数据帧进行编号,也不需要对方发回确认。这样做是因为LAN通道的质量非常好,并且错误率很小。当接收到错误帧时,将其丢弃,并由高层决定是否重传。但以太网并不知道这是否是重传帧,而是将其作为新的数据帧发送。因此,以太网提供的服务是不可靠交付,即尽力而为交付。
(2)以太网发送的数据采用曼彻斯特编码信号
二进制基带数字信号:是高低电压交替的信号。但问题是,当出现一长串1或0时,接收端无法从接收到的比特流中提取出比特同步(即比特)。同步)信号。
曼彻斯特法:将每个码元分成两个相等的区间。码元1前低后高,码元0前高后低。这保证了在每个符号的中间发生电压转换,并且接收端利用这种电压转换来容易地提取位同步信号。
缺点:它所占用的频率带宽相对于原始基带信号增加了一倍(因为每秒传输的符号数量增加了一倍)。
三如何协调公交车上计算机的工作
只要总线上有计算机发送数据,总线的传输资源就被占用。因此,一次只允许一台计算机发送信息。否则,计算机会互相干扰,没有人能够发送数据。
协议CSMA/CD
1. 含义
是Carrier Sense Multiple Access/CollisionDetection(载波侦听多路访问/冲突检测)
多点接入:表示是总线网络
载波侦听:发送前监听。每个站发送数据之前,首先要检测总线上是否有其他站发送数据。如果有,则暂时不发送数据,等待通道空闲后再发送数据。巴士上没有承运人。载波监控采用电子技术来检测总线上是否有其他计算机发送的数据信号。
冲突检测:边发送边监听,也叫冲突检测。适配器在发送数据的同时,会检测通道上信号电压的变化,以确定在发送数据的同时是否有其他站点也在发送数据。
。同时发送数据时,总线上的信号电压变化幅度大,超过一定门限值时,就认为总线上至少两个站同时在发送数据,表明有碰撞。这时总线上的信号失真,无法恢复。所以,每一个正在发送数据的站,一旦发现有碰撞,适配器就要立即停止发送,以免浪费网络资源,等待一段随机时间后再发送。 2、原理 某个站监听到总线是空闲时,总线并非一定是空闲。 电磁波在1km电缆的传输时延约为5us。因此,A向B发出的数据,在约5us后才能传到B。把总线上的单程端到端传播时延记为τ。 发送数据的站想尽早知道是否有碰撞,那么在A发送数据后,最迟经过多长时间才能知道自己发送的数据和其他站发送的数据有无碰撞?答案最多是两倍的总线端到端的传播时延(2τ),或总线的端到端往返传播时延。 本协议中,一个站不可能同时进行发送和接收。所以使用CSMA/CD协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)。 在t=0时,A发送数据。B检测到信道为空闲。 在t=τ-δ时(这里τ>δ>0),A发送数据还没到达B时,由于B检测到信道是空闲的(为什么B检测是空闲的?因为电磁波1km的传播时延是5us,换言之就是5us后B才能检测到信道是忙的,5us之前,B认为是空闲的,于是开始发送数据)。因此B发送数据。 经过时间δ/2后,即在t=τ-δ/2时,A发送的数据和B发送的数据发生了碰撞。这时,A和B都不知道发送了碰撞。 在T=τ时,只有B先检测到了发生碰撞,于是停止发送数据。 在T=2τ- δ时,A才检测到发生了碰撞,也停止发送数据。 然后A和B就随时选择一个时间,推迟,再重新发送。 由此可知,每一个站,在发送数据时,在一定时间内,都存在碰撞的可能性。称为发送的不确定性。整个以太网的平均通信量小于以太网的最高数据率时,碰撞的机会会小。 发送数据帧的A站,最多经历2τ时间就可以知道是否遭受碰撞了。我们把这2τ称为争用期,也叫碰撞窗口。 经过这个争用期时间,检测没有发生碰撞,就能肯定这次发送的数据不会发生碰撞。 至此,碰撞问题还是没有解决。专家们就发明了一种算法,来减小发生碰撞的概率,这个算法就是:截断二进制指数退避(truncated binary exponential backoff)算法。 退避算法的思想如下: (1)确定基本退避时间,就是争用期2τ。以太网把争用期2τ定为51.2us。对于10Mb/s以太网,在争用期内可发送512bit,即64字节。512bit怎么来的?就是速率乘以时间,就等于数据量。 10Mb/s*51.2us=[10*10^6b/s] * [51.2^(-6)s]=512bit (2)从离散的整数集合随机取出一个数[0,1,2,3……,(2^k-1)] ,取出来的数,记为r。重传推迟的时间就是r倍的争用期。T=r*2τ 上面k的参数,按照这个计算k=Min[重传次数,10]。 可见,当重传次数不超过10时,参数k=重传次数。如果重传次数超过10时,k就不再增加了,一直等于10。 (3)当重传达16次,仍然会不能成功时,就丢弃该帧,向高层报告。说明发送的人太多了,导致连续发送碰撞。但使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大(也称动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定。 举例: 在第一次重传时,k=1,随机数r从整数{0,1}中选一个数, 可得重传的推迟时间要么为0,要么为1*2τ, 这两个选择一个。 如果再次发送,即第二次重传,k=2,代入[0,1,2,3……,(2^k-1)] ,随机数r从整数{0,1,2,3}选一个数,可得重传推迟时间是0,2τ,4τ,6τ 这4个值随机选择一个。 同理,再次发送碰撞,以此类推。 3、注意 适配器每发送一个新的帧,就要执行一次CSMA/CD算法。适配器对过去发生过的碰撞无记忆功能。所以,好几个适配器正在执行指数退避算法时,很可能某一个适配器发送的新帧能碰巧立即成功地插入到信道中,得到了发送权。 以太网在发送数据时,如果帧的前64字节没有发送冲突,那么后续的数据就不会发送冲突。换句话说,就是如果发送冲突,就一定是在发送的前64字节之内。因为检测到冲突就停止发送,这时已经发送出去的数据一定小于64字节。因此以太网规定了最短有效帧长为64字节,只要长度小于64字节的帧都是由于冲突而异常中止的无效帧。收到这种无效帧就立即丢弃。 以太网的端到端时延实际上是小于争用期的一半(即25.6us)。争用期被定为51.2us,不仅是考虑了以太网的端到端时延,而且还包括其他因素,如转发器内的时延、强化碰撞的干扰信号的持续时间等。 4、以太网最小帧是64字节的原因 首先说一下时隙,时隙在一般的数字通信原理中是这样定义的:由各个消息构成的单一抽样的一组脉冲叫做一帧,一帧中相邻两个脉冲之间是时间间隔叫做时隙。 以太网的时隙有它自己的特定意义: a.在以太网CSMA/CD规则中,若发生冲突,则必须让网上每个主机都检测到。但信号传播到整个介质需要一定的时间。 b.考虑极限情况,主机发送的帧很小,两冲突主机相距很远。在A发送的帧传播到B的前一刻,B开始发送帧。这样,当A的帧到达B时,B检测到了冲突,于是发送阻塞信号。 c.但B的阻塞信号还没有传输到A,A的帧已发送完毕,那么A就检测不到冲突,而误认为已发送成功,不再发送。 d.由于信号的传播时延,检测到冲突需要一定的时间,所以发送的帧必须有一定的长度。这就是时隙需要解决的问题。 这里可以把从A到B的传输时间设为T,在极端的情况下A要在2T的时间里才可以检测到有冲突的存在。 (1)理想情况下,电磁波在1KM电缆的传输时延约为5us(这个数字应该记下来)。 (2)在10Mbps的以太网中有个5-4-3的问题:10Mbps以太网最多只能有5个网段,4个转发器,而其中只允许3个网段有设备,其他两个只是传输距离的延长。按照标准,10Mbps以太网采用中继器时,连接最大长度为2500米。 那么在理想的情况下,时隙可以为2500/1000*5*2us=25us,但是事实上并非如此简单,实际上的时隙一定会比25us大些,比如中继转发延时等干扰。IEEE将10M以太网的时隙定义为512比特时,即51.2us。 对于10Mbps以太网来说,10Mb/s*51.2us=512bit,所以一般说的512bit时隙长度就是这样来的。这个长度为512/8=64字节,即最小帧长度64字节。以太网在发送数据时,如果在前面64字节没有发生冲突的话,那么后续的数据就不会发生冲突,以太网就认为这个数据的发送是成功的。 5、强化碰撞措施 发送数据的站一旦发现了碰撞,除了立即停止发送数据外,还要继续发送32或48比特的人为干扰信号(jamming signal),以便让所有用户都知道已经发生了碰撞。对于10Mb/s以太网,发送32(或48)比特只需要3.2(或4.8)us。 A、B站知道发生碰撞后,也要发送人为干扰信号。碰撞使A浪费时间Tb+Tj,可是整个信道被占用的时间还要增加一个单程端到端的传播时延τ。因此总线被占用时间是Tb+Tj+τ。 帧间最小间隔为9.6us,相当于96比特时间。这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。 CSMA/CD协议的要点: ①准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中,准备发送; ②检测信道:若适配器检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在96比特时间内信道保持空闲,就发送这个帧; ③在发送过程中仍不停地检测信道,若一直未检测到碰撞,就顺利把这个帧发送完毕。若检测到碰撞,则中止数据的发送,并发送人为干扰信号。 ④在中止发送后,适配器就执行指数退避算法,等待r倍512比特时间后,返回步骤2。四、使用广播信道的以太网
1.使用集线器的星形拓扑
传统以太网最初是用粗同轴电缆,后用较便宜的细同轴电缆,后用更便宜更灵活的双绞线。它采用星形拓扑,星形中心有可靠性非常高的设备,叫集线器(hub,使用了大规模集成电路芯片所以可靠性高)。双绞线以太网总是和集线器配合使用的。每个站需要用两对无屏蔽双绞线(做在一根电缆内),分别用于发送和接收。 双绞线要能传送高速数据,需要绞合度非常精确。这样能较少失真,减少干扰。 集线器的特点: 主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。 ①使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议(各站中的适配器执行协议)。网络中的各站必须竞争对传输媒体的控制,并且在同一时刻至多只允许一个站发送数据。 ②一个集线器有很多接口,像一个多接口的转发器。 ③工作在物理层,每个接口只是简单地转发比特,不进行碰撞检测。 ④采用了专门的芯片,进行自适应串音回波抵消。这样就可使接口转发出去的较强信号不致对该接口收到的较弱信号产生干扰(这种干扰即近端串音)。每个比特在转发前还要进行再生整形并重新定时。 堆叠式(stackable)集线器:2.以太网的信道利用率
假定发送帧需要时间T0,它等于帧长(bit)除以发送速率。成功发送一个帧需要占用信道时间是T0+τ,多一个τ是因为一个站发送的最后一个比特还要在以太网上传输。所以经过时间T0+τ后以太网的媒体才能完全进入空闲状态,才能允许其他站发送数据。 要提高以太网的信道利用率,就必须减小t与T0之比。在以太网中定义了参数a,它是以太网单程端到端时延t与帧的发送时间T0之比: a=t/T0 当a→0时,表示只要一发生碰撞,就立即可以检测出来,并立即停止发送,因而信道资源不会被浪费。反之,参数a越大,表明争用期所占的比例增大,这就使得信道利用率降低。因此,以太网的参数a的值应当尽可能小些。 从上式可看出,这就要求分子t的数值要小些,分母T0的数值要大些。这就是说,当数据传输速率一定时,以太网的连线的长度受到限制(否则t的数值会太大),同时以太网的帧长不能太短(否则T0的值会太小)。 现在考虑一种理想化的情况。假定以太网上的各站发送数据都不会产生碰撞(这显然已经不是CSMA/CD,而是需要使用一种特殊的调度方法),并且能够非常有效地利用网络的传输资源,即总线一旦空闲就有某一个站立即发送数据。这样,发送一帧占用线路的时间是T0+t,而帧本身的发送时间是T0。于是我们可计算出极限信道利用率Smax为: Smax=T0/(T0+t)=1/(1+a) 该式指出了参数a远小于1才能得到尽可能高的极限信道利用率。反之,若参数a远大于1,则极限信道利用率就远小于1,而这时实际的信道利用率就更小了。3.以太网的MAC层
1.MAC 层的硬件地址 在局域网中,硬件地址又称为物理地址、MAC地址(因为这种地址用在MAC帧中)、链路地址。 Ⅰ、含义 是指局域网上的每一台计算机中固化在适配器的ROM中的地址(因此也叫适配器地址或适配器标识符EUI—48),由硬件厂商决定,是不会变的。只要适配器不变,它就不变。它是每一个站的“名字”或标识符。如果连接在局域网上的主机或路由器安装有多个适配器,那么这样的主机或路由器就有多个“地址”,也就是说,这种48位地址应当是某个接口的标识符。 Ⅱ、组成 起初,人们认为用两个字节(16位)表示地址就够了,但是后来希望在各地的局域网中的站具有互不相同的物理地址。为了使用户在买到适配器并把机器连到局域网后马上就能工作,而不需要等待网络管理员给他分配一个地址,IEEE 802 标准就规定MAC地址字段可采用6字节(48位)或2字节(16位)这两种中的一种。6字节地址字段可使全世界所有的局域网适配器都具有不相同的地址,现在的局域网适配器都用的这种。 6字节中的前3字节:由IEEE的注册管理机构RA(registration authority,局域网全球地址的法定管理机构)负责分配,所有生产局域网适配器的厂家必须向IEEE购买这3个字节构成的号(即地址块),这个号的正式名称是组织唯一标识符OUI(organizationlly unique identifier),也叫公司标识符(company_id)。 24位的OUI不能单独标志一个公司,因为一个公司可能有几个OUI,也可能几个小公司合起来购买一个OUI。 第1字节的最低位:I/G(individual/group)位,为0时,地址字段表示一个单个站地址;为1时表示组地址,用来多播。 注意:有的书把上述最低位写为“第一位”,但“第一”含糊不清,因为地址记法有两种:一种是把每一字节的最低位写在最左边(最左边的最低位是第一位),IEEE 802.3 是这种记法,发送数据时先发最低位;二种是把每一字节的最高位写在最左边(最左边的最高位是第一位),发送数据时先发最高位。 第1字节的最低第二位:IEEE考虑到有人不愿意购买OUI,因此把此位规定为G/L(global / local)位。为1时是全球管理(保证在全球没有相同地址),厂商向IEEE购买的OUI都属于全球管理。为0时是本地管理,用户可任意分配网络上的地址,采用2字节地址字段时全都是本地管理。以太网几乎不适用这个G / L 位。 6字节中的后3字节:厂家自行指派,称为扩展标识符(extended identifier),保证无重复地址即可。 用以上方式得到的48位地址称为MAC—48,通用名称是EUI—48。(extended unique identifier),它不仅用于局域网的硬件地址,还可哟关于软件接口。 当路由器通过适配器连接到局域网时,适配器上的硬件地址就用来标志路由器的某个接口。路由器如果同时连接到两个网络上,那么它就需要两个适配器和两个硬件地址。 Ⅲ、适配器的重要功能 ①进行串行/并行转换 ②对数据进行缓存 ③在计算机的操作系统安装设备驱动程序 ④实现以太网协议 ⑤适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址。如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。 这里发往本站的帧有三种: 一是单播(unicast)帧(一对一),即收到的帧的MAC地址与本站的硬件地址相同。 二是广播(broadcast)帧(一对全体),即发送给本局域网上所有站点的帧(全1地址)。 三是多播(multicast)帧(一对多),即发送给本局域网上一部分站点的帧。 所有的适配器都至少应当能够识别两种帧,即能够识别单播和多播地址。有的适配器可用编程方法识别多播地址。当操作系统启动时,它就把适配器初始化,使适配器能够识别某些多播地址。显然,只有目的地址才能使用广播地址和多播地址。 以太网还可设置混杂方式(promiscuous mode),工作在混杂方式的适配器只要“听到”有帧在以太网上传输那就悄悄接收下来,而不管是发往哪个站,当然不中断。黑客利用这种方法非法获取网上用户的口令。但这种方式可帮助网络维护和管理人员监视和分析以太网上的流量,以便找出提高网络性能的具体措施。嗅探器(sniffer)使用了设置为混杂方式适配器,可帮助学习网络的人员更好理解各种网络协议的原理。 2.MAC帧的格式 有两种标准,一种是DIX Ethernet V2 标准(即以太网V2标准),另一种是IEEE的802.3标准。这里只介绍使用的最多的以太网V2的MAC帧的格式。图假定网络层使用的是IP协议。 类型字段:用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。 数据字段:最小长度是46字节(64字节减去18字节的首部和尾部) FCS字段:帧检测序列(使用CRC检验) Ⅰ、MAC以太网子层如何知道从接收到的以太网帧中取出多少字节的数据交付给上一层协议? 曼切斯特编码:每一个码元的正中间一定有一次电压的转换,发送方把一个码元发送完后,就不再发送其他码元了,因此电压不再变化。这样接收方就很容易找到以太网帧的结束位置。在这个位置往前数4字节(FCS长度是4字节),就能确定数据字段的结束位置。 Ⅱ、数据字段小于46字节,即以太网的MAC帧长小于64字节怎么办? 注意到,MAC帧的首部没有指出数据字段的长度是多少。在有填充字段后,接收端的MAC子层在剥去首部和尾部后就把数据字段和填充字段一起上交给上层协议。那么,上层协议如何知道填充字段长度?(IP层不需要填充字段)上层使用IP协议时,首部有一个“总长度”字段,“总长度”加上填充字段长度,应等于MAC帧数据字段长度。 Ⅲ、传输媒体上实际传送的为什么要比MAC帧多8个字节? 因为当一个站在刚开始接收MAC帧时,由于适配器的时钟尚未与到达的比特流达成同步,因此MAC帧的最前面的若干位无法接收,结果使整个的MAC成为无用的帧。为了接收端迅速实现位同步,有了这8字节(硬件生成)。 有两个字段组成。第一个字段是7字节的前同步码(1和0交替码),作用是使接收端的适配器在接收MAC帧时能迅速调整其始终频率,使它和发送端的时钟同步,即“实现位同步”(比特同步)。第二个字段是帧开始界定符,定义为10101011,前6位作用和前同步码一样,最后连续的1是要告诉接收端适配器:MAC帧的信息马上就要来了,请适配器注意查收。 MAC帧的FCS字段的检查范围不包括前同步码和帧开始界定符。 在使用SONET / SDH进行同步传输时不需要用前同步码,因为在同步传输时收发双方的位同步总是一直保持着的。 Ⅳ、为什么以太网不需要使用帧结束定界符,也不需要使用字节插入来保证透明传输? 这是因为在以太网上传送数据时是以帧为单位的,传送帧时各帧之间有间隙。因此,接收端只要找到帧开始定界符,其后面的连续到达的比特流就都属于同一个MAC帧。 Ⅴ、IEEE 802.3 规定的无效帧 ①帧的长度不是整数个字节 ②用收到的帧检测序列FCS查出有差错 ③收到的帧的MAC数据字段的长度不在46~1500字节之间。 无效帧直接丢弃,以太网不负责重传。 Ⅵ、IEEE 802.3 规定的MAC帧格式与以太网V2 MAC帧格式的区别 ①IEEE 802.3 规定的MAC帧的第三个字段是“长度 / 类型”。这个值大于0x0600(相当于十进制的1536),就表示“类型”。这样的帧和以太网V2 MAC帧完全一样。只有当这个值小于0x0600时,才表示“长度”,即MAC帧的数据部分长度。显然,数据字段的长度与长度字段的值不一致时,是无效的帧。而由于以太网使用了曼切斯特编码,长度字段无意义。 ②“长度 / 类型”字段值小于0x0600时,数据字段必须装入上面的LLC子层的LLC帧。 由于广泛使用的局域网只有以太网,所以LLC帧失去了原来的意义。五、扩展的以太网
在物理层和链路层扩展,这样扩展的以太网在网络层看来仍然是一个网络。1.在物理层扩展以太网(集线器)
以太网上的主机之间的距离不能太远,否则主机发送的信号经过铜线的传输会衰减到使CSMA/CD协议无法正常工作。过去使用粗缆或细缆以太网时,常使用工作在物理层的转发器来扩展以太网的地理覆盖范围。那时,两个网段可用一个转发器连接起来。IEEE 802.3标准还规定,任意两个站之间最多可以经过三个电缆网段。但随着双绞线以太网成为以太网的主流类型,扩展以太网的覆盖范围已很少使用转发器了。 现在,扩展主机和集线器之间的距离的一种简单方法就是使用光纤(通常是一对光纤)和一对光纤调制解调器。 光纤调制解调器的作用就是进行电信号和光信号的转换。由于光纤带来的时延很小,并且带宽很高,因此使用这种方法可以很容易地使主机和几公里以外的集线器相连接。 上图好处:使不同系的以外网可以进行跨系通信,另外扩大了以太网的覆盖范围。 上图缺点:①每一个系的 10BASE-T 以太网是一个独立的碰撞域(collision domain,又称冲突域),即在任一时刻,每一个碰撞域中只能有一个站在发送数据,每一个系吞吐量是10Mb/s,连在一起后还是10Mb/s,而不是30Mb/s。当某个系的两个站在通信时所传送的数据会通过所有的集线器进行转发,使得其他系的内部在这时都不能通信(一发送就碰撞)。 ②如果不同的系使用不同的以太网技术(如数据率不同),那么就不可能用集线器互连。如有三个系分别为10Mb/s、10Mb/s、100Mb/s,那么用集线器连接起来后,大家都只能工作在10Mb/s的速率。集线器基本是个多接口(即多端口)的转发器,它不能把帧进行缓存。 集线器、交换机、路由器的比较 参考博文《集线器交换机区别》 集线器:共享带宽、半双工,在物理层 交换器:独享带宽、全双工,在链路层 如果用最简单的语言叙述交换机与集线器的区别,那就应该是智能与非智能的区别。集线器说白了只是连接多个计算机的网络设备,它只能起到信号放大和传输的作用,不能对信号中的碎片进行处理,所以在传输过程中容易出错。而交换机则可以看作为是一种智能型的集线器,它除了拥有集线器的所有特性外,还具有自动寻址、交换、处理的功能。并且在数据传递过程中,发送端与接受端独立工作,不与其它端口发生关系,从而达到防止数据丢失和提高吞吐量的目的。谢希仁 计算机网络第五版:第三章 数据链路层(一)学习笔记和的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!
【谢希仁 计算机网络第五版:第三章 数据链路层(一)学习笔记】相关文章:
用户评论
终于开始看第五版的计算机网络教材啦!
有9位网友表示赞同!
数据链路层的知识点我记得好像不太深啊,需要好好review一下。
有11位网友表示赞同!
谢希仁老师的笔记一直都是很不错的讲解,感觉更容易理解。
有15位网友表示赞同!
这个章节内容应该蛮重要的吧,因为是网络的基础组成部分
有13位网友表示赞同!
不知道数据链路层的实现会涉及哪些协议和技术?
有10位网友表示赞同!
期待能够深入了解MAC地址的工作原理。
有18位网友表示赞同!
看完笔记之后会不会做对应的练习题测试一下呢?
有18位网友表示赞同!
看来这章要好好研究了,感觉是掌握网络的敲门砖
有18位网友表示赞同!
谢希仁老师的教学风格我很喜欢,很系统、清晰易懂
有17位网友表示赞同!
学习计算机网络真是个有趣的过程!
有7位网友表示赞同!
准备花点时间认真阅读这篇笔记,争取能够理解透彻
有14位网友表示赞同!
数据链路层的实现应该会有很多具体的技术细节,挺期待的
有10位网友表示赞同!
希望这个章节能讲清楚几种常见的帧格式和传输模式呢!
有12位网友表示赞同!
我已经买到第五版的教材了,正在规划学习路线。
有20位网友表示赞同!
谢希仁老师的笔记确实很详细,帮助我补足了一些知识点
有11位网友表示赞同!
数据链路层是网络基础的关键组成部分,必须好好理解
有10位网友表示赞同!
最近在学习网络编程,这个章节应该对我有很大帮助!
有11位网友表示赞同!
希望能学到更多关于网络安全方面的知识,特别是在数据链路层
有11位网友表示赞同!
期待这个章节能给我一些新的启发和思路!
有8位网友表示赞同!
祝大家学习愉快,都能顺利掌握数据链路层的知识!
有10位网友表示赞同!