【计算机网络——谢希仁】链路层

it2025-06-27  11

链路:从一个结点到相邻结点的一段物理线路(有线或无线),中间没有任何其他的交换节点。也可以叫物理链路。 数据链路:物理线路+必要的通信协议,通常使用网络适配器(既有硬件,也包括软件)来实现这些协议。也可以叫逻辑链路。

链路层主要使用这两种信道: 1.点对点信道:一对一的点对点通信方式,协议数据单元——帧。 2.广播信道:一对多的广播通信方式 数据链路层负责将网络层的消息打包成帧,发送到链路上,和拆帧把数据给网络层。

数据链路层的三个基本问题

1.封装成帧: 在一段数据的前后分别添加首部和尾部(首尾重要作用——帧定界),就构成了一个帧。在互联网上传输的数据都以分组(即ip数据报)为传送单位。分组的长度要尽可能大于首尾部长度,以避免头重脚轻,资源浪费。每一种链路协议层都规定了帧的数据部分长度,也就是分组长度,不能超过最大单元MTU(Maximum Transfer Unit)。 帧长度=分组长度+首尾段长度 当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。ASCII码是七位编码,一共可以组成128个码。 128个ASCII码=95个可打印ASCII码+33个不可打印ASCII码 SOH和EOT是帧定界符 SOH(Start Of Header)位于帧首部,表帧开始。 EOT(End Of Transmission)位于帧尾部,表帧结束。 定界符是ASCII码,是由我们从键盘上输入的,如下图,我们一般不会输入^A和^D这样的字符,所以它们可以起到定界作用。 SOH和EOT的十进制和十六进制 如果数据传输错误,帧定界符也能起到重要作用。 比如说发送端发送一个帧时出错,但是很快又恢复正常,又会重新从头发送帧(没发送EOT),这时接收方就接到两个SOH,就知道出错了,会丢弃前一段的残缺帧。 由于我们不会输入SOH和EOT这样的字符,所以不用担心意外输入导致帧定界出错,这样的传输就是透明传输。 2.透明传输: 如果数据不是ASCII码的文本文件时(如二进制代码的计算机程序或图像等),有可能会出现某个字节的二进制代码与EOT和SOH相同,导致帧定界错误。 为了防止这样的情况出现,就得将数据中出现的EOT和SOH进行转义,可以在控制字符前加上转义字符“ESC”(类似C语言里面的转义符号“\”),这种方法称为字节填充(byte stuffing)或字符填充(character stuffing)——将ESC填进去,那么内容中又出现ESC呢?就在ESC前再加一个ESC(俄罗斯套娃)。

3.差错检测 现实中总会出些差错,比如说比特传输中,0变1,1变0,这种被称为比特差错。为了提高可靠性,现在数据链路层普遍使用循环冗余校验CRC(Cyclic Redundancy Check)来进行差错校验。 CRC运算就是通过模二运算在数据后添加冗余码,构成一个可以检错的帧。 模二运算:进行加法不进位,减法不借位,除法相当于退位减法,所以也不借位。等同于异或运算。

发送方,得到n位冗余码的具体运算: 1.数据D(k位)和2^n相乘,等于加了n位0。(总长n+k位) 2.第一步得到的数,模二除以事先约定的数G(n+1)位。得到R(n位冗余码) R也被称为帧检验序列FCS(Frame Check Sequence)。最终发送的帧是 数据+FCS,共(k+n)位。 接收方,进行CRC检验: 将接收到的帧,都模二除G(除数),如果余数是0,那么就是正确的——模二除相当于减法,比如说6/4=2(发送6+2=8),接收8/4=0,如果发送错误(6+1=7),接收7/4!=0 数据链路层若只使用CRC,只能做到对帧的无差错接受,无差错指的是——错的都被扔了,接收的差不多都对。

点对点协议PPP

