【计算机网络】个人笔记 - 第三章:数据链路层

数据链路层

一.概述

链路 (Link) 就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。

数据链路 (Data Link) 是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。

数据链路层为单位传输和处理数据。

数据链路层要实现的三大任务:

任务内容
封装成帧将协议数据单元添加帧头和帧尾封装成帧的过程。
差错检测检错码检测,有差错则弃用
可靠传输虽然差错不可避免,但发送方发送的报文能全被被接收方接收到。

1.封装成帧

帧头和帧尾中包含有重要的控制信息,其作用之一就是帧定界

常见的数据链路层封装形式:

可以看到,以太网v2协议中并没有帧定界标志。

这是因为以太网采用的是在数据链路层交付给物理层时,物理层会增加前导码,并以 96 bit 的帧间隔发送。

透明传输是指数据链路层对上层交付的传输数据没有任何限制。为了实现透明传输,常有以下两种方法:

(1).面向字节

为了避免冲突,实现透明传输,数据链路层进行封装前会先扫描整个协议数据单元,并将与帧定界标志转义字符相同的字段进行处理,在其前边转义字符。

(2).面向比特

帧定界标识符为:01111110;

则每次发送协议数据单元时,先扫描一遍,只要出现五个1就填充一个0,以此来防止传输的数据中出现6个1,实现透明传输

2.差错检测

在一段时间内,传输错误的比特所占传输比特总数的比率称为误码率 BER

使用差错检测码和检测算法来实现对差错的检测。

差错检测算法内容特点
奇偶校验在待发送的数据后面添加1位奇偶校验位,使整个数据 (包括所添加的校验位在内) 中 1 的个数为奇数或偶数。目的主机只需要检测奇偶性是否改变即可。检测结果不准确,一旦偶数个位出现误码则无法检测。
循环冗余校验CRC收发双方约定好一个生成多项式G(x);发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;接收方通过生成多项式来计算收到的数据是否产生了误码;可靠性极高,大规模使用

循环冗余校验算法过程:

例如:

待发送的信息为 101001,生成多项式为 G(x) = x{^{3}} + x{^{2}} +1

除数,即生成多项式各项系数的比特串为 1101;CRC使用的除法实际是模2除法,其算法是:位数够则为1,不够则为0,之后进行异或运算计算余数;

余数不足则补零,即冗余码应该为 001;最后将向目标主机发生 101001001;目标主机拿到数据后,进行同样的除法操作,余数不为0则存在差错。

3.可靠传输

可靠传输是一个常见概念,并不局限于数据链路层

除了传输过程中的误码,还可能存在分组丢失、分组失序、分组重复等差错,需要上层进行某些操作实现可靠传输;而数据链路层只需要关心是否出现误码即可,无需关心上层怎么实现可靠传输。

如果只是遇到有误码的帧就抛弃,那只能实现不可靠传输;要真正实现可靠传输,还需要进行差错重传

首先需要说明常见的信号:

信号全称含义
ACKAcknowledgement (应答)用来表示接收方已经成功接收到发送方的数据包,并确认数据包的内容无误。
NAKNegative Acknowledgement (否认应答)当接收方收到数据后,如果发现数据有错误,会发送一个NAK信号给发送方,表示数据接收不成功,需要重新发送
ACKnAcknowledgement (应答)用于累计确认,表示序号为n及以前的所有数据分组已被正确接收

数据链路层的三种差错重传协议:

(1).停止-等待协议 SW

停止-等待协议 (Stop-Wait Protocol),简称SW。是自动请求重传协议 (ARQ) 的一种。

其内容是:发送方每发生一段数据,都会停止并等待接收方的ACK信号;如果接收到ACK信号,则会继续发送下一段数据,如果接收到NAK信号,则会立刻重传。发送方会在接收到ACK的时候才删除数据缓存。

此外,发送数据之后,发送方还会启动一个超时计算器,一旦超过重传时间而没有收到任何ACKNAK,则会重新发送,称为超时重传重传时间一般略大于平均往返时间。最后,发送方需要为每个数据都加上序号,便于接收方区分数据是否重复;接收方也需要为ACK信号加上序号,便于发送方区分ACK针对的数据。

信道利用率:U = \frac{TD}{TD + RTT + TA}

其中,TD为数据发送时的发送时延,RTT为传播时延,TA为接收方发送应答时的发送时延。若RTT较长,则SW协议信道利用率很低。

(2).回退N帧协议 GBN

回退N帧协议 (Go-Back-N Protocol),简称GBN。

在GBN中,有以下概念:

概念全称内容
发送窗口 WTWindow Transmit序号落在发送窗口内的数据分组可连续发送。其大小必须小于序号的取值范围
接收窗口 WRWindow ReceiveGBN中接收窗口的值只能为1;序号落在接收窗口内的数据分组可被接收
累计确认Cumulative Acknowledgment接收方在收到几个数据分组后,统一回复确认信息ACK,该信息通常被称为ACKn,表示序号为n及以前的所有数据分组已被正确接收

