目录
一、点对点信道:
(1)封装成帧
(2)透明传输
(3)差错检测
二、点对点协议
(1)数据链路层的特点
(2)PPP协议的组成
(3)PPP协议下帧格式
(4)字节填充
(5)零比特填充
(6)数据链路如何建立?
三、广播信道
(1)局域网的数据链路层
a、局域网特点
b、局域网分类
c、静态信道划分
d、动态接入 / 多点接入
(2)什么是以太网?
(3)适配器
a、什么是适配器?
b、适配器的作用?
c、适配器的结构
(4)CSMA / CD协议
a、为什么有这个协议?
b、CSMA / CD协议处理机制
c、以太网发送的不确定
d、截断二进制指数退避算法
f、无效帧
g、强化碰撞
h、CSMA / CD协议总结
(5)使用集线器的星形拓扑
a、什么是集线器?
b、类型
c、原理
d、集线器优缺点
f、适用场景
(6)以太网信道利用率
(7)以太网的MAC层
a、什么是MAC?
b、什么是MAC地址(EUI-48)?
c、格式
d、功能
(8)扩展的以太网
a、物理层扩展以太网
数据链路层研究两种信道:点对点、广播信道;前者是一对一,后者是一对多。
同一个局域网研究的是:分组怎样从一个主机传送到另一个主机,不经过路由器
一、点对点信道:
数据链路的三个基本问题:封装成帧、透明传输、差错检测
什么是链路:一个节点到相邻节点的物理线路
什么是数据链路:实现数据传输的线路,在物理线路的基础上加上了相关协议的硬件和软件
什么是帧:用于数据链路层之间传输的数据单元,叫做帧(就像一块钱,一立方水)
(1)封装成帧
就是在一段数据的前后添加首部和尾部
首部和尾部用于识别数据帧的开始和结束,作用是确定帧的界限
一个帧的长度等于中间数据部分加上前部和尾部
中间数据多大?一般就是网络层传输数据的单位大小,叫做分组,或者IP数据报
(2)透明传输
根据数据封装成帧的概念:
当传输的数据是文本时,界定帧的符号,开始是SOH,结束是EOT
可是我们在输入数据的时候,不可避免地也会输入和SOH / EOT一样的文本 / 二进制编码
就有可能导致文本的接收不正确,即没有正确的开端和结尾,可能会丢失数据
但是,我们在传输文本数据的时候,很明显并没有出现这样的现象。
这就是所谓的透明传输。
透明:就是当作不存在,例如100%透明的玻璃
那么,如何解决可能会导致的界定帧符号的误判?
很简单,在界定帧的前面加上一个转义字符,其实也就是加上标注
例如说,同样是AA、AA,但是前面的AA加上了ESC-,这样前面的ESC-AA才是界定帧,而后面的不是
这种方法叫做字节填充
(3)差错检测
比特差错:数据传输过程中,0变成1,1变成0
误码率:一段时间内,传输错误的比特占总传输比特的比率,例如有10个比特位传输,错误的比特位有9个,误码率就是9/10=90%,当然,这一般不可能
在现实的数据传输过程中,总是会出现错误的情况,这是不可避免的
那么,如何解决呢?
方法:循环冗余检验,简称CRC
发送端:先将数据分组,且在数据的后面加上n位的冗余码,简称FCS。
接收端:对数据%2运算,得到余数R,如果R为0则数据帧没有错,接收;否则数据帧错误,丢弃
发送端的FCS冗余码的生成和接受端CRC的检验一般用途硬件处理
可靠传输:数据发送端发送什么,接收端口就接收什么
在接收端口没有比特错误的情况下,还可能出现错误:帧丢失、帧重复、帧失序
二、点对点协议
(Point-to-Point Protocol)
用户联网必须链接到某个ISP才能陷入互联网,PPP协议就是用户计算机和ISP进行通信的数据链路层协议
PPP协议是1992年制定
数据链路层的协议很简单:接收数据帧时,进行CRC检测,正确就收下,错误就丢弃
协议标准化的目的:提高协议的互操作性
(1)数据链路层的特点
(图片)
简单:对数据链路层的数据帧,不需要纠错、不需要序号、不需要流量控制
封装成帧:规定特殊符号作为数据帧的界定帧符号,以识别数据开始和结束
透明性:数据传输过程中遇到和界定帧符号一样的符号时,能辨别处理
多种网络协议:在一条物理链路上能够支持多种网络协议,对不同的设备和层级的协议都要能兼容并提供服务
多种类型链路:支持多种类型的数据链路,例如串行 / 并行、同步 / 异步、 光 / 电、低速 / 高速等
差错检测:接收端能识别有差错的数据帧,并立即丢弃
检测链接状态:自动检测数据链路是否处于正常工作状态
最大传送单元:必须规定数据帧的最大长度,超过部分就要丢弃,并且返回差错(该MTU长度只是数据长度,不包括帧头和帧尾)
网络层地址协商:使得通信的双方可以互相获取对方的网络地址
数据压缩协商:提供一种方法来协商使用数据压缩的算法
(2)PPP协议的组成
一个将之IP数据报封装到串行链路的方法
一个用来建立、配置和测试数据链路连接的链路控制协议LCP
一套网络控制协议
(3)PPP协议下帧格式
首部有四个字段,尾部有2个字段,中间部分是IP数据报,也就是数据部分;首尾部分是在数据链路层封装添加的
F是标志字段,表示数据帧的开始和结束,规定为0X7E,十六进制,即0111 1110
A、C没有实际意义,分别是十六进制0xFF和0x03
协议是两个字节的协议字段,有三种,分别对应IP数据报、PPP链路控制协议LCP的数据、网络控制的数据;
用于标识数据帧中信息部分所承载的数据类型。它告诉接收方如何处理帧中的数据。根据协议字段的值,接收方可以决定接下来的操作
(4)字节填充
如果信息部分出现和标志字段7E一样的比特组合时,就需要处理
所用方法为字节填充
所谓字节填充就是若信息字段出现和7E一样的比特编码时,
在其前面加上一个0x7D,从一个字节序列变成两个字节序列
这也就是透明传输的实现
(5)零比特填充
同步传输:一连串的比特流传输
异步传输:逐个字符的传输
非常简单:发送端在比特流出现连续5个1,就在后面添加一个0
接收端反之,在连续5个1后面的0删掉
(6)数据链路如何建立?
当用户接入ISP时,就建立了一个从ISP到用户的物理链路
而后用户向ISP发送链路控制协议LCP分组,以建立LCP链接
接着进行网络层配置
网络控制协议NCP给用户分配IP地址
到此结束。
当用户通信完毕:
网络控制协议NCP释放网络层链接,收回IP地址
接着释放数据链路层链接,最后释放物理层链接
三、广播信道
(1)局域网的数据链路层
a、局域网特点
网络为一个单位拥有,地理范围和站点数目有限,例如校园网
具有广播功能,一个站点可以访问全网
b、局域网分类
星形网
环状网
总线网
c、静态信道划分
频分、时分、波分、码分复用等(详见第二章节)
但是并不适合局域网使用,因为代价高
d、动态接入 / 多点接入
动态接入又分为随机接入和受控接入
随机接入为,用户可以随时接入并发送信息,但是会发生碰撞,因此有处理碰撞的协议
受控接入为,用户不可以随时接入,需要收到控制,采用轮询的方式,等到有位置了才可以接入
后者已经很少被使用
因此主要讨论前者,即随机接入
(2)什么是以太网?
以太网是美国施乐公司于1975年研制,是一种基带总线局域网
以太网用无源电缆传输数据帧,以历史上传播电磁波的以太命名,故名以太网
以太网可以简单的理解为就是局域网
(3)适配器
a、什么是适配器?
计算机是如何连接到局域网的?通过适配器。
那什么是适配器?
适配器指的是主机中的一个网络接口板,也就是我们常说的“网卡”
但是现在的所有笔记本 / 主机都基本厂家嵌入了,因此不用用户自己动手,也就是不用单独使用网卡了
b、适配器的作用?
主要用于局域网和用户主机间的通信
因此要处理适配器和局域网之间的通信以及适配器和计算机之间的通信
适配器和局域网之间的通信:
通过电缆和双绞线以串行传输方式进行通信
适配器和计算机之间的通信:
通过计算机主板上的 I/O 总线以并行传输方式进行通信
因此,根据适配器的功能和作用,规定了其结构:
c、适配器的结构
由于计算机和局域网分别以并行和串行传输数据,
因此适配器必须有要能处理数据传输方式转换的处理器
由于网络传输的数据率和计算机总线的数据率速度不同
因此适配器必须有对数据进行缓存的存储芯片
(关于缓存的意义,可以参考作者这篇文章)
在安装适配器时,需要安装对应的驱动程序
驱动程序主要处理从计算机哪里的数据,多少的数据发送的局域网
或者把局域网中多少的数据,存到计算机中哪里的问题
主要就是解决怎么办的问题
(对于硬件和操作系统的关系,可以参考作者的这篇文章)
在适配器接收和发送各种帧时,不适用计算机CPU
当收到错误帧时,直接丢弃,不必通知CPU
收到正确帧时,中断CPU,并向上交给网络层
当计算机要向局域网传送IP数据报时,
由协议栈将IP数据报向下交给适配器,在封装成数据帧由适配器发送给局域网
(4)CSMA / CD协议
全称:Carrier Sense Multiple Access with Collision Detection
中文:载波监听多点接入 / 碰撞检测
a、为什么有这个协议?
因为早期的以太网是将多个计算机连接到一个总线上
为使通信变得简便,以太网采取两种措施:
无连接发送信息 和 发送的数据采用曼彻斯特编码
前者的无连接发送就是:
发送端和接收端无需建立链接,直接发送
同时,经过CRC检测,数据正确就接收,错误就丢弃,其余一概不管
这就会产生问题:
假设张三、李四、王五、赵六的主机都连接在一个总线上
张三的计算机在总线上的信息,李四、王五、赵六都等收到
这就出事了,根本没法玩
怎么办?
有人动了脑子,
首先,所有的适配器分配一个唯一的地址,其实这也就是所谓IP地址
同时,在发送的信息帧前面加上接收主机的地址
例如张三发给李四的信息,就在信息前边加上李四的主机地址
于是,所有主机的适配器在接收信息时,如果地址不匹配,那就丢弃,匹配就接收
这就实现了一对一的通信
但是,这也会导致问题,这就是数据碰撞
因为一条总线同一时间只允许一台计算机发送数据
否则就会数据冲突,互相干扰
怎么办?
为解决这个问题,于是就有了CSMA / CD协议
即载波监听多点接入 / 碰撞检测
b、CSMA / CD协议处理机制
举个例子:
假设有一群人在一个房间开会,却没有主持人
此时如果你想发言,你就要环顾四周看有没有人正在发言
如果有人正在发言,你就要等,等到没人再发言
这就是所谓载波监听
主机监听总线中是否有数据在传送,是否空闲
如果你在发言的过程中,有人径直起来发言
尽管他很不礼貌,但是为了和谐
你只能中断你的发言,坐下,等
这就是所谓碰撞检测
主机在发送过程中全程检测总线的状态
如果发送中有其他信号也进来
那么你发送的数据就会被干扰,会丢失
所以就立即中断本主机的发送,及时止损
碰撞检测的原理是:
适配器边发送数据,边检测总线电压
如果有多个信号同时发送,会引起电压叠加升高
超过阈值,适配器就会判断有“碰撞”
于是终止交易,有内鬼.....额.....
但是,上述的描述是有问题的
为什么?
因为既然数据在发送前已经有了载波监听的处理
就是没有数据了,总线空闲了,我才会发送数据
机器又不是人,不会违背
那按道理也就不会出现碰撞的情况了
那么,还需要一个碰撞检测做什么呢?
这不是脱裤子放屁吗?
很显然,自有其道理
什么道理?
c、以太网发送的不确定
这是因为传播时延所导致的!
数据在信道中传输并不是瞬时的,而是有时间,有距离的
这期间的信道空闲判断,会出问题
举个例子:
A、B两端距离1km
从A传数据到B需要5μs
当A给B传数据时,5μs后才到B
也就是说,在A发送数据的5μs内
对B来说,信道是空闲的
于是,既然B认为是空闲的,B可不可以发送数据?
可以发
于是,A、B发送的数据发生碰撞
那么,A怎么知道A的数据有没有发送成功呢?
或者说,如果A发送失败了,就是发生碰撞了
那A得尽快知道我失败了,然后趁早部署,等下一次再发
但是A怎么知道我失败了呢?
很简单,数据在发生碰撞的位置返回A
那么在返回期间,我得等
那得等多久呢?那就要看情况
那最久是多久呢?那就要看最坏情况
最坏情况是多坏呢?
很简单
就是我A的信号刚要到B的家门口,就差零点零一公分
啪!B也正正好好发送信号了
于是,A的信号只能返回,回去告诉你们家老爷,出事了
我们把单程的时间记作τ
于是,这段最坏时间知道发生碰撞,就是2τ
因此,如果一个数据的发送时间,超过了2τ而没有出现错误,
那就说明数据发送成功,数据:我已出仓,感觉良好
于是,2τ这个时间就显得很重要
2τ这个时间被称作碰撞窗口,就是这一段时间随时可能发生碰撞
也叫做争用期
由此可见,使用CSMA / CD协议传输的数据属于半双工通信
即,同时只能穿一个方向
那么,如何避免上述情况呢?
避免不了
因为对B来说,确实是信道空闲
信道空闲就可以发送,这是上天规定的
既然不能规避,那就只能降低损失
怎么降低?
就是数据发送失败后,我得尽快再发送
但是得多久发送才合适呢?
于是截断二进制指数退避算法出来了
d、截断二进制指数退避算法
原理很简单,就是失败后,会随机选择一个时间间隔进行重传,这个间隔会随着重传次数的增加而增加
随机重合的概率极低,于是大家都随机重发,那碰撞的概率也会很低
基本退避时间为2τ * n
2τ也称作争用期时间,也就是512比特 / 64字节的成功发送时间
如果失败了,就等待2τ * n的整数倍时间后再重发
n的算法机制:
第一次碰撞:第一次碰撞,在0到1随机选择一个来等待重传。
第二次碰撞:如果再次发生碰撞,等待时间会在0到3个时间单位之间随机选择(2的次方减1)。
后续碰撞:每次发生碰撞,等待时间的范围会翻倍,最大到1023个时间单位(2的10次方减1)。
如果传达16次依旧失败,说明总线很忙,则该站终止发送,向上通知
f、无效帧
如果数据帧太小
假如在传输过程中,和其他站的信号发生冲突
那么该数据帧到达目的时就会被直接丢弃
那么整个数据也就会丢失,而且也不会返回
于是发送端口就不知道发送失败,从而不会重新发送数据
为了避免此种情况
以太网规定最小的数据帧为64字节,即512比特
如果小于该长度,就要填充字节
g、强化碰撞
当A发送的数据发生碰撞时,除了立即终止发送外,还要再继续放32比特 / 48比特的人为干扰信号
目的是让其他用户都知道,目前信道已经发生了碰撞
h、CSMA / CD协议总结
发送前,检测信道
发送中,检查信道
发送成功:争用期时间内没有碰撞
发送失败:使用退避算法,重新发送
同时以太网在没发送完一帧数据,都要暂时保留。
以太网还规定帧间最小间隔为9.6μs,目的是让上一个数据的接收端有时间处理接收的数据
(5)使用集线器的星形拓扑
(星形图片)
每个站和集线器用一根电缆连接,电缆内有两根双绞线,连接主机适配器,分别用于传输和接收
双绞线的价格很低,因此,以太网的形式就从总线型变为更加便宜、方便的星形网络
a、什么是集线器?
下面介绍其功能、类型、工作原理、优缺点、使用场景。
集线器(Hub)是网络设备的一种,通常用于连接多个网络设备,使它们能够在同一局域网(LAN)中相互通信。
集线器的主要功能是接收来自一个端口的数据包,并将其广播到其他所有端口。
它工作在物理层,不对数据进行任何处理或解析,只是简单地转发数据,收到1发送1,收到0发送0。
b、类型
集线器可以分为两种类型:被动集线器和主动集线器。
被动集线器:只是提供连接,不需要电源。
主动集线器:需要电源,可以增强信号以支持更远的传输距离。
c、原理
集线器工作原理:
当一个计算机通过集线器发送数据时,集线器会接收该数据包,并将其复制到所有其他端口。
接收数据的设备根据数据包的目的地址来判断是否接收该数据包。
d、集线器优缺点
优点:简单易用、成本低、可将信息广播到多个设备
缺点:
共享带宽:所有端口共享带宽,设备数量较多时,可能导致网络拥塞
安全性差:数据包会被广播到所有端口,网络中的安全性较低,容易受到安全威胁。
无智能性:集线器无法识别和处理数据包,这限制了其在复杂网络中的使用。
f、适用场景
小型办公室或家庭网络:设备数量不多、对带宽要求不高的环境。
临时网络:在需要快速设置网络连接的情况下,如会议或活动中,可以快速部署集线器。
(6)以太网信道利用率
什么是信道利用率?
很简单,信道有数据传输,就是有利用,否则为空闲
假设A向B端发送一个数据帧
从第一个比特发送开始,就已经占据了信道
直到最后一个比特发送完毕,这一段时间为T0(等于数据大小bit / 发送速率)
但是数据还需要在信道上传播,
而从一个端到另一个端的单程时间为τ
因此,一个数据帧单程传输成功的时间为 T0 + τ
也就是说,当传输一个数据帧时,必须经过 T0 + τ 的时间
此时信道才处于空闲状态,下一个数据帧才可以传输
由此可见,要提高信道的利用率,就要增加 T0 ,减小 τ
于是,提出了一个参数a = τ / T0
如果a很大,那么T0 很小 或者 τ 很大,信道利用率低
如果a很小,那么τ很小 或者 T0 很小,信道利用率高
同时,根据上述,我们可以得到信道利用率的公式:
S = T0 / T0 + τ = 1 / a+1
由此公式可得:只有a远小于1,信道利用率才高
(7)以太网的MAC层
a、什么是MAC?
(Media Access Control)
MAC是数据链路层的一个子层协议,负责管理和控制设备在网络上的访问权限。
它主要用于处理设备之间的通信。
b、什么是MAC地址(EUI-48)?
MAC地址:每个网络设备(如计算机、路由器、打印机等)在网络中都有一个唯一的标识符,称为MAC地址。
MAC地址用于在局域网(LAN)中标识设备,确保数据能够准确地传递到目的设备。
MAC地址工作在数据链路层,用于唯一标识局域网内的设备,通常固定,不随网络改变而改变。
因此硬件地址也称为物理地址 / MAC地址
该地址存储在计算机适配器中的ROM中
因此MAC地址实际上就是适配器标识符 / 适配器地址
如果适配器更换,计算机的硬件地址也随之改变,但是接入的局域网不改变如果区域不变
而如果一个主机 / 路由器 装有多个适配器,那么将拥有多个硬件地址
c、格式
格式:MAC地址通常由48位(6个字节)组成,通常以十六进制表示,例如:00:1A:2B:3C:4D:5E或00-1A-2B-3C-4D-5E。
它可以分为两部分:
OUI(组织唯一标识符):前24位(3个字节),由IEEE分配给设备制造商,标识制造商。
NIC(网络接口卡)特定值:后24位(3个字节),由制造商为每个设备分配的唯一标识符,自行指派。
字段名 | 字段大小 | 描述 |
---|---|---|
前导码(Preamble) | 7字节(56位) | 用于同步信号,帮助接收端设备同步帧的开始。 |
帧开始定界符(SFD) | 1字节(8位) | 表示帧的开始,值为0xAB 。 |
目标MAC地址 | 6字节(48位) | 接收设备的MAC地址。 |
源MAC地址 | 6字节(48位) | 发送设备的MAC地址。 |
类型/长度字段 | 2字节(16位) | 表示上层协议类型(如IPv4、IPv6等)或数据长度。 |
数据(Payload) | 46-1500字节 | 实际传输的数据,最小长度为46字节,最大为1500字节。 |
帧校验序列(FCS) | 4字节(32位) | 用于检测帧在传输过程中是否出现错误。 |
d、功能
设备识别:MAC地址使网络能够识别和区分不同的设备,从而确保数据能够正确传输。
数据链路层通信:在局域网内,设备使用MAC地址进行数据帧的发送和接收。数据帧包含目标设备的MAC地址,以确保数据能够被正确接收。
访问控制:MAC协议负责控制设备在共享媒介上的访问权限,避免数据碰撞,确保高效传输。
(8)扩展的以太网
a、物理层扩展以太网
待更新......