以前流行高级数据链路控制HDLC(High-level Data Link Control),现在流行更简单的点对点协议PPP(Point-to-Point Protocol)。 PPP协议是计算机和ISP(互联网服务提供商)通信时所使用的数据链路协议。 PPP协议满足的要求: 1.简单:接收方每收到一个帧,就进行CRC检验,错误就丢弃,正确就收下。 2.封装成帧:规定特殊的帧定界符(就是前面基本问题——透明传输),使得接收端可以准确找出帧的起始。 3.透明性:数据中出现了和帧定界符一样的情况,如何处理。 4.多种网络层协议:必须能够在同一条物理链路上支持多种网络层协议。 5.多种类型链路:必须能够再多种类型的链路上运行——串行、并行、同步或异步、低速或高速,等等。 6.差错检测:及早发现错误,防止带宽浪费 7.检测连接状态:自我恢复 8.最大传送单元 :如果超过数据部分MTU(Maximum Receive Uint),就丢弃该帧。 9.网络层地址协商 10.数据压缩协商 这里F(Flag)位于帧的首尾,是标志字段,用于表示一个帧的开始或结束。 A(Address)和C(Contrlol)都没屌用。 字节填充: 如果PPP协议使用异步传输,它把转义字符定义为0x7D,并把冲突相同的字节变为2字节序列,以此区别标志字段,如果信息字段中出现了0x7D(和转义字符相同),就把它变为(0x7D,0x5D);如果出现0x7E(和标志字段相同),就把它变为(0x7D,0x5E). 零比特填充: 假设PPP使用同步传输(一连串的比特连续发送,而不是一个个),发送端先扫描整个信息字段,如果发现了5个连续的1(F也有5个1),就立马在里面放个0,接收端发现这个序列,会把0删除用以还原。

使用广播信道的数据链路层

为了使数据链路层能更好地适应多种局域网标准,局域网的数据链路层拆成两个子层: 逻辑链路控制 LLC (Logical Link Control)子层 媒体接入控制 MAC (Medium Access Control)子层 与接入到传输媒体有关的内容都放在 MAC子层,而 LLC 子层则与传输媒体无关,不管采用何种协议的局域网对 LLC 子层来说都是透明的 以后一般不考虑 LLC 子层(作用已经不大了) 计算机如何连接到局域网?: 通过网络接口板又称为通信适配器(adapter)或网络接口卡 NIC (Network Interface Card),或“网卡”。一般是插在电脑内部。适配器内部的ROM固化了物理地址或MAC地址(这种地址用在MAC帧中)。 每个站点的 NIC 拥有一个独一无二的 48 位 MAC 标识符 (地址)。 高 24 位为厂商的标记,低 24 位由厂商分配 点到点通信时帧中指明接收站点的标识符,接收者比对帧中目的地 MAC 是否与自己的 MAC 相符 (或者是否为广播地址),不相符即丢 弃该帧。 需要广播时利用目的地标识 0xFFFFFFFFFFFF 表示广播帧 注意:MAC 地址内的结构信息并不能帮助定位 NIC 在网络中的位置, 只能说明 NIC 的唯一性。 不同的数据链路层协议对应着不同的帧,所以,帧有多种,比如PPP帧、MAC帧等,其具体格式也不尽相同。 适配器的重要功能(实际上包含数据链路层和物理层): 前面说的协议都是规则,必须要有一个执行者,而适配器起到这样的作用:将ip数据包封帧,进行CRC检错,丢错误帧等等。 起到连接局域网的作用,电缆或双绞线(涉及物理层)。 计算机的硬件地址存在适配器的ROM中。

局域网

特点:网络为一个单位所有,且地理范围和站点数目均有限。 优点:具有广播功能,从一个站点可以很方便地访问全网。 按照网络拓扑可分为: 用集线器连接的星型网 环形网 总线网 以太网是一种基带局域网,一开始采用总线网。

为了通信简便,以太网采用以下两种措施: 1.无连接的工作方式,不必先建立连接就可以直接发送数据,尽最大努力的交付,只管发,CRC丢弃的错帧是否需要重传,丢给上一层去决定。以太网只当是新的数据帧发送,不管是不是重传帧。 2.以太网发送的数据都采用曼彻斯特编码。

载波监听多点接入/碰撞检测 CSMA/CD协议:

