将网络层的数据报分组封装成帧。
本质上是数据链路层封装之后,在物理层传输bit流,中间站点又会向上到数据链路层,这是一个实际过程,但是在单独考虑数据链路层时,我们可以忽略经过的物理层,直接认为是水平的。
一、基本概念
数据链路层负责把网络层交付给它的数据报,无差错地传输给相邻结点。
物理层的中继器只起到增加信号传输距离的作用,它并不管数据是否正确,所以不作为结点。
数据链路是逻辑链路,而链路是物理通道。
二、功能概述
数据链路层是为网络层提供服务,让传输数据在逻辑上无差错。
最大传送单元 MTU(maximum transmission unit)
帧定界符可以在比特流中识别出帧!
透明传输就是不管你传的是什么,我都可以正常接受。
采取的措施:
①字符计数法
②字符填充法
③零比特填充法
出现连续五个1,后面一定填个0。
保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。
④违规编码法
由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充和违规编码法。
①差错的由来
差错控制的对象是冲击噪声。
②差错控制
(比特错)《知道错误,但是不知道哪里错了》
任何两个结点之间都可以进行差错检查。
③奇偶校验码
奇校验码约定字符中有奇数个1是对的。
④CRC循环冗余码
(硬件实现)
CRC是方法,FCS是冗余码
给了一长串数据,对每个组后面都得加上FCS(帧检验序列冗余码),
例子:
凡是接收端数据链路层接收的帧均无差错。
⑤纠错编码
:海明码<知道错误,还能纠错,只能纠错单比特>
(1)海明距离
(2)确定校验码位数
(3)确定校验码位置
(4)求出校验码的值
(5)检错与纠错
海明码实际上用x4与x5、x6、x7偶校验得到x4,然后收到数据时再采用偶校验,就可以判断这四位里面是否有一位发生了错误。
然后由于这里引入了三个校验位,那么就可以得到三个集合中的元素是否产生错误,最终取交集就是出错的位。
校验位的数值可以指定出错的位置,加上校验位r,一共有m+r位,校验位又要能够说明不出错的情况,所以一共m+r+1种情况,所以校验位的种类2的r次方要≥m+r+1。

