文章目录
- 1 数据链路基本概念和问题
- 1.1 基本概念
- 1.2 基本问题
- (1)封装成帧
- (2)透明传输
- (3)差错控制
- 2.数据链路层协议
- 2.1 点对点 PPP协议
- 2.1.1 需要实现的
- 2.1.2 PPP组成
- 2.1.3 帧格式
- 2.1.4 工作流程
- 2.2 广播 CSMA/CD协议
- 2.2.1 协议要点
- 2.3 集线器,交换器
- 集线器
- MAC地址
- MAC帧格式
- 3 扩展以太网
- 3.1 物理层扩展方式
- 3.2 数据链路层扩展方式
- 3.2.1 交换机的自学功能
- 3.3 虚拟局域网
- 4 高速以太网
- 4.1 100BASE-T
- 4.2 吉比特以太网
内容笔记来源于谢希任老师《计算机网络》
重点
理解MAC地址
理解交换机
理解VLAN
理解高速以太网
数据链路是计算机网络的底层
1 数据链路基本概念和问题
1.1 基本概念
链路 或者叫物理链路 是一段点到点的物理线段(有线或者无线)中间没有任何其他交换结点
一条链路只是一条通路的组成部分
数据链路 或者叫数据链路 在链路的基础上加上控制协议和实现协议的软件和硬件
现在最常用的是使用适配器(网卡)来实现这些协议的硬件和软件,一般的适配器都包括了数据链路层和物理层的功能
数据链路使用的信道主要有以下两种类型
- 点对点信道,使用PPP协议
- 广播信道,使用CSMA/CD协议
1.2 基本问题
对于数据链路层而言,以下三个问题很重要
(1)封装成帧
我们知道,互联网上传输数据都以分组(即IP数据报)为传输单位进行传输,所以到了底层数据链路层也得保证不混淆不同的IP报
所以封装成帧就是在网络层的IP数据报上加上首部和尾部,构成帧
那么首部和尾部有什么作用呢?
最重要的
- 我们首部和尾部的重要作用就是进行帧定界,通俗来讲就是 区分一个帧和另一个帧(核心目的就是为了不让IP数据报混淆)
- 首部和尾部包含一些控制信息
所以综合来看,一个帧包括的内容有,我们要传输的数据,和首部尾部
那么为了提高传输效率,要尽可能使得传输数据部分长度大于首部尾部的长度,但每一种数据链路协议都规定了数据部分的长度上限——称为最大传输单元MTU
数据链路层传送的是帧 帧是传输数据的单位
解决方式 用控制字符进行
(2)透明传输
传播的数据部分出现控制字段,如开始和结束
如果不做处理的话,会导致接收方误以为提前结束,这个数据部分的EOS应该不被接收方看见
即应该被认为是透明的,所以叫他为透明传输
实现的方式是怎样的呢?
解决方式 通过字节填充解决.数据中出现控制字符的时候,前面加入一个转义字符“ESC” 十六进制编码1B
可能问题
就是IP层交付的数据和DL数据链路层实际传输的数据不一样
(3)差错控制
在传输过程中不可能一点都不出错,如0变成1,1变成0,这就叫做比特差错。对于差错我们的解决方式是
目前采用较多的是循环冗余检测方法CRC
发送端
原始数据M,进行n位冗余码,商定一个除数P(位数n+1),
1 原始数据M后面加n个零做被除数D
2 D除以P得到的余数(该余数又叫帧检验序列FCS)加在M后面
接收端
得到的信息除以除数P,余数为0,接受,否则丢弃
注意我们上面讲到的是比特差错,CRC仅能排查比特差错
实际上除了比特差错,还有其他差错,就是帧丢失,帧重复和帧失序
其中我们要注意的是仅仅排除比特差错是不够的,实现了无比特差错的传输叫做无差错传输
但是只有排除了所有错误,如帧丢失,帧重复和帧失序之后才能叫做可靠传输,即发送什么就收到什么
这些排除错误的方法(帧编号,确认和重传机制)是往往是更高层来实现的
2.数据链路层协议
2.1 点对点 PPP协议
使用最多的是点对点协议PPP
我们前面反复提到互联网用户如果想要连入互联网,必须连接到某个ISP,其中我们的PPP协议广泛应用于本地计算机和ISP的数据链路层的通信
2.1.1 需要实现的
PPP协议需要实现的一些功能
那么除了我们刚才讲到的 封装成帧,透明传输,差错检测这些基本问题,还实现了简单高效,支持多种网络层协议,支持多种类型链路,检测连接状态,数据压缩算法的协商
2.1.2 PPP组成
一个将IP数据报封装到串行链路的方法,是同步还是异步
一个链路控制协议LCP(建立,配置,和测试数据链路的连接
一套网络控制协议NCP(支持多种网络层协议)
2.1.3 帧格式
开始结束字段 F=0x7E 1字节
地址字段 A=0xFF 因为是点对点,所以设置就维持不变 1字节
控制字段 C=0x03 1字节
开始结束和地址字段,控制字段实际上没有携带什么信息。他是最初设计的时候考虑之后可能会用到,但目前为止也没有用到
协议字段 不同值代表不同协议 2字节
如0x0021时,是IP数据报,若为0xC021 ,则为LCP数据报
信息字段 要传输的IP数据报或,链路控制数据,网络控制数据等
检验字段 FCS
对于透明传输问题
异步传输方法是——字节填充法
当信息字段中出现和标志字段一样的比特(0x7E)组合时,在前面添加转义字符0x7D,同时把0x7E变为0x5E传输。整体变为(0x7D,0x5E)传输
当信息字段出现转义符(0x7D)的时候,在前面再添加一个转义字符0x7D,同时把0x7D变为0x5D传输。整体变为(0x7D,0x5D)传输
当信息中出现ASCLL控制码时候,也同理
同步传输方法是——零比特填充法
发送端,先扫描整个信息字段(往往硬件实现)只要发现有5个连续的1,则立即填入一个0,因此经过这种比特的填充后,信息字段就不会出现6个1 的情况
接收端,首先找到标志字段F确定边界,然后用硬件对内部比特流扫描去掉0
2.1.4 工作流程
建立工作状态
- 用户拨号接入ISP后,建立了一条从用户个人电脑到ISP的物理连接
- 用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接。这些分组及其响应选择了一些将要选择的PPP参数
- 进行网络层配置,NCP给新接入的用户分配一个临时IP,正式接入互联网
通信完毕
- NCP释放网络层连接,收回去分配出去的IP
- LCP释放数据链路层连接
- 释放物理层连接
2.2 广播 CSMA/CD协议
接下来重点讨论局域网部分的一对多通信,其中以太网可以看成是一种实现局域网通信的技术标准(目前逐渐大家把它当作局域网的同义词。以太网的拓扑结构有环形的,星形的等等。局域网主要用双绞线,速率更高
开始之前,先探讨一个问题——我们本地的计算机是怎么连到局域网的?
其中一个关键部件是适配器(网卡)
适配器是什么
适配器
网络接口板子又称作通信适配器或者网卡
他的核心作用如下
适配器的功能
进行串行并行转换
对数据进行缓存
在计算机的操作系统安装设备驱动程序
实现以太网协议
计算机通过适配器和局域网进行通信
好的,我们已经了解了连接到局域网的关键设备,适配器
接下来一个重要问题就是,多用户如何共享信道资源,一般两种方式
-
静态划分信道——频分复用,时分复用,码分复用等代价价高, 不适合于这个局域网
-
动态媒体接入控制——又称为多点接入,信道并非在用户通信时固定分配给用户,这里又分为两类
-
随机接入:即所有用户可以随机地发送信息,如果恰巧有两个用户在同一时刻发送信息,那么在共享媒体上就要发生碰撞,使得用户的发送都失败。因此,必须有解决碰撞的网络协议
-
受控接入:用户不能随机的发送信息,而必须服从一定的控制,这类的典型代表有分散控制令牌环局域网和集中控制的多点线路探询,或轮询
由于局域网信道质量比较高(距离短),所以设计的时候要尽可能的简单
为此,局域网采取了如下的措施
-
以太网提供的是无连接(不必先建立连接就可以直接发送数据)的不可靠(对发送的数据帧不进行编号,不要求确认)服务,以太网采用CSMA/CD协议,意味着载波监听多点接入\碰撞检测
-
以太网的数据采用曼彻斯特编码
2.2.1 协议要点
半双工通信
多点接入 表示计算机以多点的方式连接在一根总线上
载波监听 每一个站点在发送数据前先检测一下总线上有没有其他计算机在发送数据
载波监听的问题
监听到空闲的其实并不一定是空闲的哦!所以需要碰撞检测
以太网端到端往返时延的两倍2t称为争用期或碰撞窗口,如果这段时间还没有检测到碰撞,这次发送就不会碰撞,当发送碰撞后,还会发送强化碰撞,即人为发送干扰信息,保证所有用户都知道已经发生了碰撞
碰撞检测 检测到碰撞后立即停止发送,继续发送人为干扰信号(以便让所有用户知道发生了碰撞)等待一段随机时间后发送。
那么这个随机时间如何计算呢? 随机时间计算
1 基本退避时间为争用期2t (以太网取51.2us为争用期)
2 从整数集合 [ 0 , 1 , 2 , . . . , ( 2 k − 1 ) ] [0,1,2,...,(2^k-1)] [0,1,2,...,(2k−1)]中随机取出一个数记为r,k=min[重传次数,10]
3 重传时延就是r倍的基本退避时间
4 如果重传16次依然不能成功时丢弃帧,向高层报告
由于以太网取51.2us为争用期,对于10Mbit/s的网络而言,这期间可以发送512比特(64字节),如果发生冲突一定是在64节内,这会导致检测到冲突停止发送从而数据小于64节所以64字节为最短有效帧长
还有帧间最小间隔即96帧,方便刚刚收到数据帧的站接收缓存清理,做好接受下一帧的准备
总结来看
该协议的要点:
1 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部组成以太网帧。放入适配器的缓存中,发送之前检测信道
2 检测信道:若检测信道忙,则不停检测,一直等待信道转为空闲,且超过96帧后,发送过程中继续监测信道,如果超过争用期后还是未检测到碰撞,就认为发送成功,否则立刻停止发送,然后利用指数退避算法再次发送
接下来我们探讨一下局域网的信道利用率
参数a
T 0 = L / C T_0=L/C T0=L/C L是帧长 C是数据发送速率,T0是帧发送时间
a = t / T 0 a=t/T_0 a=t/T0 参数a等于以太网单端时延与帧的发送时间T_0的比
a接近0的时候,表示一发生碰撞就会被检测出来,信道利用率很高
a越大,争用期所占比例增大,发生一次碰撞就浪费许多资源
当数据率一定时候,以太网的连线长度受到限制,否则t数值就会太大,以太网帧长不能太短,否则会导致T0值太小,a太大
理想信道利用率
上面式子告诉我们 a a a要远小于,才能提高这个利用率
2.3 集线器,交换器
使用接线器比起刚刚的无源的总线结构更靠谱一些
集线器
星形拓扑结构,中心叫集线器,目前使用双绞线或光纤
一个集线器有许多个端口
集线器工作在物理层,仅仅简单地做转发,不进行碰撞检测
前面我们讲到适配器,那么局域网的各个电脑如何区分要发送的目的地呢
就是通过适配器的MAC地址,他是固化在适配的ROM中,全球唯一
MAC地址
MAC地址又叫做硬件地址,物理地址
通常表示为48位, 6字节
表示的时候用12个16进制数,每2个16进制数之间用冒号隔开,如08:00:20:0A:8C:6D
地址段前三个字节由IEEE的注册管理机构RA向厂家分配,后三个字节由厂家自行分配
IEEE规定地址字段的第一字节的最低位为I/G位
I/G=0时候,地址字段表示一个单站地址
I/G=1时候,地址字段表示一个组地址,用来广播
当48位都为1时候,为广播地址,只能作为目的地址
IEEE规定地址字段的第一字节的最低第二位为G/L位
G/L位=0时候,是全球管理
IG/L位=1时候,是本地管理
当48位都为1时候,为广播地址,只能作为目的地址
MAC帧格式
常用以太网V2格式
源地址目标地址 上面讲到的MAC地址
类型 上一层使用的什么协议
数据字段
最小长度=64-18字节的头尾=46
最长1500
检测字段FCS
前同步码 8个字节,前7个实现MAC帧同步,第8个帧开始定界符
帧间最小间隔 9.6us
总结:
互联网=通过路由协议联通的N个局域网。
局域网=以太网+TCP/IP协议。
以太网=基于广播(MAC寻址)和碰撞检测机制 CSMA/CD 的网络。
( 以太网是一种计算机局域网技术
3 扩展以太网
我们知道,以太网的两台主机距离不能太远,但是往往比如校园内,一些主机的距离可能蛮远的
要实现这样距离较远的通信,我们就需要扩展以太网
所以我们要搞清楚拓展的核心目的
那么拓展主要有两种方式,物理层上扩展,和数据链路层扩展
3.1 物理层扩展方式
-
很早之前拓展是通过接转发器
-
而现在拓展的简单方法就是使用光纤,用到光纤调制解调器,能够到达几公里的范围
-
还有一种方式就是多个集线器,连接成覆盖更大范围的多级星型结构
比如一个学校有三个学院,每个学院配备一个集线器,最后再通过一个主干集线器连接在一起
多级集线器的优点是,可以跨院通信,同时扩大了范围,缺点是碰撞域变大了(三个独立的碰撞域合成了一个),同时没有缓存功能,不同学院必须使用相同的以太网技术
3.2 数据链路层扩展方式
扩展方式主要通过交换机,交换机工作在数据链路层
特点
- 交换机实质是一个多端口的网桥,通常有十几个或者更多个端口,全双工工作方式
- 具有存储器,能够进行帧缓存
- 即插即用,避免人为配置,通过内部帧交换表实现,要了解交换机更新交换表的自学算法
- 用户独占信道,增大了交换机总容量
- 有多种速率端口
3.2.1 交换机的自学功能
交换表组成: MAC地址,端口,写入时间
如果交换表内没有自己要发送的对方的地址,则进行广播通知每一个主机,其他主机收到后看看是否是要发送给自己,不是的话则过滤掉,是的话则接收,同时将对应的信息加入交换表。如果有的话则直接一对一发送
3.3 虚拟局域网
当前面的扩展方式进行很多的扩展的时候,就会遇到一些问题
首先一整个以太网是一个广播域,那么以太网上经常就会出现大量广播帧,浪费资源
其次,不利于信息的安全
所以提出虚拟局域网,核心思想是把一个较大的局域网分割为很多较小的局域网,每一个局域网是一个广播域
实现方式是在MAC帧的基础上嵌入了VLAN标签,一个虚拟局域网可以跨越多个交换机
4 高速以太网
4.1 100BASE-T
是在双绞线上传输100Mbit/s的系带信号的星形拓扑结构,比之前的100Mbit/s快了很多
4.2 吉比特以太网
即传输速率是1Gbit/s
之前我们讲到大多通过电话线等方式接入互联网
但实际现在更多的是通过以太网进行宽带接入,比如我们现在只要登录校园网就可以访问外网了
拓展
了解一下网速单位
Mbps是Mb/s 而不是MB/S”。
运营商说的1M宽带的M是指Mb/s,也就是Mbps,运营商为什么喜欢说这个呢?数据传输大多是以“位”(bit,又名“比特”)为单位的,数据的传输以及运营商在流量收费的时候都是按照比特来计算的
所以比如运营商说1M带宽,那么也就意味着是1Mb/s,也就是0.125MB/s
我自己实际测试了网速
如图是300M-500M带宽
那么也就意味着是37.5MB/s到62.5MB/s