文章目录
一.概述
数据链路层负责通过一条链路从一个结点向另外一个物理链路直接相连的相邻结点传输数据报。并且是无差错地传输。
这一章节主要讲四个方面:
1.链路层的功能
2.链路层的两种信道
3.局域网、广域网
4.链路层的设备
在正式学习之前先了解一些基本概念
结点:主要指的是主机,路由器。由一根链路连接的两个结点为相邻结点。
链路:从一个结点到相邻结点的一段物理线路。
数据链路:网络中两个结点之间的逻辑通道。因为当需要在一条线路上传输数据时,除了必须有一条物理线路外,还要有一些必要的通信协议来控制这些数据的传输。这些协议是逻辑成果,把视线数据传输协议的硬件和软件(逻辑成果)加到链路上就构成了数据链路。所以叫逻辑通道。
帧:链路层的协议数据单元,封装网络层数据报。
二.链路层功能
1.封装成帧
封装成帧,就是将网络层的IP数据报加头加尾形成链路层的数据单元——帧。这个头和尾就是帧的开始标志和结束标志。接收端在收到物理层上交的比特流后就能根据首部和尾部的标记,识别帧的开始和结束。
那这些首部和尾部标志又是什么呢?物理链路以字符为单位传输,ASCII码是7位编码,一共可以组合成128个不同的ASCII码,其中可以打印的有95个,而不可以打印的有33个。这33个字符就可以作为帧头部和尾部,对原数据不会产生影响。
0–31
分配给了控制字符,用于控制像打印机等一些外围设备。例如,12
代表换页/新页功能。此命令指示打印机跳到下一页的开头。
‘\0’
字符串结束符
-1
EOF文件结束符,这些都是不可以打印的。
在这里会出现一个问题,当传输的数据中有和帧结束的标志一样的字符,那么这个传输不就停止了么?这怎么解决
2.透明传输
我们希望数据链路层提供的是一种 “透明传输” 的服务。透明传输——是指不管传输的数据是什么样的比特组合,都应当能够在链路上传输。
达到透明传输的方法就是,当所传的数据中有与控制信息(帧界定符)一样是,就采取适当的信息,是接收方不会将这样的数据错误地处理。
2.1字符填充法
发送端的数据链路层在数据中出现标记字符前面插入一个转义字符(例如,也用一种特殊的控制字符“ESC”),
而在接收端的数据链路层对转义字符后面出现的标记字符不再解释为帧定界符,
并且在将数据送往网络层之前删除这个插入的转义字符。
如果转义字符也出现在数据中,那么解决的方法仍是在转义字符前插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除前面的一个。
2.2 0比特填充法
3.差错检测
现实的通信链路都不会是理想的,比特在传输的过程中可能会产生差错:1可能会变成0,0可能会变成1。这里我只来简单地介绍循环冗余检验技术(CRC)
如何计算的视频:
https://www.bilibili.com/video/BV1XX4y1M79c
4.流量控制和可靠传输
较高的发送速度和较低的接收能力不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
可靠传输:发送端发送什么,接收端就收到什么。
数据链路层的流量控制是点对点(两个相邻的结点之间)的,而传输层的流量控制是端到端(主机与主机之间)的。
数据链路层流量控制手段:接收方收不下就不回复确认
传输层流量控制手段:接收端给发送端发送一个窗口公告,告诉还能接收多少。
流量控制的方法主要有停止等待协议,
回退N帧协议(GBN),
选择重传协议(SR)。
4.1.停止等待协议
每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一帧。
停止等待协议,解决了数据丢包的问题。因为除了比特会出差错,在底层的信道会因为物理线路,设备故障,病毒攻击等原因,会导致数据包丢失。
但是停止等待协议的,效率很低,比如信道利用率比较低
要注意发送时延,传播时延。
4.2.滑动窗口协议
停止等待协议的效率是很低的,滑动窗口协议就比较高效一些。
4.2.1后退N帧协议(GBN)
后退N帧协议:发送窗口表示发送方目前可以发送的数据帧(不在窗口里面的数据不能发),不需要收到前面的发送的数据帧的确认帧。也就是说,在发送窗口里面的数据帧都可以发出去,不管接收方有没有收到(回复一个确认帧)。
但是,发送窗口不能随便移动,只能是接收方收到了发送窗口发出的第一个帧后,才能移动。但是GBN协议是累积确认的,就是说发送方接收到了确认帧就可以移动了。什么是累积确认,就是说如果我收到了确认帧号是3,那么说明3号之前的包括3号的数据帧,接收方已经接收了。
如果发送的数据帧和接收窗口所对应的数据帧不匹配的话,那么接收窗口是不会接收的。一个萝卜一个坑,错了就放不了进去。
那么那些错得数据帧就会被丢掉,直到等到对的数据帧。
超时了发送方就要重新发送那些没有被接收的数据。
4.2.2 选择重新协议(SR)
在后退N帧协议中,不对坑的数据帧就要被丢弃,这样其实是挺浪费时间的,你想人家来了就让人家在那里等着呗,干嘛要将人家赶回去,再跑一趟过来呢?这不符合实际。要对那个协议改进,所以有了选择重传协议。
在选择重传协议里面,来者不拒,如果来了发送方就先缓存起来。
等到接收窗口的第一个数据帧接收到了再往前移动,并且同时给发送方发送确认帧。
比如说,接收窗口第一个是5号帧,5号帧现在还没有接收到,6,7号已经来了,就先缓存下来。当5号帧接收到了,接收窗口才往后面移动。
如果超时了,就要重传。
三.两种链路
传输数据时使用两种链路:点对点链路和广播式链路
1.点对点链路
两个相邻的结点通过一个链路相连,没有第三者。普遍的应用就是ppp协议,常用于广域网。
2.广播式链路
所有主机共享通信介质。就像那个旺仔牛奶的广告:学校的广播“李子明,你妈妈找你”,大家都可以听到。
应用于早期的总线以太网、无线局域网,现在常用于局域网。
四.局域网
1.局域网的概念及特点
2.局域网的拓扑结构
3.网络适配器和MAC地址
我们知道了局域网的概念也了解了局域网的拓扑结构。那么现实中的计算机是如何连接到局域网上的呢?
计算机与外界局域网的连接是通过通信适配器(Adapter)。适配器本来是在主机箱内插入的一块网络接口板(或者是笔记本电脑中插入的一块PCMCIA卡)。
这种接口板又称为网络接口卡(Network Interface Card,NIC)或者简称网卡。目前多数计算机主板都已经嵌入了这种适配器,不再使用单独的网卡。
那计算机通过网络适配器接入局域网,那么怎么知道它通过哪个适配器接入的呢?MAC地址,它是适配器的标识符(身份证号),每一个适配器都有对应的一个MAC地址。
当多个站点连接在同一个广播信道上,想要实现两个站点的通信,则每一个站点都必须有唯一的标识,MAC地址也充当了这个角色。
其实准确来说网络适配器是计算机接入局域网的接口,MAC地址就是这接口标识符。
五.广域网
六.链路层设备
1.集线器
集线器(HUB)可以理解为将一些机器通过传输线连接在一个集中设备上进行信息交换,这个集中设备就是集线器。
冲突域表示的是两个或者以上站点同时发送将产生冲突的区域。
对于集线器来说,他只是简单的把主机之间的线连接起来,并没做什么其他的处理,所以所有相连的主机构成一个冲突域。这也就意味着:当一个主机在发送数据的时候,其他任何一个主机都不能再发送数据了,因为在一个介质上面两个同时发送会引起冲突。所以这是一种共享带宽的方式,代价就是冲突域变大。我们还应该知道的是,集线器是无法增加信道容量的,因为不论你连了多少线上去,同一时间只能发送一个,所以无法增加容量。集线器本质上相当于单根电缆的以太网。
集线器连接的主机多了,发生冲突的概率就会变高,这样会导致通信效率低。所以就出现了网桥和交换机,这两个设备既能扩展以太网也能提升通信效率。
2.网桥
网桥(Bridge)是一个局域网与另一个局域网之间建立连接的桥梁。网桥是属于数据链路层的一种设备,它的作用是扩展网络和通信手段,在各种传输介质中转发数据信号,扩展网络的距离,同时又有选择地将现有地址的信号从一个传输介质发送到另一个传输介质,并能有效地限制两个介质系统中无关紧要的通信。
网桥会根据MAC帧的目的地址对帧进行转发和过滤,但是集线器会将帧通过所有的端口转发出去。相当于去找人,网桥知道那个人的地址会选择路线,而集线器不知道地址满地找。
3.交换机
随着以太网的扩大,需要越来越多的网桥(一个网桥只能连接连个局域网),会浪费很多资源,所以讲网桥改进,增加端口就变成了交换机(多接口的网桥)。
用了交换机,交换机的每个端口都是可以独占传输媒体的带宽的。HUB和交换机的区别是:以一个10M的HUB和一个10M的交换机为例,HUB的每个端口带宽(正在使用)之和等于10M.而交换机是每个端口都是10M.因而HUB的传输过程数据产生碰撞较多,用户越多,性能越差,而交换机就不存在这个问题.