(1)流量控制(铲屎官)
数据链路层是结点对结点的控制
传输层是端到端的控制。
(2)流量控制方法
注意数据链路层是以帧为单位传输的。
链路层滑动窗口协议的窗口大小在发送过程中是固定的!
没有收到确认则不移动,可以实现可靠传输
不会无限发送,只会发送窗口中的,可以实现流量控制。
(1)停止-等待协议
①基础
数据包实际上就是数据,在不同层次说法不同,比如在数据链路层是帧,在网络层是分组,IP数据报,在传输层就是数据段。之后在链路层讨论,所以以帧为单位。
②无差错停等协议
(ack,命令正确应答;确认字符(acknowledgement character))
③有差错情况
RTT是传播时延,只管传播过程花费的时间,所以需要比平均RTT更长。
只有收到确认帧才可以丢掉副本。
编号可以解决帧丢失和帧出错,我们发现,在发送0号帧的时候,如果没有收到确认,那么发送方手里一直想发送的是0号帧,所以不会出现由于编号原因乱窜。直到拿到确认之后才会发送1号帧。
超时重传,自动重传,ARQ
我们发现,如果接收方接收到了同一个编号的帧,那么它就认为重复了,但是还是会确认一次。
④性能分析
(2)后退N帧协议(GBN,goback-n)
①滑动窗口
GBN的滑动窗口,发送窗口多个窗口,接收窗口只有一个。
值得注意的是,发送窗口内的帧并不一定是全都已经发送了的,可能只发送一部分,重发的时候,发的是已经发送但未被确认的,所以不要认为是把整个窗口的全都发送了。
发送窗口,发送方只有在接受到ACK应答的时候,才可以移动窗口,窗口中的内容是,能发送的,有的已经发送等待确认,而窗口右边的是不能发送的,窗口大小固定,在没得到ACK时就不能移动。
接收窗口,接收方在接收到帧时,可以向右移,然后回复ACK,但是可以累积确认,比如接受了0,1,2,3之后回复一个ACK 4,表示的是前面全都已经接受了(换句话说,能回复确认4 说明窗口已经移动到了4,前面的一定已经接受到了),发送方也会相应的移动那么多。
接收方发送的应答帧(ACK)编号x是接收方希望收到的下一帧的编号。<吉大课程的ACK编号含义>
②发送方必须响应的三件事
上层指的是网络层。
GBN实际上是对超时事件的处理,如果发送方现在发送了,1-2-3-4等,由于某种原因,可能一直没收到接收方的应答(可能是一号帧出了问题,导致接收方一直等待一号帧但是发送方只发了一次,也可能是累积确认的那个帧的问题,导致一号帧一直没被确认),那么发送方会把1-2-3-4等重发一次(把已经发送但是没被确认的)。
③接收方要做的事
接收方发送的确认帧被发送方收到后,发送方滑动窗口右移,发送方会把新移入的帧传送一次。
接收方如果遇到了不需要的帧,那么就会把最高的已经确认的帧发送确认给发送方。
<接收方不耐烦,你别发一些我不需要的,我已经收到了这个!你赶紧再发一次我需要的>
④运行实例
<接收方不耐烦,每次遇到不需要的就说,我只要番茄! 然后发送方收到这个消息就会把所有已经发送但是没被确认的窗口里的帧都重发一次,当然除非是这个帧在发送方的窗口内,那么发送方的窗口移动一格,然后只发送新的,如果不在那就只能全都重发>
发送方重发有两个情况:第一个是接收方的不耐烦,第二个是超时。重发的都是在窗口中已经发送但没被确认的帧!!!!!
⑤总结
(3)选择重传协议(SR)
①发送方要做的事情
每个帧都独立定时,而且每个帧独立重传!!
②接收方要做的事
接收谁就ACK谁(而且你会发现即使是已经ACK了 也发送ACK防止ack没了),发送方接收到ACK谁就ACK谁。
只不过不是按序的接收方要把数据就缓存起来。
③窗口大小
(1)传输数据使用的两种链路
(2)信道划分介质访问控制(MAC,多路访问控制)
防止同时想要发送消息,使得混乱
静态划分信道是对信道预先进行划分。
(3)静态划分信道
①频分多路复用(FDM)
每个用户利用不同的频带同时发送。
②时分多路复用(TDM)
占用固定的时隙,很像并发中的循环轮转算法。
(4)随机访问介质访问控制
只有当电磁波到达结点时,这个结点才会知道这个信道上是否有人发送信息,由于传播时延的存在很容易冲突。
CSMA的共同特点是,先监听再发送数据,且是多个主机接入到一根总线上,但是CD是碰撞检测,它可以边发送数据边监听,还可以对碰撞实施策略;而CA是碰撞避免。
只有随机访问MAC会发生冲突。
①CSMA协议
他们都不能检测冲突,都在自己的道路上行走。
②CSMA/CD 协议
运用于总线型以太网(有线网)。
碰撞检测,边发送边监听。
相当于如果我发送了一个数据,等了2τ才接受到一个数据,说明对面没有在我发送的过程中发送,不然就会在2τ之前收到。
二进制指数退避算法:
k是重传次数,而r的取值是一个0到2的k次方-1的数。
最小帧长:
防止帧太短了,导致虽然碰撞达到了,但是在发送的时候没达到,发完了才发现碰撞。
③CSMA/CA协议
运用于无线网
(5)轮询访问MAC协议
①轮询协议:主结点轮流“邀请”从属结点是否发送数据。
②令牌传递协议:
只有掌握令牌的能发送数据。(所以不可能产生碰撞)
使用广播信道。
一、局域网拓扑结构
总线型最常用。
二、局域网传输介质
三、局域网介质访问控制方法
四、局域网的分类
WiFi是无线局域网的一种应用。
FDDI网(光纤技术):802.8
五、IEEE 802标准
以太网:802.3
无线局域网WLAN:802.11
FDDI网:802.8
令牌环网:802.5
LLC子层 为网络层提供服务。
MAC子层 处理传输媒体的内容,提供跟帧有关的功能。
一、概述
满足两个之一标准都能叫作以太网。
以太网是采用总线型结构(发展成了星型),使用CSMA/CD冲突控制。
二、服务
三、10BASE-T以太网
10是传输速率,BASE是传送的信号类型是数字信号,T是twisted 双绞线
四、以太网MAC帧
以太网MAC帧最小是64字节
采用曼彻斯特编码,不需要结束定界符,因为没发送数据的时候电平是不变的,可以通过这个来判断结束。
![]()
五、高速以太网
交换机可以隔离冲突。
WiFi的范围比无线局域网要小。
一、MAC帧格式
二、分类
每个WiFi都是一个基本服务集。
广域网覆盖物理层,链路层和网络层。
局域网覆盖物理层和链路层。
一、PPP协议(点对点协议,链路层协议)
面向字节的协议,面向字节的协议。
二、HDLC协议
HDLC协议比较可靠,而链路层不需要那么可靠,所以HDCL没那么常用。
三、PPP协议VSHDLC协议
透明传输方法:
PPP:字符插入法
HDLC:0比特填充法
每一个端口都是一个冲突域(网段)。
一、网桥
冲突域内可以单独通信
①透明网桥:
自学习:网络可以通过源地址得到,源地址对应的接口,以后要是有人要发给这个地址,那就可以直接找到了。
如果A->B,先找B的接口有没有没有的话其他的每个接口都发送,有的话直接按照接口转发,也会找A的接口有没有,没有的话记录下来。
②源路由网桥
发送帧找出方案。
二、以太网交换机(多接口网桥)
独占总带宽。
①直通式交换机
②存储转发式交换机
转发机制:自学习
和网桥是一样的。
三、冲突域和广播域
交换机的端口数就是冲突域数,
路由器的端口数就是广播域数,没有路由器就是1