用来解决以太网总线网资源抢占问题: 例子:大家在开会,如果有人在发言就不能打断他,等他说完了才能说,但是如果同一时间大家都举手要发言,就很难搞了,此时CSMA/CD就像是主持人,规定发言的方法。 协议特点: 1.多点接入:说明这是总线型网络。 2.载波监听(协议实质):就是检测总线上是否有其他计算机也在发送信息,并没有用到“载波”这种技术,就是监听。不管在发送前,还是发送中,都得不停地检测信道。 3.碰撞检测(协议实质):就是边发送边监听,以便判断自己发送数据时,别人是不是也在发送判断。 为什么用了监听,还会出现同时碰撞?这是因为电磁波在总线上是有时延的,站B若在站A发送到B之前发送自己的帧,AB之间的帧就会碰撞,一旦碰撞,适配器就得立刻停止发送,以减少资源浪费。 争用期:发送的消息出发,返回至发送点(距离无线接近0),这期间所经历的时间2t,就是争用期。 只有经过“争用期”的考验,才能确保这次发送不会发送碰撞。 发生碰撞之后站点需要执行二进制指数回退算法 (BEB)。以太网取 51.2 s 为争用期的长度。 对于 10 Mb/s 以太网,在争用期内可发送512 bit,即 64 字节。 以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。因为此时信号已经充满信道。 以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。

使用集线器的星型拓扑

刚刚介绍,一开始以太网采用总线网,物理层也从粗同轴电缆,到细同轴电缆,最后到更好的双绞线,同时也采用了星型网。

10——10Mbit/s BASE——基带信号 T——双绞线 星型网的中心增添了一个可靠性很好的设备——集线器。

集线器特点:

扩展以太网

物理层: 1.在扩展主机和集线器之间使用光纤 2.构成多级星型结构的以太网 当用主干集线器将它们连接在一起时,会形成一个更大的碰撞域,一次只能允许一个系的计算机发送消息,不然它们就会碰撞(相当于变成更大的主线网)。而且不同的系使用不用的以太网技术(数据率不同),那么就不可能使用集线器将它们互连起来。

2.在数据链路层扩展以太网(比扩展物理层更常用) 一开始人们使用网桥:对MAC帧的目的地址进行转发和过滤。 后来出现了交换式集线器(switching hub),很快淘汰了网桥,这种集线器常被称为以太网交换机(switch)或第二层交换机(L2 switch) switch实际上是一个多接口的网桥(而且是用的最多的透明网桥) ,每一个接口都直接与一个单台主机或另一个switch相连,一般都工作在全双工模式,使多对主机能同时通信(网桥只能一次分析和转发一个帧),相互通信的主机都是独占传输媒体,无碰撞地传输数据。 以太网交换机内部的帧交换表(又称地址表)是通过自学习算法自动建立起来的,又有专门硬件用于转发,所以转发速率比网桥快很多。 自学习算法: 发送方A,发送帧到接收方C,以太网交换机B接收到帧后,将发送方地址写入地址表(如果之前没有的话),查找地址表中是否有C地址,如果没有就洪泛(像洪水一样,向除了自己外的计算机都转发帧),其它计算机会比对帧中的信息,如果自身地址与帧中的地址不一致就丢弃,如果有计算机匹配上地址,交换机就将目标地址写入地址表中,这两者就构成了通道,下次双方通信就可以直接查表转发。如果洪泛一次没找到目标,就通过所有其它接口洪范(除了发入接口)。 如果一直没找到目标,而且形成了一个圈的话,帧就会转圈圈,不过也有解决办法——生成树协议STP(Spanning Tree Protocol)。

虚拟局域网VLAN(Virtual LAN): 虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组。 这些网段具有某些共同的需求。 每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个 VLAN。 虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网

VLAN 可以将局域网内机器按逻辑关系而非物理位置进行灵活划分 划分后的 VLAN 可以避免过多的广播消息 图中所有机器所连的交换机端口 (Port)被划分到灰、白两个 VLAN 中 (实际中 VLAN 标识符以自然数命名, 默认为 0) 同色端口的机器构成一个虚拟局域网, 相互之间帧可达, 否则不可达 最大帧长变为 1522 字节=原来帧最大帧长1518字节(1500字节的数据加上18字节的首部)+4字节VLAN标记字符(用于指明发送该帧的计算机属于哪一个VLAN)。 VLAN标记字符=前两个字节0x8100( IEEE 802.1标记类型)+后两个字节(前三位是用户优先级字段+ 一位CFI+12位VLAN标识符VID)

最新回复(0)