GBN协议中,如果接收方检测到差错,就会丢弃该分组;而丢弃后剩余的分组无法与接收窗口匹配,因此全部被拒收;随后接收方发送ACKn,向发送方说明自己需要的序号。

如果WT大于序号取值范围,则会出现接收方无法区分新旧数据分组的情况。

GBN协议的缺点在于,一旦前边一个分组出现差错,后边的所有分组都会被弃用,直至下一次重传,导致信道利用率不高。

(3).选择重传协议SR

选择重传协议 (Select Repeat Protocol),简称为SR 。

SR协议中,WR的大小不为1,在接收到数据分组后,会根据其序号滑动接收窗口。直至滑动到未接收到的序号。

SR不允许累计确认,而是每收到一个分组就返回对应序号的ACK。

发送方每收到一个ACK,都会对对应序号的分组进行标记;如果一个序号前的所有分组均已被标记,则发送窗口会滑动至该序号。

此外,1 < WT <= 2{^{n - 1}} 且 1 < WR <= WT,否则会出现重复确认。

二.PPP协议

点对点协议 (Point-to-Point Protocol) ,简称为PPP。

其帧的格式如下图所示:

Flag字段为 7E ,即 01111110 (二进制)

  • 一旦数据部分出现7E,则将其转义7D 5E,即 01111101, 01011110。

  • 一旦数据部分出现7D,则将其转义7D 5D,即 01111101, 01011101。

  • 一旦数据部分出现ASCII码控制字符,则将其前加上7D,并将字符编码加上0x20;如0x03转译为 7D 23 (十六进制)

其实就是7D为转义字符,目标主机一旦检测到帧里的7D,就会启动转义程序,将其后边一个字节加上0x20 (即0b 0010 0000),得到原本的编码。

上述是面向字节的转义,面向比特的转义只需要每遇到5个1便向后加个0即可。

三.媒体接入控制

媒体介入控制 (Medium Access Control),简称为MAC,是用来解决共享信道中如何协调多个发送和接收站点对一个共享传输媒体的占用。

复用 (Multiplexing) 是通信技术中的一个重要概念。复用就是通过一条物理线路同时传输多路用户的信号。

1.静态划分信道

静态划分信道主要研究如何实现信道复用,通常有四种方法:

复用方法缩写内容
频分复用FDM将一个信道的带宽分为多个子频带,相邻子频带间存在隔离频带
时分复用TDM各个主机按特定时间间隔轮询发送,每轮询一次被称为一个TDM帧
波分复用WDM将不同主机发送的波长不同的光调节为一束复用光
码分复用CDM不同主机使用经过特殊挑选的不同码型,这些码型互相正交,自然不会彼此干扰。

其中,CDM的内容是:

每个比特时间划分成 m 个短的时间间隔,称为码片

一个站如果要发送比特1,则发送他自己的m bit码片序列

一个站如果要发送比特0,则发送他自己的m bit码片序列的二进制反码

要计算原有的数据是比特1还是比特0,只需要进行正交运算,结果为1则为比特1,结果为-1则为比特0;

CDM通过互相正交防止互相干扰,实现了信道复用,相应的代价就是,数据传输的长度变为了原来的m倍,且接入主机越多m越大。

2.随机接入

随机接入是动态媒体接入的一种,他允许各个主机按照自身需要发送数据,因此主要要解决的是碰撞问题

(1).CSMA/CD协议

有线局域网通常采用 载波监听多址接入 / 碰撞检测 协议 (Carrier Sense Multiple Access / Collision Detection),简称为CSMA/CD协议 来解决碰撞问题。

以太网单程端到端传播时延为 τ ,通常以 2τ 作为争用期,或称为碰撞窗口。这是由于 2τ 时间内,发送碰撞的双方必定能接收到碰撞信息并停止发送。

以太网规定最小帧长为64字节,即512比特,这是由于512比特时间通常是争用期。设定最小帧长是为了防止主机发送完之后碰撞发生,而发送的主机并不知道发送了碰撞,确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇了碰撞。

以太网还规定了最大帧长为1500字节,来确保每个主机都有机会发送数据而不至于等待过久。

退避时间计算:退避时间 = 争用期 2τ × 随机数r

随机数算法为:

t = 重传次数
k = min(t, 10)
if t >= 16:
    抛弃该帧,并向上层报告
else:
    r = random.randint(0, 2**k - 1)

可以发现,若多次出现碰撞,则说明当前信道正忙,算法会倾向于增大等待时间,以此来减少碰撞概率。这被称为动态退避

CSMA/CD协议的极限信道利用率为 S_{max} = \frac{T_{0}}{T_{0} + \tau } ;其中T0为发送时延。

(2).CSMA/CA协议

无线局域网通常采用 载波监听多址接入 / 碰撞避免 协议 (Carrier Sense Multiple Access / Collision Avoidance),简称为CSMA/CA协议 来解决碰撞问题。

所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔IFS

高优先级帧需要等待的时间较短,因此可优先获得发送权; 低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙态,因而低优先级帧就只能再推迟发送了。这样就减少了发生碰撞的机会。

