链路:链路(Link)是指从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点。
数据链路:数据链路(Data Link)是基于链路的。当在一条链路上传送数据时,除需要链路本身,还需要一些必要的通信协议来控制这些数据的传输,把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
计算机中的网络适配器(俗称网卡)和其相应的软件驱动程序就实现了这些协议。一般的网络适配器都包含了物理层和数据链路层这两层的功能。
帧:帧(Frame)是数据链路层对等实体之间在水平方向进行逻辑通信的协议数据单元PDU。
帧首部和尾部包含有重要的控制信
MAC帧的首部与尾部
PPP帧的首部与尾部
帧首部和尾部的作用之一就是帧定界
帧的首部和尾部中包含有一些重要的控制信息。
PPP帧通过标志位鉴定数据帧
MAC帧通过帧间间隔(发送96比特所消耗的时间)判断数据帧
最大传送单元MTU
为了提高数据链路层的传输效率,应当使帧的数据载荷的长度尽可能地大于首部和尾部的长度
但是考虑到空间以及差错控制等诸多因素,每一种数据链路层协议都规定了帧的数据载荷的长度上限
即 最大传送单元MTU 。
透明传输:
如果数据载荷内出现了和标志位相同的数据段 那么就会被机器误认为是一个数据帧,
我们通过对封装的帧的处理,实现上层不需要对数据链路层处理,即透明传输。
字节填充(面向字节的物理链路使用字节填充的方法实现透明传输。)
在标志位前+转义字符(ESC字节填充)
如果数据载荷内出现了ESC字节则也在ESC前也加ESC字节
比特填充(面向比特的物理链路使用比特填充的方法实现透明传输。)
零比特填充法:每5个1比特后面填充一个0比特
经过处理后,如果数据载荷大小超过了MTU则会分包。
在一段时间内,传输错误的比特数量占所传输比特总数的比率称为误码率(Bit Error Rate,BER)。
通过检测码FCS检测帧中是否有误码。
奇偶校验
奇校验
奇校验是在待发送的数据后面添加1个校验位,使得添加该校验位后的整个数据中比特1的个数为奇数。
偶校验
偶校验是在待发送的数据后面添加1个校验位,使得添加该校验位后的整个数据中比特1的个数为偶数。
循环冗余校验CRC
收发双方约定好一个生成多项式G(X)。
发送方基于待发送的数据和生成多项式G(X),计算出差错检测码(冗余码),将冗余码添加到待发送数据的后面一起传输。
接收方收到数据和冗余码后,通过生成多项式G(X)来计算收到的数据和冗余码是否产生了误码。
算法要求生成多项式必须包含最低次项
发送方操作:
接收方操作:
奇偶校验 冗余校验都无法纠错,要想纠错需要冗余信息更多的纠错码(例如海明码),进行前向纠错,
但是开销太大,我们很少使用。(数据链路层一般就是CRC)
我们使用 检错重传或仅仅丢弃错误帧 这取决于数据链路层向上层提供的服务类型。
一般情况下,有线链路的误码率比较低。为了减小开销,并不要求数据链路层向其上层提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
无线链路易受干扰,误码率比较高,因此要求数据链路层必须向其上层提供可靠传输服务。
传输差错
分组重复
分组失序
分组丢失
误码(比特差错)
停止-等待就是指发送方每发送完一个数据分组就必须停下来,等待接收方发来的确认ACK或否认NAK分组。
停止-等待协议属于自动请求重传(Automatic Repeat reQuest,ARQ)协议。即重传的请求是发送方自动进行的,而不是接收方请求发送方重传某个误码的数据分组。
确认、否认和重传
超时重传
RTO:超时重传时间
RTT:信号在收发双方之间往返传播所需要的时间
确认丢失
ack也可能会丢失导致 分组重复 所以要给分组编号 , 用一个比特 0 1编号就够了
ack可能会迟到导致确认分组重复,所以ack也要编号。(但是这种情况比较少,所以可以不给确认分组编号)
使用超时重传机制就不用否认机制了,但是如果误码率较高的情况,使用否认重传机制可以在超时重传前就尽快重传。
信道利用率:
若出现超时重传,对于传送有用的数据信息来说,信道利用率还要降低。
在往返时间RTT相对较大的情况下,为了提高信道利用率,收发双方不适合采用停止-等待协议,
而可以选择使用回退N帧协议或选择重传协议。
回退N帧(Go-back-N,GBN)协议采用流水线传输方式,并且利用发送窗口来限制发送方连续发送数据分组的数据,这属于连续ARQ协议。
在使用流水线传输方式时,发送方不能无限制地连续发送数据分组,否则可能会导致网络中的路由器或接收方来不及处理这些数据分组,进而导致数据分组的丢失,这实际上是对网络资源的浪费。
回退N帧协议采用流水线传输方式,并且利用发送窗口来限制发送方连续发送数据分组的数量,这属于连续ARQ协议。
发送窗口
接受窗口
若序号落入发送窗口内的已发送数据分组出现超时,则该数据分组及其后续已发送的数据分组都要被重传,这就是回退N帧协议名称的由来,即一旦出错就需要退回去重传已发送过的N个数据分组。
当出错发送的包出现误码之后,后面的包都会丢弃掉,接收方会反复发送接受窗口前的包的ack
一个数据分组的差错就可能引起大量数据分组的重传。
在信道质量较差(容易出现误码)的情况下,回退N帧协议的信道利用率并不比停止-等待协议的信道利用率高。
累计确认
接收方不必对收到的每一个数据分组都发送一个确认分组,而是可以在收到几个序号连续的数据分组后,对按序到达的最后一个数据分组发送确认分组。
确认分组ACKn表明序号为n及之前的所有数据分组都已正确接收。
优点
减少向网络中注入确认分组的数量。
即使确认分组丢失,也可能不必重传数据分组。
缺点
不能向发送方及时准确地反映出接收方已正确接收的所有数据分组的数量。
发送窗口的尺寸超越其范围上限将出现接收方无法分辨新旧数据分组的情况
为了进一步提高信道利用率,可以设法只重传出现差错的数据分组,这就需要接收窗口的尺寸要大于1,以便先收下失序但正确到达接收方且序号落入接收窗口内的数据分组,等到所缺数据分组收齐后再一并送交上层,这就是选择重传协议。
为了使发送方仅重传出现差错的数据分组,接收方不再采用累积确认,而需要对每一个正确接收的数据分组进行逐一确认。
PPP协议是目前使用最广泛的点对点数据链路层协议。
PPP协议主要有两种应用
因特网用户点对点链接到ISP然后再接入因特网
广域网中的点对点专用链路
PPP协议的组成
PPP协议的帧格式
标志 PPP帧的定界符,取值为0x7E。
地址 取值为0xFF,预留(目前没有什么作用)
控制 取值为0x03,预留(目前没有什么作用)。
协议 其值用来指明帧的数据载荷应向上交付给哪个协议处理。
帧检验序列 其值是使用循环冗余校验CRC计算出的检错码。从地址字段开始,到数据载荷字段结束为止。
数据载荷 用来封装上层的协议数据单元PDU
PPP帧的透明传输
PPP协议的工作状态
以用户主机拨号接入因特网服务提供者ISP的拨号服务器的过程为例
要将计算机连接到以太网,需要使用相应的网络适配器(Adapter),网络适配器一般简称为“网卡”
在计算机内部,网卡与CPU之间的通信,一般是通过计算机主板上的I/O总线以并行传输方式进行。
网卡与外部以太网(局域网)之间的通信,一般是通过传输媒体(同轴电缆、双绞线电缆、光纤)以串行方式进行的。
网卡除要实现物理层和数据链路层功能,其另外一个重要功能就是要进行并行传输和串行传输的转换。由于网络的传输速率和计算机内部总线上的传输速率并不相同,因此在网卡的核心芯片中都会包含用于缓存数据的存储器。
MAC地址又被称为硬件地址/物理地址
MAC地址实际上就是接口地址。
交换机和路由器往往具有更多的网络接口,所以会拥有更多的MAC地址。
数据链路层不需要使用地址
数据链路层必须使用地址来区分各主机
目的地址为生成树协议STP专用组播地址01-80-C2-00-00-00
被设置为混杂方式的网卡,只要收到共享媒体上传来的帧就会收下,而不管帧的目的MAC地址是什么。
为了解决各站点争用总线的问题,共享总线以太网使用了一种专用协议CSMA/CD,它是载波监听多址接入/碰撞检测(Carrier Sense Multiple Access / Collision Detection)的英文缩写词。
多个站点连接在一条总线上,竞争使用总线。
每个站点在发送帧之前,先要检测一下总线上是否有其他站点在发送帧(“先听后说”)
若检测到总线空闲96比特时间(发送96比特所耗费的时间,也称为帧间最小间隔),则发送这个帧;
若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送这个帧。
每个正在发送帧的站点边发送边检测碰撞(“边说边听”)
一旦发现总线上出现碰撞,立即停止发送,退避一段随机时间后再次从载波监听开始进行发送(“一旦冲突,立即停说,等待时机,重新再说”)。
在使用CSMA/CD协议时,由于正在发送帧的站点必须“边发送帧边检测碰撞”,因此站点不可能同时进行发送和接收,也就是不可能进行全双工通信,而只能进行半双工通信(双向交替通信)。
很显然,总线的长度越长(单程端到端传播时延越大),网络中站点数量越多,发生碰撞的概率就越大。
因此,共享以太网的总线长度不能太长,接入的站点数量也不能太多。
某个站点从发送帧开始,最长要经过多长时间,才能检测出自己发送的帧与其他站点发送的帧产生了碰撞?
最长为 2τ
最短为 1τ
网速越快,总线越短。
为了确保共享总线以太网上的每一个站点在发送完一个完整的帧之前,能够检测出是否产生了碰撞,帧的发送时延就不能少于共享总线以太网端到端的往返时间(发送端在发送期间没检测到碰撞,就认为没发生碰撞。CD),即一个争用期 。
最小帧长 = 数据传输速率 × 2τ
46B(数据载荷) + 18B(首部和尾部) = 64B(MAC帧最小帧长)
对于/的共享总线以太网,其争用期 的值规定为.s,因此其最小帧长为,即。
当某个站点在发送帧时,如果帧的前没有遭遇碰撞,那么帧的后续部分也就不会遭遇碰撞。也就是说,如果遭遇碰撞,就一定是在帧的前之内。
由于发送帧的站点边发送帧边检测碰撞,一旦检测到碰撞就立即中止帧的发送,此时已发送的数据量一定小于。因此,接收站点收到长度小于的帧,就可判定这是一个遭遇了碰撞而异常中止的无效帧,将其丢弃即可。
1500B(数据载荷) + 18B(首部和尾部) = 1518B(MAC帧最大帧长)
共享总线以太网中的各站点采用截断二进制指数退避(Truncated Binary Exponential Backoff)算法来选择退避的随机时间。
早期的传统以太网是使用粗同轴电缆的共享总线以太网,后来发展到使用价格相对便宜的细同轴电缆。
在使用细同轴电缆的共享总线以太网之后,以太网发展出来了一种使用大规模集成电路来替代总线、并且可靠性非常高的设备,叫作集线器(Hub)。
站点连接到集线器的传输媒体也转而使用更便宜、更灵活的双绞线电缆。
扩展站点与集线器之间的距离
因为到集线器最远100m,所以两站点最远为200m
因为信号在光纤中的衰减和失真很小,所以可以简单的把两站点间距离扩展到1000m以上。
扩展共享式以太网的覆盖范围和站点数量
在数据链路层扩展以太网可以使用网桥
网桥工作在数据链路层(包含其下的物理层),因此网桥具备属于数据链路层范畴的相关能力。
识别帧的结构
根据帧首部中的目的MAC地址和网桥自身的帧转发表来转发或丢弃所收到的帧
透明网桥的标准是IEEE 802.1D,它通过一种自学习算法基于以太网中各站点间的相互通信逐步建立起自己的转发表。
透明网桥中的“透明”,是指以太网中的各站点并不知道自己所发送的帧将会经过哪些网桥的转发,最终到达目的站点。也就是说,以太网中的各网桥对于各站点而言是看不见的。
透明网桥从自己的某个接口收到帧后,会进行以下操作
(1)自学习
(2)转发帧
转发表中的每条记录都有其有效时间,到期自动删除!这是因为各站点的MAC地址与网桥接口的对应关系并不是永久性的,例如某个站点更换了网卡,其MAC地址就会改变。
使用冗余链路提高以太网的可靠性但引入了环路
1992年面世的交换式集线器,实质上是具有多个接口的网桥,常称为以太网交换机(Switch)或二层交换机。
仅使用交换机(而不使用集线器)的以太网就是交换式以太网。
一般的交换机都采用“存储转发”方式,为了减小交换机的转发时延,某些交换机采用了直通(Cut-Through)交换方式。
采用直通交换方式的交换机,在接收帧的同时就立即按帧的目的MAC地址决定该帧的转发接口,然后通过其内部基于硬件的交叉矩阵进行转发,而不必把整个帧先缓存后再进行处理。
直通交换的时延非常小。
直通交换不检查差错就直接将帧转发出去,有可能会将一些无效帧转发给其他主机。
“目的地址”字段和“源地址”字段
用来填入帧的目的MAC地址和源MAC地址
“类型”字段
其值用来指明帧的数据载荷中的内容是由上一层的哪个协议封装的,以便将收到的MAC帧的数据载荷上交给上一层的这个协议。
0x0800 TCP/IP网际层IP协议封装的PDU
0x8137 由Novell网络层IPX协议封装的PDU
“帧检验序列”FCS字段
CRC的检验范围从目的地址字段开始,到数据载荷字段结束为止。
“数据载荷”字段
46B ~ 1500B
MAC帧的长度不是整数个字节
通过MAC帧的FCS字段的值检测出帧有误码
MAC帧的长度不在64B~1518B之间
交换式以太网中的所有站点都属于同一个广播域。随着交换式以太网规模的扩大,广播域也相应扩大。
巨大的广播域会带来一系列问题
广播风暴 浪费网络资源和各主机的CPU资源
难以管理和维护,带来潜在的安全问题
网络中会频繁出现广播信息
TCP/IP协议栈中的很多协议都会使用广播
地址解析协议ARP
路由信息协议RIPv1
动态主机配置协议DHCP
NetBEUI
Windows下使用的广播型协议
使用路由器可以隔离广播域(成本较高)
虚拟局域网VLAN技术应运而生
虚拟局域网(Virtual Local Area Network,VLAN)是一种将局域网内的站点划分成与物理位置无关的逻辑组的技术,一个逻辑组就是一个VLAN,VLAN中的各站点具有某些共同的应用需求。
连接在同一交换机上的多个站点可以属于不同的VLAN
属于同一VLAN的多个站点可以连接在不同的交换机上
虚拟局域网VLAN有多种实现技术,最常见的就是基于以太网交换机的接口来实现VLAN。这就需要以太网交换机能够实现以下两个功能
IEEE 802.1Q帧
以太网交换机的接口类型
不管发展的网速多块,都遵守最小帧长和最大帧长的规定
因为吉比特太快了,且还要兼容100BASE-T以太网。
若将最小帧长增到到640字节,则上层交付的PDU很短时,开销太大。
当MAC帧不足512字节的时候,就在MAC帧尾部填充特殊字节使增大到512字节
当发送很多短帧的时候,载波延伸会造成很大开销。分组突发就是只将第一个短帧用载波延伸填充,其他的短帧隔开必要的最小帧间隔,然后跟在后面不填充。直至累计发送1500多字节为止。
采用全双工通信,不用CSMA/CD协议了
万兆以太网交换机用于
千兆以太网交换机的汇聚层交换机
要求极高的视频服务器
文件服务器
802.11无线局域网可分为两类
为什么不用碰撞检测CD?
信号强度低,不一定能检测到碰撞
由于无线电波存在隐蔽站问题,还会出现检测不到碰撞的问题,所以CD没有意义。
DCF帧间间隔DIFS
短帧间间隔SIFS
虚拟载波监听
确认机制
退避算法
信道预约(也参与了虚拟载波监听)
为了进一步降低发生碰撞的概率,802.11无线局域网允许源站对信道进行预约。
RTS帧