计算机网络笔记(湖科大)_ Part 03 数据链路层
文章参考于B站:计算机网络微课堂
三、数据链路层
1、概述
链路是从一个结点到相邻结点的一段物理线路,数据链路则是在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(如协议的实现)
网络中的主机、路由器等都必须实现数据链路层
局域网中的主机、交换机等都必须实现数据链路层
从层次上来看数据的流动
仅从数据链路层观察帧的流动
存在三个问题
数据链路层传送的协议数据单元是帧
封装成帧
- 封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。
- 首部和尾部的一个重要作用就是进行帧定界。
差错控制
在传输过程中可能会产生比特差错:1 可能会变成 0, 而 0 也可能变成 1。
可靠传输
可靠传输:接收方主机收到有误码的帧后,是不会接受该帧的,会将它丢弃
不可靠传输:如果数据链路层向其上层提供的是不可靠服务,那么丢弃就丢弃了,不会再有更多措施
如果数据链路层向其上层提供的是可靠服务,那就还需要其他措施,来确保接收方主机还可以重新收到被丢弃的这个帧的正确副本
以上三个问题都是使用点对点信道的数据链路层来举例的
如果使用广播信道的数据链路层除了包含上面三个问题外,还有一些问题要解决
如图所示,主机A,B,C,D,E通过一根总线进行互连,主机A要给主机C发送数据,代表帧的信号会通过总线传输到总线上的其他各主机,那么主机B,D,E如何知道所收到的帧不是发送给她们的,主机C如何知道发送的帧是发送给自己的
可以用编址(地址)的来解决
将帧的目的地址添加在帧中一起传输
还有数据碰撞问题
随着技术的发展,交换技术的成熟,
在有线(局域网)领域 使用点对点链路和链路层交换机的交换式局域网取代了
共享式局域网
在无线局域网中仍然使用的是共享信道技术
以太网协议和ppp协议都是数据链路层协议,所以一个个以太网在链路层是Mac帧,而我们的ppp协议在链路层是组成ppp帧,
广域网和局域网只是计算机网络的区分,与协议没有什么直接的关系!
2、封装成帧
封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧
- 帧头和帧尾中包含有重要的控制信息
发送方的数据链路层将上层交付下来的协议数据单元封装成帧后,还要通过物理层,将构成帧的各比特,转换成电信号交给传输媒体,那么接收方的数据链路层如何从物理层交付的比特流中提取出一个个的帧?
答:需要帧头和帧尾来做帧定界
但比不是每一种数据链路层协议的帧都包含有帧定界标志,例如下面例子
前导码
- 前同步码:作用是使接收方的时钟同步
- 帧开始定界符:表明其后面紧跟着的就是MAC帧(局域网中的主机号)
另外以太网还规定了帧间间隔为96比特时间,因此,MAC帧不需要帧结束定界符
总结
广域网:采用点对点链路(一对一传递):准守ppp协议,组成ppp帧(由于是一对一,需要帧定界标识)
**局域网:采用广播式链路(数据共享) :遵守以太网协议,组成以太网的Mac帧(由于是共享,需要定位主机号,加前导码)**另外以太网
还规定了帧间间隔为96比特时间,因此,MAC帧不需要帧结束定界符
3、差错控制
奇偶校验码
循环冗余CRC(Cyclic Redundancy Check)
循环冗余校验 CRC 是一种检错方法,而帧校验序列 FCS 是添加在数据后面的冗余码
4、可靠传输
这三种可靠传输实现机制的基本原理并不仅限于数据链路层,可以应用到计算机网络体系结构的各层协议中
1、停止等待协议SW
停止等待协议解决如下四种情况!
【注意事项】
2、回退N帧协议GBN
也可被称为滑动窗口协议
在相同的时间内,使用停止-等待协议的发送方只能发送一个数据分组,而采用流水线传输的发送方,可以发送多个数据分组
回退N帧协议在流水线传输的基础上,利用发送窗口来限制发送方可连续发送数据分组的个数
无差错情况流程
发送方将序号落在发送窗口内的0~4号数据分组,依次连续发送出去
他们经过互联网传输正确到达接收方,就是没有乱序和误码,接收方按序接收它们,每接收一个,接收窗口就向前滑动一个位置,并给发送方发送针对所接收分组的确认分组,在通过互联网的传输正确到达了发送方
发送方每接收一个、发送窗口就向前滑动一个位置,这样就有新的序号落入发送窗口,发送方可以将收到确认的数据分组从缓存中删除了,而接收方可以择机将已接收的数据分组交付上层处理
累计确认
累计确认
优点:
- 即使确认分组丢失,发送方也可能不必重传
- 减小接收方的开销
- 减小对网络资源的占用
缺点:
- 不能向发送方及时反映出接收方已经正确接收的数据分组信息
有差错情况
在传输数据分组时,5号数据分组出现误码,接收方通过数据分组中的检错码发现了错误
于是丢弃该分组,而后续到达的这剩下四个分组与接收窗口的序号不匹配
接收同样也不能接收它们,讲它们丢弃,并对之前按序接收的最后一个数据分组进行确认,发送ACK4,每丢弃一个数据分组,就发送一个ACK4
当收到重复的ACK4时,就知道之前所发送的数据分组出现了差错,于是可以不等超时计时器超时就立刻开始重传,具体收到几个重复确认就立刻重传,根据具体实现决定
如果收到这4个重复的确认并不会触发发送立刻重传,一段时间后。超时计时器超时,也会将发送窗口内以发送过的这些数据分组全部重传
若WT超过取值范围,例如WT=8,会出现什么情况?(当分组数据超过滑动窗口定义的最大值时!)
3、选择重传协议SR
总结
5、Mac地址、Ip地址、ARP协议
6、Mac地址
- 使用点对点信道的数据链路层不需要使用地址(也即是一对一的通信)
- 使用广播信道的数据链路层必须使用地址来区分各主机(传给局域网中的所有主机,通过Mac区分主机)
广播信道的数据链路层必须使用地址(Mac)
MAC地址又称为硬件地址或物理地址。请注意:不要被 “物理” 二字误导认为物理地址属于物理层范畴,物理地址属于数据链路层范畴
2、IEEE 802局域网的MAC地址格式
组织唯一标识符OUI
- 生产网络设备的厂商,需要向IEEE的注册管理机构申请一个或多个OUI
网络接口标识符
- 由获得OUI的厂商自行随意分配
EUI-48
- 48是这个MAC地址的位数
对于使用EUI-48空间的应用程序,IEEE的目标寿命为100年(直到2080年),但是鼓励采用EUI-64作为替代
关于无效的 MAC 帧
- 数据字段的长度与长度字段的值不一致;
- 帧的长度不是整数个字节;
- 用收到的帧检验序列 FCS 查出有差错;
- 数据字段的长度不在 46 ~ 1500 字节之间。
- 有效的 MAC 帧长度为 64 ~ 1518 字节之间。
对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。
3、IEEE 802局域网的MAC地址发送顺序
- 字节传输
- bit传输
4、单播MAC地址举例
存在指定的目的Mac地址
主机B给主机C发送单播帧,主机B首先要构建该单播帧,在帧首部中的目的地址字段填入主机C的MAC地址,源地址字段填入自己的MAC地址,再加上帧首部的其他字段、数据载荷以及帧尾部,就构成了该单播帧
主机B将该单播帧发送出去,主机A和C都会收到该单播帧
- 主机A的网卡发现该单播帧的目的MAC地址与自己的MAC地址不匹配,丢弃该帧
- 主机C的网卡发现该单播帧的目的MAC地址与自己的MAC地址匹配,接受该帧
并将该帧交给其上层处理
5、广播MAC地址举例
假设主机B要发送一个广播帧,主机B首先要构建该广播帧,在帧首部中的目的地址字段填入广播地址,也就是十六进制的全F,源地址字段填入自己的MAC地址,再加上帧首部中的其他字段、数据载荷以及帧尾部,就构成了该广播帧
主机B讲该广播帧发送出去,主机A和C都会收到该广播帧,发现该帧首部中的目的地址字段的内容是广播地址,就知道该帧是广播帧,主机A和主机C都接受该帧,并将该帧交给上层处理
6、多播MAC地址举例
多播,也称为"组播",将网络中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅仅在同一分组中进行,其他的主机没有加入此分组不能收发对应的 数据。
假设主机A要发送多播帧给该多播地址。将该多播地址的左起第一个字节写成8个比特,第一个字节的最低比特位是1,这就表明该地址是多播地址。
快速判断地址是不是多播地址,就是上图所示箭头所指的第十六进制数不能整除2(1,3,5,7,9,B,D,F),则该地址是多播地址
假设主机B,C和D支持多播,各用户给自己的主机配置多播组列表如下所示
主机B属于两个多播组,主机C也属于两个多播组,而主机D不属于任何多播组
主机A首先要构建该多播帧,在帧首部中的目的地址字段填入该多播地址,源地址点填入自己的MAC地址,再加上帧首部中的其他字段、数据载荷以及帧尾部,就构成了该多播帧
- 主机A将该多播帧发送出去,主机B、C、D都会收到该多播帧
- 主机B和C发现该多播帧的目的MAC地址在自己的多播组列表中,主机B和C都会接受该帧
- 主机D发现该多播帧的目的MAC地址不在自己得多播组列表中,则丢弃该多播帧
给主机配置多播组列表进行私有应用时,不得使用公有的标准多播地址
7、IP地址
IP地址属于网络层的范畴,不属于数据链路层的范畴
下面内容讲的是IP地址的使用,详细的IP地址内容在网络层中介绍
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W9DlfHLL-1636036287510)(计算机网络笔记(湖南科大教程).assets/image-20211102082051653.png)]
数据包转发过程中IP地址与MAC地址的变化情况
8、ARP协议
如何从IP地址找出其对应的MAC地址?
ARP协议
ARP高速缓存表
当主机B要给主机C发送数据包时,会首先在自己的ARP高速缓存表中查找主机C的IP地址所对应的MAC地址,但未找到,因此,主机B需要发送ARP请求报文,来获取主机C的MAC地址
ARP请求报文有具体的格式,上图的只是简单描述
ARP请求报文被封装在MAC帧中发送,目的地址为广播地址
主机B发送封装有ARP请求报文的广播帧,总线上的其他主机都能收到该广播帧
收到ARP请求报文的主机A和主机C会把ARP请求报文交给上层的ARP进程
主机A发现所询问的IP地址不是自己的IP地址,因此不用理会
主机C的发现所询问的IP地址是自己的IP地址,需要进行相应
动态与静态之间的区别:
ARP协议只能在一段链路或一个网络上使用,而不能跨网络使用
ARP协议的使用是逐段链路进行的
ARP表中的IP地址与MAC地址的对应关系记录,是会定期自动删除的,因为IP地址与MAC地址的对应关系不是永久性的
5 ~ 8 小总结
**我们的Mac地址指的是网络接口的编号,而ip地址指的则是我们的主机地址(网络号+主机号),我们的网络层传输给逻辑上指定的主机,然后数据链路层找到主机上的物理层的具体网卡!**数据链路层接收网络层封装好的ip数据报,这是时ip数据报上已经确定了起始和目的ip,全程不变,然后再此基础上链路层封装成帧,指定起点Mac和终点Mac,每走一个设备就进行更新起始和终止的Mac,也就是ip确定了全程的起点和终点,mac确定其中每条路(链路)的起点和终点!
可以看作行程表和车票之间的关系
9、集线器和交换机的区别
(1)、集线器-在物理层扩展以太网
其本质还是总线型共享链路
传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。
采用双绞线的以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器 (hub)。
集线器是也可以看做多口中继器,每个端口都可以成为一个中继器,中继器是对减弱的信号进行放大和发送的设备
集线器的以太网在逻辑上仍是个总线网,需要使用CSMA/CD协议来协调各主机争用总线,只能工作在半双工模式,收发帧不能同时进行
使用集线器扩展:将多个以太网段连成更大的、多级星形结构的以太网
- 优点
- 使原来属于不同碰撞域的以太网上的计算机能够进行跨碰撞域的通信。
- 扩大了以太网覆盖的地理范围。
- 缺点
- 碰撞域增大了,但总的吞吐量并未提高。
- 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
(2)、以太网交换机-在数据链路层扩展以太网
- 扩展以太网更常用的方法是在数据链路层进行。
- 早期使用网桥,现在使用以太网交换机。
网桥
- 网桥工作在数据链路层。
- 它根据 MAC 帧的目的地址对收到的帧进行转发和过滤。
- 当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的MAC 地址,然后再确定将该帧转发到哪一个接口,或把它丢弃。
交换机
- 1990 年问世的交换式集线器 (switching hub) 可明显地提高以太网的性能。
- 交换式集线器常称为以太网交换机 (switch) 或第二层交换机 (L2 switch),强调这种交换机工作在数据链路层。
- 以太网交换机实质上就是一个多接口的网桥
(3)、集线器HUB与交换机SWITCH区别
使用集线器互连而成的共享总线式以太网上的某个主机,要给另一个主机发送单播帧,该单播帧会通过共享总线传输到总线上的其他各个主机
使用交换机互连而成的交换式以太网上的某个主机,要给另一个主机发送单播帧,该单播帧进入交换机后,交换机会将该单播帧转发给目的主机,而不是网络中的其他各个主机
这个例子的前提条件是忽略ARP过程,并假设交换机的帧交换表已经学习或配置好了
以太网交换机的交换方式
- 存储转发方式
- 把整个数据帧先缓存后再进行处理。
- 直通 (cut-through) 方式
- 接收数据帧的同时就立即按数据帧的目的 MAC 地址决定该帧的转发接口,因而提高了帧的转发速度。
- 缺点是它不检查差错就直接将帧转发出去,因此有可能也将一些无效帧转发给其他的站。
这个例子的前提条件是忽略ARP过程,并假设交换机的帧交换表已经学习或配置好了
对比集线器和交换机
多台主机同时给另一台主机发送单播帧
集线器以太网:会产生碰撞,遭遇碰撞的帧会传播到总线上的各主机
交换机以太网:会将它们缓存起来,然后逐个转发给目的主机,不会产生碰撞
这个例子的前提条件是忽略ARP过程,并假设交换机的帧交换表已经学习或配置好了
集线器扩展以太网和交换机扩展以太网区别 :
单播
广播
多播
广播域(broadcast domain):指这样一部分网络,其中任何一台设备发出的广播通信都能被该部分网络中的所有其他设备所接收。