王道《计算机网络》第三章数据链路层 学习笔记
数据链路层
- 链路层的功能
- 链路层的两种信道
- 局域网、广域网
- 链路层的设备
数据链路层的功能概述
数据链路层的基本概念
结点:主机、路由器
链路:网络中两个结点之间的物理通道,根据传输介质的不同分为有线链路和无线链路
数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路
帧:链路层的协议数据单元,封装网络层数据报
功能概述
在物理层提供服务的基础上向网络层提供服务。主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路
- 功能一:为网络层提供服务:无确认无连接服务,有确认无连接服务,有确认面向连接服务(注意:有连接一定有确认)
- 功能二:链路管理:连接的建立、维持、释放
- 功能三:组帧
- 功能四:流量控制
- 功能五:差错控制:帧错/位错
封装成帧和透明传输
封装成帧
在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。
首部和尾部包含许多控制信息,其中一个重要作用是方便帧定界和帧同步。
组帧的两个要考虑的问题:
(1)如何定界(2)针对原始数据中与首部和尾部相同的数据怎么处理。
四种方法:
- 字符计数法:帧首部使用一个计数字段(第一个字节,8位)来标明帧内字符数
- 字符填充法:用两个字节SOH,EOT来标明开始和结束。在原始数据的EOT和SOH之前添加字节填充,来标识非头尾的SOH和EOT。
- 零比特填充法:发送端,只要连续5个1,就立即填入1个0;接收端做逆操作。
- 违规编码法:用不合法的编码来定界帧的起始和中止。
透明传输
不管所传数据是什么样的比特组合,都应当能够在链路上传送。
差错控制(检错编码)
差错
差错源于噪声
全局性噪声:由于线路本身电气特性所产生的随机噪声(热噪声),有信道固有的,随机存在的。解决办法:调高信噪比
局部性噪声:外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。解决办法:编码技术。
差错:位错,帧错(丢失、重复、失序)
数据链路层的差错控制
奇偶校验码
只能检查出奇数个比特错误,检错能力为50%。
CRC循环冗余码
下图可简单理解原理
只能做到无差错接收:凡是接收端数据链路层接受的帧,都能以非常接近1的概率认为这些帧在传输过程中没有产生差错。
可靠传输:数据链路层发送端发什么,接收端就收到什么。所以无差错接收还不是可靠传输。
差错控制(纠错编码)
海明码:发现双比特错,纠正单比特错
- 确定校验码位数r
海明不等式2r≥k+r+12^r \geq k+r+12r≥k+r+1,r为冗余信息位,k为信息位 - 确定校验码和数据的位置
- 求出校验码的值
- 检错并纠错(见视频或王道)
流量控制与可靠传输机制
数据链路层的流量控制
较高发送速度与较低的接收能力的不匹配,会造成传输出错,因此要进行流量控制。
链路层与传输层流量控制的区别
- 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
- 数据链路层流量控制手段:接收方收不下就不回复确认(确认帧)。
传输层流量控制手段:接收端给发送端一个窗口公告。
流量控制的方法
- 停止-等待协议:每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧
- 滑动窗口协议
- 后退N帧协议(GBN)
- 选择重传协议(SR)
协议 | 发送窗口 | 接收窗口 |
---|---|---|
停止-等待协议 | =1 | =1 |
后退N帧协议 | >1 | =1 |
选择重传协议 | >1 | >1 |
链路层的滑动窗口大小是固定的,传输层的滑动窗口是不固定的
可靠传输、滑动窗口、流量控制
可靠传输:发送端发什么,接收端就收什么
流量控制:控制发送速率
滑动窗口协议可解决可靠传输和流量控制
停止-等待协议
停止等待就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。
数据的丢失在不同的层体现不同,在链路层就为丢包
无差错情况
每发送1个数据帧就停止并等待,因此用1bit来编号就够。
有差错情况
超时计时器:设置的重传时间应当比帧传输的平均RTT更长一些。
1. 数据帧丢失或检测到帧出错
- 发送完一个帧后,必须保留它的副本。
- 数据帧和确认帧必须编号
2. ACK丢失
超时计时器,接收方丢弃重复的接收帧,重传丢失的确认帧
3. ACK迟到
停等协议性能分析
信道利用率太低
信道利用率
总的来说有三部分:发送帧的发送时延TDT_DTD,RTT,确认帧的发送时延TAT_ATA
如果题目没给确认帧的发送时延,就忽略不计。
信道吞吐率
后退N帧协议(GBN)
在停等协议基础上引入流水线技术,一次连续发多个帧,但是必须同时有以下处理
- 必须增加序号范围
- 发送方需要缓存多个分组
对应GBN和SR
GBN中的滑动窗口
发送窗口:发送方维持一组连续的允许发送的帧的序号
接收窗口:接收方维持一组连续的允许接收的帧的序号
发送方必须响应的三件事
- 上层的调用
- 收到了一个ACK:GBN协议中,对n号帧的确认采用累计确认的方式,标明接收方已经收到n号帧和它之前的全部帧(重要!)
- 超时事件
接收方要做的事
滑动窗口长度
若采用n个比特对帧编号,那么发送窗口的尺寸WTW_TWT应该满足:1≤WT≤2n−11\leq W_T \leq 2^n-11≤WT≤2n−1
因为如果发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧。(注意窗口的编号是循环编号)
重点总结
- 累计确认(偶尔捎带确认:接收方将确认帧捎带在它要发给发送帧的数据中)
- 接收方只按序接收帧,不按序无情丢弃。
- 确认序列号最大的,按序到达的帧(接收方在丢弃不按序的帧时,返回按序到达的帧中最大序列号的帧对应的确认帧)
- 发送窗口最大为2n−12^n-12n−1,接收窗口大小为1。
性能分析
优点:因连续发送数据帧而提高了信道利用率
缺点:在重传时必须把原来已经正确传送的数据帧重传,使传送效率降低。改进:选择重传协议。
选择重传协议
GBN协议的弊端
累计确认带来批量重传
可不可以只重传出错的帧?
选择重传协议中的滑动窗口
PS:注意窗口移动一定是下界得到了确认,如果下界没有确认,即使后面的窗口得到了确认,整个窗口仍然不能滑动
SR发送方必须响应的三件事
SR接收方要做的事
如果在图示情况时收到了4~7号帧,则返回一个ACK,接收方认为之前发送的ACK可能丢失。如果收到了其他号帧,就忽略该帧。
滑动窗口的长度
发送窗口最好等于接收窗口。(大了会溢出,小了没意义)
(具体演示见视频)
SR协议重点总结
信道划分介质访问控制
传输数据使用的两种链路
点对点链路
广播式链路
介质访问控制
广播式网络
定义:采取一定的措施,使得两对节点之间的通信不会发生相互干扰的情况。
信道划分介质访问控制
频分多路复用FDM
频分复用的所有用户在同样的时间占用不同的带宽(频率带宽)资源
优点:充分利用传输介质带宽,系统效率较高;由于技术比较成熟,实现也比较容易
时分多路复用TDM
将时间划分为一段段等长的时分复用帧,每一个时分复用的用户在每一个TDM帧中占用固定序号的时隙,所有用户轮流占用信道
统计时分多路复用STDM
优点:更加高效,提高信道利用率
波分多路复用WDM(考的少)
WDM即为光的频分多路复用
码分多路复用CDM
见视频或王道书吧。。。
ALOHA协议
动态分配信道:又叫动态媒体接入控制/多点接入,特点是信道并非在用户通信时固定分配给用户。
随机访问介质访问控制:所有用户可随机发送信息,发送信息时占全部带宽。由此带来的冲突由若干协议来解决。
纯ALOHA协议
思想:不监听信道,不按时间槽发送,随机重发。
直到收到来自接收方的确认帧为止。
时隙ALOHA协议
关于ALOHA要知道的事
吞吐量:在一段时间内成功发送的平均帧数
CSMA协议–先听再说
CSMA协议
全称:载波监听多路访问协议。CS:载波侦听;MA:多点接入
协议思想:发送帧之前,监听信道
1-坚持CSMA
信道忙则一直监听,直到空闲马上传输。
如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程。
非坚持CSMA
p-坚持CSMA
!!!这里上面好像错了,应该为“忙则持续监听”
上面三种,冲突检测是通过发送数据帧后,是否接收到确认帧来判断,未收到则认为是冲突。这导致,发生冲突后还是要坚持把数据帧发送完,造成了浪费。
三种CSMA对比总结
同理,p-CSMA应该是“忙则持续监听”
CSMA/CD协议
先听再说,边听边说
CSMA/CD协议
载波监听多点接入/碰撞检测
MA表明是总线型网络,CD说明是半双工网络
传播时延对载波监听的影响
- 每个站在监听时,仅能监听自己附近的信道有无信号到来,而无法监听整条信道有无信号,因此传播时延会导致监听了仍然会发生碰撞。
- 要知道自己发送的数据是否与别人碰撞的最长时间是2τ2\tau2τ,其中τ\tauτ为单程端到端传播时延,2τ2\tau2τ又叫总线的端到端往返传播时延。区间表示为(0,2τ)(0,2\tau)(0,2τ)
- 碰撞检测是通过对数据帧的差错控制进行的,比如A和B同时向对方发数据(由1分析,这是完全可能的),当B收到A的数据并进行检错后,发现数据有误,这个时候,B才知道自己发送的数据在信道上发生了碰撞。
如何确定碰撞后的重传时机
最小帧长问题
上面所说的碰撞检测,都是发送的第一批数据到达接收方进行的,在发送方知道自己发送的数据发生了碰撞之前,后续的数据还是会发到信道上。
所以引出一个问题:发送方发送的帧过短,导致在检测到碰撞之前,帧已经发送完毕。故要定义最短帧长:帧的传输时延至少要两倍于信号在总线中的传播时延。
这里巩固传输时延是对于端而言的,传播时延是对于信道而言的。
CSMA-CA协议
载波监听多点接入/碰撞避免协议
CSMA-CD协议运用于总线式以太网,而CSMA-CA协议运用于无线局域网。
工作原理
隐蔽站的问题通过RTS/CTS帧来解决
CSMA/CD与CSMA/CA比较
轮询访问介质访问控制
信道划分介质访问控制(MAC)协议
- 基于多路复用技术划分资源
- 网络负载重:共享信道效率高,且公平;网络负载轻:共享信道效率低
随机访问MAC协议
- 用户根据意愿随机发送信息,发送信息时可独占信道带宽
- 网络负载重:产生冲突开销;网络负载轻:共享信道效率高,单个结点可利用信道全部带宽
轮询访问MAC协议,既不产生冲突,又要发送时占全部带宽。包括:
- 轮询协议
- 令牌传递协议
轮询协议
主结点轮流“邀请”从属结点发送数据
问题:
- 轮询开销
- 等待延迟(对于后面的主机)
- 单点故障(主结点宕机)
令牌传递协议
令牌环网(物理上星型拓扑,逻辑上环形拓扑)如下如所示。令牌环网无碰撞。
令牌:一个特殊格式的MAC控制帧,不含任何信息。用来控制信道的使用,确保同一时刻只有一个结点独占信道。
每个结点都可以在一定的时间内(令牌持有时间)获得发送数据的权力,并不是无限制地持有令牌。
存在的问题:1. 令牌开销;2. 等待延迟;3. 单点故障
常用于负载较重、通信量较大的网络中。
局域网的基本概念和体系结构
局域网
局域网的上述特点是由网络拓扑,传输介质与介质访问控制方法决定的
网络拓扑
总线型拓扑较好,最广泛使用
局域网传输介质
局域网介质访问控制方法
局域网的分类
PS:WIFI是无线局域网的一种应用
IEEE 802标准
IEEE 802.3:以太网介质访问控制协议(CSMA/CD)及物理层技术规范
IEEE 802.5:令牌环网的介质访问控制协议及物理层技术规范
IEEE 802.8:光纤技术资讯组,提供有关光纤联网的技术咨询(FDDI)
IEEE 802.11:无线局域网的介质访问控制协议及物理层技术规范
MAC子层和LLC子层
以太网
概述
PS:基带是数字信号,宽带是模拟信号
以太网提供无连接、不可靠的服务
纠错是由高层实现
传输介质和拓扑结构的发展
10BASE-T以太网
适配器与MAC地址
!!此处应为6组2位16进制数表示,也就是12个16进制数
以太网的MAC帧
- 数据链路层是对IP数据报加头加尾
- 为什么有帧开始定界符而没有结束定界符:曼彻斯特编码只有在有比特运输时才有电位变化,无比特传输电压不变,所以易于判定帧结束的位置。而帧开始的位置,由于前面还有前同步码,所以必须有一个开始定界符。
高速以太网
这里的全双工,由于交换机隔离了冲突域,所以每个连到交换机上的主机都可以发送和接收,且不会发送冲突。
IEEE 802.11无线局域网
IEEE 802.11
符合IEEE 802.11b和IEEE 802.11g标准的就是WIFI
802.11的MAC帧头格式
RA是接收方接入点的MAC地址,TA是发送方接入点的MAC地址;DA是接收方的MAC地址,SA是发送方的MAC地址。
ap会随着位置变化而变化,比如手机此刻离1基站近,那么此刻接入点就是1基站;另一时刻离2基站近,那么接入点就变为2基站。
802.11的MAC帧头格式
BSSID就是AP基站的地址。
考试时根据情景,选择相应的帧格式
无线局域网的分类
有固定基础设施无线局域网
WIFI的名字就是一个服务集标识符。一个服务集标识符对应一个基站,一个无线接入点。
无固定基础设施无线局域网的自组织网络
仅作了解
PPP协议&HDLC协议
广域网
广域网覆盖物理层、链路层一直到网路层,而局域网只覆盖物理层和链路层。
局域网通常采用多点接入技术,而广域网采用点对点连接。
广域网强调资源共享,而局域网强调数据传输。
PPP协议的特点
PPP协议应满足的要求
PPP协议无需满足的要求
PPP协议的三个组成部分
PPP协议的状态图
PPP协议的帧格式
插入转义字符的意思是,在数据部分如果碰到帧定界符,就在它前面插入转义字符7D(此处待查证),即为字节填充(区别于0比特插入法)
面向字节是说PPP的帧格式最小单位是字节
PPP也能通过0比特插入来实现透明传输
看到弹幕的一个问题,百度了一下
HDLC协议
异步传输是面向字符的传输,而同步传输是面向比特的传输。同步传输的比特分组要大得多。它不是独立地发送每个字符,每个字符都有自己的开始位和停止位,而是把它们组合起来一起发送。这些组合就是数据帧。
HDLC的站
HDLC的帧格式
控制字段和PPP中的协议字段类似
记住HDLC帧的类型:信息帧,监督帧,无编号帧
PPP&HDLC
PS:为什么HDLC能实现可靠传输,但是用的反而不多?没必要,现在一般网路层和链路层不需要差错控制,这样会加大网络延迟,网络层和链路层只是尽量交付的传输,可靠传输交给传输层。
链路层设备
物理层扩展以太网
主机和集线器之前的距离不能超过100米,否则失真严重。现在想要距离更远的主机之间进行通信。在物理层扩展方法如下:
方法1:
方法2:
链路层扩展以太网
网桥分割了冲突域,A与B通信和B与C通信两者互不干扰。所以如果上图每一个网段的数据传输速率是10Mb/s,那么使用网桥合起来就是30Mb/s。而如果使用集线器,则A~F属于一个冲突域,所以合起来仍是10Mb/s。
透明网桥
注意转发表中记录的相当于是一种连接关系,譬如A与1接口可以相连,F与2接口可以相连。这些连接关系可以方便后续数据传输。
转发表中填的是源地址,比如A想发给B,A的数据到了网桥1后,网桥在自己的转发表中寻找地址为A的项,没有则填入。接着网桥在转发表中找也没有目的地址B的项,也没有,就直接将数据从除了1端口之外的端口发出;如果有,就直接按照对应的端口发给B。
源路由网桥
广播发出的发现帧到达目的站后原路返回,然后在源站处在所有路由信息(因为返回的发现帧可能不止一个)中选出最优的路由信息,下一次发送就可以直接使用。
以太网交换机(多接口网桥)
每一个端口都是一个冲突域,每一个冲突域可以独占媒体带宽。
以太网交换机的两种交换方式
冲突域和广播域
链路层设备,一个端口为一个冲突域
广播域要看有没有路由器,没有路由器的都是一个广播域。
(简单记录,有误再改)
王道《计算机网络》第三章数据链路层 学习笔记相关推荐
- 计算机网络第三章 数据链路层重点复习(点对点)
目录 前言 系列文章目录 3.1 使用点对点通信的数据链路层 3.1.1 点对点通信的主要步骤 3.1.2 三个基本问题 3.2 点对点协议PPP 3.2.1 PPP协议的特点 3.2.2 PPP协议 ...
- 计算机网络第三章——数据链路层(仅记录我所认为重要的知识点)
计算机网络第三章--数据链路层 数据链路层使用的信道类型 点对点信道 广播信道 数据链路层位置 数据链路层的3个基本问题 数据链路和帧 链路 数据链路 数据链路层传输的是帧 封装成帧 透明传输问题 差 ...
- 计算机网络第三章数据链路层习题答案
计算机网络第三章数据链路层习题答案 3-02数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点. 答:链路管理 帧定界 流量控制 差错控制 将数据和控制信息区分开 透 ...
- 【计算机网络】南航计算机网络第三章 数据链路层
文章目录 计算机网络第三章 数据链路层 3.1 使用点对点信道的数据链路层 帧--数据链路层的协议数据单元 基本问题 封装成帧 透明传输 差错检测 3.2 点对点协议PPP(Point-to-Poin ...
- 计算机网络——第三章 数据链路层(详细附图)
第三章 数据链路层 3.1 数据链路层概述 3.1.1 本章问题 封装成帧 差错检测 可靠传输 广播信道的数据链路层 网桥和交换机的工作原理 3.2 封装成帧 封装成帧 透明传输 面向字节的物理链路 ...
- 计算机网络 第三章 数据链路层
有一说一,王道的计算机网络个人感觉不尽如意,数据链路层的内容安排实在是有些乱,里面并不是按照课本来的,而是穿插了很多其它章节的知识. 3.1 数据链路层的功能 数据链路层在物理层提供服务的基础上,向网 ...
- 计算机网络 第三章 数据链路层总结
第3章 数据链路层 数据链路层的地位 数据链路层是实现设备之间通信的非常重要的一层 数据链路层使用的信道 点对点信道 这种信道使用一对一的点对点通信方式 广播信道 使用一对多的广播通信方式 因此必须使 ...
- 计算机网络第三章——数据链路层
数据链路层 一.学习目标: 二.概念 三.数据链路层的几个共同问题 3.1 数据链路 链路 数据链路 3.2 帧 3.3 三个基本问题 3.3.1 封装成帧 3.3.2 透明传输 3.3.3差错检错 ...
- 王道计算机网络第三章
第三章 1数据链路层功能概述 2封装成帧和透明传输 3差错控制 4.1流量控制以及可靠传输机制 4.2停止-等待协议 4.3后退N帧协议(GBN) 4.4选择重传协议(SR) 5.1信道划分介质访问控 ...
最新文章
- 标星 6.1K!《Python 机器学习在线指南》分享
- Android数据填充器LayoutInflater
- 在python中、列表中的元素可以是_在Python中存储一个列表的元素,在另一个列表中 – 通过引用?...
- Android自带的emoji表情的使用
- kaggle House_Price_XGBoost
- 采购申请不固定供应商怎么破?
- redhat enterprise linux 5 上安装openoffice3.0 1
- 前端学习(1568):封装一个面包屑导航
- poj3279 反转 挑战程序设计竞赛
- 什么是云存储网关CSG
- python程序运行结果始终为0_Python:始终运行程序
- 记一次微信数据库解密过程
- [转载] Python Numpy基础总结
- 小白记事本--链表--loading
- Python分布式爬虫打造搜索引擎(四)
- matlab画伯德图(带谐振点和-3dB带宽)
- 固定表头和第一列、内容可滚动的table表格
- R_ggparliament_会议布局
- 使用java计算数组方差和标准差
- 封装Python脚本:使用企业微信机器人发送消息至企业微信