1 数据链路层概述
(1)链路和数据链路层:
(2)数据链路层的三个重要问题:
- 封装成帧:
- 差错检测:
- 可靠传输:
(3)CSMA/CD 和CSMA/CA 的使用场景:
2 三大问题
2.1 封装成帧
(1)帧定界 问题
- 这里可以看出PPP帧里面有头尾中的1字节标志码,通过这两个标志来起到帧定界的作用:
- 而MAC帧没有这个标志,是通过将帧交付给物理层,然后添加前导码的操作来让对方识别出帧的。而且以太网规定了帧间间隔,所以MAC帧无需帧结束定界符。(也就是说,并不是所有的帧都需要帧头和帧尾)
(2)透明传输问题:
- 面向字节:如果网络层交付的数据中正好有和帧头/帧尾一样的数据段时,那么就无法起到原先想要实现的帧定界的作用,传输协议的解决办法是,在数据链路层向下发送帧之前,先进行一遍扫描:遇到和帧头帧尾一样的数据段时,就在前面添加转义字符(ESC),之后在对方的数据链路层提取帧时,如果读取到转义字符,就可以剔除转义字符并将后面的内容(和帧头/尾一样的那部分)看做数据:(当然,如果发送前扫描到出现ESC的话,也需要在ESC前添加一个ESC)
- 面向比特:比如帧定界符是0111110,中间有五个1,那么在数据部分,如果出现了5个连续的1,就在这5个1中最后那一个1之后补0。
(3)效率问题:
2.2 差错检测
(1)
- 比如MAC帧:帧尾的FCS就是帧检验序列
- PPP帧也有:
(2)具体方法:
- 奇偶校验:
- 循环冗余校验CRC:需要注意的是这里说的除法中,做的是异或运算。
- 发送方处理:
- 接收方处理:
- 生成多项式:
- 例题:要注意的是,这里说的接受到的信息其实就是原本要传输的信息附上余数的值了,无需再额外附上余数。前面教程里 的已接收到的数据 指的就是数据部分 ,也就是和待发送的数据值一样(是还没有附加余数的部分) 。而这里说的接受到的信息指的是附上了余数的信息。(实际收到的都是带了余数的,教程里只是为了方便理解)
(3)检错码没有纠错能力。
2.3 可靠传输
2.3.1 基本概念
(1)检测误码,来判断是否出现差错:
(2)根据数据链路层向上层提供的服务类型 来做出出现差错后的决策:
(3)提供的服务类型取决于有线还是无线:
(4)传输差错的种类:
2.3.2 实现机制
(1)停止等待协议SW
(2)回退N帧协议GBN
(3)选择重传协议SR
(4)像SW 这种通过确认重传机制 来实现的可靠传输协议 ,常称为ARQ(自动请求重传协议)(即,不需要接收方显式地请求发送方发送重传某个出错的分组)
(5)GBN 协议在流水线传输的基础上利用发送窗口来限制发送方连续发送数据分组的数量,是一种连续ARQ 协议。在协议工作过程中,发送窗口和滑动窗口不断向前滑动,所以也叫滑动窗口协议。
- 当通信线路质量不好的时候,他的信道利用率并不比SW高。
2.3.2.1 停止等待协议:
(1)发送方每发送一个数据分组后,并不能立刻将该分组从缓存中删除。只有在收到针对该分组的确认分组后,才能将它从缓存中删除。
(2)发送方每发送完一个分组后,就停止发送下一个分组,转而等待接收方的确认分组or否认分组。
(3)数据链路层的报文往返时间比较固定,不会出现确认迟到的情况,所以数据链路层实现SW,无需进行确认分组的编号。
(4)几种情况:
- 正常情况 和 超时重传:
- 确认丢失:
- 确认迟到:(注意:①这里DATA的序号0和1只是用来区分相邻两个数据而已,并不是说序号相同的内容就相同。②在发送方第二次收到ACK0时,发生了重复,发送发就会直接忽略 第二个ACK0;而接收方第二次收到DATA0时,发生了重复,会直接对其进行丢弃)
(5)注意事项:
(6)信道利用率:
(7)例题:
相关例题1:
相关例题2:
2.3.2.2 回退N帧协议:
(1)GBN协议中的接收方只能++接收和确认++ 按序到达的数据包 ,而不能处理乱序到达的数据包。因此,GBN协议中的接收窗口大小通常设置为1,以确保接收方能够正确接收和确认数据包的序列。
(2)累计确认 的概念:
- 发送方收到ACK4,就表示序号4,及其之前的分组(3,2,1)都成功接收到了。这样即使在ACK4之前还发了ACK1,但是ACK1丢失了,也不影响结果。因为ACK4就包含了分组1成功发送的概念。
- 累计确认的优点:
- 可以减少接收方的开销。
(3)错误情况:
- 接收方接收到分组5后,根据其检错码判定出该分组出错,于是丢弃该分组5。由于5号分组丢失了,导致剩下的分组无法和当前的接收窗口的序号匹配,接收方会丢弃这些分组,每丢弃一个就发送一个值为当前接收窗口序号-1的ACK(这里就是ACK4)。
- 本例假设发送方收到4个ACK后并不会立刻重发,而是等待重传定时器超时来进行重发。
(4)为什么发送方的窗口大小不 可以为2的n次方,而必须最大为2的n次方-1?
【答】:这是因为如果为2的n次方的话,就没有剩余的编号来表示已经发送但还未确认的分组。比如编号有0~7,如果发生窗口为8的话,那么当第7个分组收到后,发送回ACK7,那么接下来发送的就是新的分组0。但是如果ACK7发送过程中丢失的话,那么发送方就会重新发送老的分组0,但是接收方由于老分组0~7都已经接收成功了,所以接收窗口在新的0处,此时新发送过来的老的分组0,由于匹配上了接收窗口的序号,所以接收方会认为是新的分组0,但实际上他只是重传过来的老分组0。
(5)总结:
2.3.2.3 选择重传协议(SR):
(1)SR是GBN的改进:
(2)也就是说SR里面的ACK失去了累计确认的能力,ACKn只能确定n号分组发送成功,和0~n-1号分组无关了。只有当发送方最左侧的分组得到了确认,窗口才能移动到下一个没有确认的分组处。
(3)接收窗口中,如果发送方传来的分组中有序号满足的分组,则先缓存到接收窗口中对应的位置,然后发送对应的ACK。同理,接收窗口最左侧处的分组只有接收成功了才能向前滑动直到这个位置的分组还没有接收成功(相单于窗口被这个分组卡住了)。
(4)窗口尺寸问题:
- 这里也是为了防止ACK丢弃造成发送方重新发送的老分组到了接收方不能识别出该分组到底是老分组n还是新分组n的情况发生。
(5)总结:
3 点对点协议(PPP)
(1)PPPoE:PPP over Ethernet
(2)了解一下:
(3)帧格式:
(4)PPP协议如何实现的透明传输?
- 面向字节的异步链路:其实7E变7D的意思就是在7E里面的连续6个1里按零比特填充在第五个1后面加个0,这时就变成7D了,然后后面的的组成5E变成个字节添进去保持字节异步
- 面向比特的同步链路:
(5)PPP协议如何实现差错检测?
- 通过循环冗余校验CRC来校验FCS的值。
(6)工作状态:
4 媒体接入控制
(1)基本概念:
- IEEE 802.4 令牌总线网;
- IEEE 802.5 令牌环网;
- 光纤分布式数据接口FDDI;
- 这三种都是采用令牌传递协议的典型网络。已经被淘汰了。
- 共享式以太网采用的是随机接入 。
2.5.1 静态划分信道
(1)信道复用
- FDM:
- TDM:
- WDM(也叫光的频分复用):
- CDM:【注意】:T上带-表示T的取反(不是反码,PPT里面说的反码的意思就是表示取反,和原码反码补码里面的反码不一样)。注意,码片序列把0写作-1,这样的码片序列才能满足上图中的S与T的四种关系。
(2)例题:
- 例题1:
- 例题2:
- 例题3:
2.5.2 动态接入控制
2.5.2.1 随机接入------CSMA/CD
(1)CSMA/CD:
- 96bit时间是指发送96bit所耗费的时间,也叫做帧间最小间隔。它的作用是让接收方可以检测出一个帧的结束。(所以载波监听 有可能就是A站点发了信号后,此时B站点开始监听,如果96bit时间后,A的信号没有到打B站点,B站点就认为A没有发送信号。所以就可能发生碰撞)(还要注意的是,CD是边说边听,也就是说帧发送完后,就停止监听了,即,我就只管我发送的时间内有没有发生碰撞,没有发生的话,那么我就不用为之后可能出现的碰撞负责)
- CD:(了解强化碰撞)
- 争用期(碰撞窗口):
- 最小帧长
- 最大帧长
- 退避时间的计算算法
(2)CSMA/CD的信道利用率:
(3)CSMA/CD的帧发送流程图:
(4)CSMA/CD的帧接收流程图:
(5)例题:
- 例题1:
- 例题2:
- 例题3:
(6)总结:
2.5.2.2 随机接入------CSMA/CA
(1)CSMA/CA
(2)补充:
(3)帧间间隔(IFS):
(4)CSMA/CA原理:
- 源站为什么要在检测到信道空闲后还要等待一段DIFS?:考虑到其他的站可能有高优先级的帧要发送,如果有高优先级的帧,就要让他们先发送。
- 目的站为什么要在接受完数据帧后为什么要等到一段SIFS?:因为SIFS属于最短的帧间间隔,用来分隔开属于一次对话的各个帧。在这段时间内,一个站点应当能够从发送方式切换到接收方式。
- 信道由忙转为空闲,而且还经过了一段DIFS,为什么还要再随机退避一段时间才能使用信道?:防止多个站点同时发送数据而产生碰撞。
(5)退避算法及其使用时机:
(6)CSMA/CA的信道预约和虚拟载波监听
虽然A和C互为隐蔽站,但是B发送的CTS帧A和C是都可以收到的,所以C也知道信道将被A占用多少时间(因为CTS帧里面携带了A和信道通信要持续的时间,也就是说A和B通信的过程中,就不会受到C的干扰,解决了隐蔽站的问题。)
(7)例题:
- 例题1:
- 例题2:
- 例题3:
(8)总结:
5 ARP协议 & IP、MAC地址
(1)ARP协议:
- 即地址解析协议。
(2)MAC地址:
- MAC,即media Access Control,媒体接入控制。属于数据链路层。
- MAC地址也叫物理地址、硬件地址。
- 格式:发送顺序如下:
- 单播MAC地址:
- 广播MAC地址:
- 多播MAC地址:D中没有多播组和MAC帧的目的地址匹配,所以D将该多播帧丢弃。(给主机配置多播组列表进行私有应用时,不得使用公有的标准多播地址。)
- 随机MAC地址:为了完善安全机制、保护用户隐私,各个设备厂商开发了 MAC 地址随机功能,防止用户信息泄露。 随机 MAC 地址,就是一个随机生成的伪 MAC 地址,一个假 MAC 地址,使用随机 MAC 地址进行网络通信,而不是真实 MAC 地址。
(3)IP地址:
- 属于网络层的范畴;
- 转发过程举例:
- 路由器知道下一步的IP地址,不知道下一步的MAC地址
- 例题:
(3)ARP协议:
ARP协议即地址解析协议。
每台主机都会有一个ARP高速缓存表:
这里B给C发送数据包时,会首先在B的ARP高速缓存表中查找IP地址等于目的IP地址那一行的MAC地址。如果没有找到的话,B会进行广播:当某个主机的网卡接受到这个广播后,会交付给上层处理,上层的ARP进程会解析这个ARP请求报文:如果发现自己的IP地址不等于广播中的目的IP地址,则不予理会。如果发现自己的IP地址等于广播中的目的IP地址,则进行如下处理 (这里C为接受到广播且IP地址相符的主机,B为发送广播的主机):这个ARP响应(单播)内容如下:(包括C自己的IP地址、MAC地址;同时是封装在MAC帧中进行发送,目的地址是B的MAC地址)。收到这个ARP响应的主机会判断自己的MAC地址是否符合该单播的目的MAC地址,如果匹配则网卡会接受该MAC帧,同时网卡会将这个MAC帧交付给上层,上层会进行如下操作:
ARP协议里面的类型:
注意:ARP协议只能在一段链路or一个网络中使用,不能跨网络使用!如果要在不同网络中使用的话,需要一段一段分开使用。
知识点总结:
6 集线器和交换机的区别:
(1)集线器HUB:(工作在物理层)(也有包含网络层部分功能的交换机,叫做三层交换机。)
(2)利用集线器HUB在物理层上扩展以太网:
(3)交换机SWITCH:(工作在数据链路层,也包括物理层)
注意:以下的例子都存在前提:
- 使用集线器的以太网,是在逻辑上共享总线的,需要使用CSMA/CD协议来协调各主机的争用总线,只能工作在半双工模式。而以太网交换机:这里存储转发的方式,是先将帧转入缓冲区进行差错检验。
- 一台主机进行单播情况下,HUB和SWITCH有区别,HUB是类似于广播操作,然后让收到帧的网卡来接收并交付上层识别是否是自己。而SWITCH则是在交换机中找到目的地址,直接点对点发送。广播情况下,在效果上,HUB和SWITCH没有区别。多台主机进行单播的情况下,HUB中会产生碰撞,而SWITCH会将这多个帧缓存起来,再转发给目的主机,不会产生碰撞。
- 只使用集线器HUB来扩展以太网,扩大广播域的同时,还扩大了碰撞域;而使用交换机SWITCH来扩展以太网,则只会扩大广播域。也就是说交换机可以隔绝碰撞域。
- 综合对比HUB和SWITCH:
(4)SWITCH自学习和转发帧的流程:
交换机接受到帧,就会登记其MAC地址&接口:(图中报文改为帧)
这里B接收到了之后,发现自己的MAC地址符合帧的目的MAC地址,则接收。注意,这里B不会发送回一个响应帧给交换机!
下面这种情况是交换机丢弃帧的情况:G给A发送帧,交换机也会收到,然后交换机判断对应转发接口为1,和进入的接口1一样,所以交换机会丢弃该帧:
总结:
7 以太网交换机的生成树协议(STP)
(1)添加冗余链路提高以太网可靠性的同时,带来广播风暴的问题:
8 虚拟局域网VLAN
8.1 相关概念
(1)
(2)路由器默认情况下不对广播数据报进行转发,所以可以很好的隔开广播域:
(3)VLAN解决路由器成本高的问题:
8.2 VLAN实现机制
(1)需要交换机实现以下两个功能:
①可以处理带有VLAN标记的帧(IEEE802.1Q帧)
②交换机的各个端口可以支持不同的端口类型。不同端口类型的端口对帧的处理规则有所不同。
- Access接口:
- Trunk端口:Trunk端口对VID不等于自己(Trunk端口)的PVID的帧,也可进行直接转发(这里就是不去标签了)注意,接收帧的Trunk端口进行重新打标签的步骤,是打上和自身PVID相同的标签:所以要注意:互联的Trunk端口的PVID值如果不等,则可能会造成转发错误。
- hybrid端口:hybrid端口去掉了VID=x的标签,说明,PVID=x的局域网发来的帧都会被该端口去掉标签并重新添加当前hybrid端口的PVID值大小的VID值。也就是去掉了谁的标签,就可以收到谁的信息。不去谁的标签,就收不到谁的信息。(如果A和B要互相通信,则A和B端口只需要互相去掉对方PVID大小的VID标签)去掉标签后而帧通过接收的hybrid端口之后,不会再添加标签,因为带有标签的是IEEE802.1Q帧,主机无法识别,这种帧是给交换机识别的,主机只可以识别普通MAC帧,也就是不带VID标签的帧。这就是为什么如果不去标签x的话,该hybrid端口发送给主机的帧就是带有VID=x的IEEE802.1Q帧,主机无法识别则进行丢弃。