此外,帧间间隔根据时间长短还分为了短帧间间隔 (SIFS) 和DCF帧间间隔 (DIFS)。

退避一段随机时间是为了防止多个站点一检测到信道空闲就全抢着发送数据。

CSMA / CA 的退避算法:

i = min(退避次数, 6)
n = random.randint(0, 2 ** (2 + i) - 1)
time = random.randint(1, n)
while time > 0:
    time -= 1
    if 发生碰撞:
        wait(信道空闲)
        等待一个DIFS的长度
data.send()

CSMA / CA还允许发送预约虚拟载波监听

源站在发送数据帧之前先发送一个控制帧 RTS (Request To Send),若目的站空闲则会回复一个允许发送 CTS (Clear To send)。其他站在接收到CTS后会推迟接入无线局域网中,通过此来预防冲突。

虚拟载波监听机制即数据帧携带了通信需要持续的时间。

四.ARP协议

MAC地址是以太网的MAC子层所使用的地址;

IP地址是TCP/IP体系结构网际层所使用的地址;

ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址。

1.MAC地址

MAC地址是计算机网络上的一种唯一标识,在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址,是被存入网卡的,也称物理地址硬件地址

严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。

如何判断一个MAC帧是多播还是单播?只需要看其第二位是奇数还是偶数,奇数则为多播,偶数则为单播

单播帧的首部为目的地址、源地址;而广播帧的首部为FF-FF-FF-FF-FF-FF (广播地址)、源地址。

2.IP地址

IP地址因特网 (Internet) 上的主机和路由器所使用的地址,用于标识两部分信息:

  • 网络编号:标识因特网上数以百万计的网络

  • 主机编号:标识同一网络上不同主机(或路由器各接口)

数据包转发过程中源IP地址目的IP地址保持不变;数据包转发过程中源MAC地址目的MAC地址逐个链路(或逐个网络)改变。

3.ARP协议

每个主机都会存有一张ARP高速缓存表,其记录了已知的IP地址对应的MAC地址;

如果没有查到IP地址对应的MAC地址,则会进行ARP请求报文 (广播),目的地址为FF-FF-FF-FF-FF-FF,其内容为:

我的IP地址为xx,MAC地址为yy,请问有谁知道IP地址为zz的主机的MAC地址是多少?

目标网卡首先会将IP地址xx记录到自己的ARP高速缓存表中,之后向B发送ARP响应,以告知自己的MAC地址。

记录类型特点
静态手工设置,不同操作系统下的生命周期不同,例如系统重启后不存在或系统重启后依然有效。
动态主机自动获取到的,生命周期为2分钟,生命周期结束后会自动删除

ARP协议只能在一段链路或网络上使用而不能跨网络使用;要跨网络查询则需要一段链路一段链路执行。

五.交换机

1.集线器

使用集线器的以太网在逻辑上仍是一个总线网,各站共享总线资源,使用的还是CSMA/CD 协议;

注意,这里的以太网泛指以太网网络,指的是按照以太网协议构建的局域网LAN

集线器只工作在物理层,它的每个接口仅简单地转发比特,不进行碰撞检测(由各站的网卡检测);

集线器本质上是一个主线,是在物理层扩展以太网,通过集线器扩大以太网会扩大冲突域。

2.以太网交换机

以太网交换机可以特定的将单播帧发送给目的主机。

以太网交换机通常都有多个接口,属于物理层与数据链路层;每个接口都可以直接与一台主机或另一个以太网交换机相连。一般都工作在全双工方式。具有并行性,可以同时收发通信,无碰撞。

交换机不会扩大冲突域,但可以扩大广播域;

3.交换机自学习

以太网交换机收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。

交换机的交换表通过两个字段来存储MAC地址的信息:MAC地址及其对应的接口编号;交换机收到数据后首先进行登记,将源MAC地址及其接口进行记录,之后查找目的地址是否在交换表中,如果交换表中没有找到目标MAC地址,则会盲目转发给所有接口,也称为泛洪

4.生成树协议STP

一旦网络中出现环路,则可能发生广播风暴广播风暴大量消耗网络资源,使得网络无法正常转发其他数据帧。

以太网交换机使用生成树协议STP (Spanning Tree Protocol),可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题。

  • 不论交换机之间采用怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有环路的网络

  • 其逻辑拓扑结构必须是树型的 (无逻辑环路)

  • 最终生成的树型逻辑拓扑要确保连通整个网络

  • 当首次连接交换机或网络物理拓扑发生变化时 (有可能是人为改变或故障),交换机都将进行生成树的重新计算。

5.虚拟局域网

路由器不会转发广播,因此可以隔离广播域,防止广播风暴。

为了防止局域网内发送广播风暴,我们可以在一个局域网内划分多个子网来隔离广播域,这些子网就是所谓的虚拟局域网VLAN

为了实现VLAN,IEEE 802.1规定了.1Q帧 (Dot One Q帧),在原有的MAC帧格式下加入了四字节的VLAN标记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值