数据链路层
链路 :就是从一个节点到相邻节点的一段物理线路(无线或有线),而中间没有任何其他的交换节点。
数据链路 :链路加上一些必要的协议就构成了数据链路。
帧 :数据链路层的协议数据单元。
三个基本问题
1、封装成帧
封装成帧就是在一段数据的前后加上首部和尾部,这样就构成了一个帧。
添加首部尾部的作用是用于帧定界(确定帧的界限)。
最大传送单元MTU :数据部分长度的上限。
SOH(Start Of Header):首部的开始,ASCII编码为01.
EOT(End Of Transmission):表示帧 的结束 ,ASCII编码为04.
需要注意的是SOH,和EOT必须同时存在才能确定一个帧,缺失任何一个,接收端必须丢弃该不完整帧
2、透明传输
透明传输就是一个完整的帧能够按照原样没有差错的通过数据链路层。
可能导致非透明传输的原因:帧数据部分出现与SOH或EOT这样控制字符相同的二进制代码,这样会导致接收端数据链路层错误的接收不完整的帧,从而使得部分数据丢失。
解决方法:
字节填充(字符填充) :在发送端封装帧时进行检测,若发现与SOH、EOT这些控制字符的二进制代码相同的数据字符的二进制代码,则在这些数据字符前插入转义字符“ESC”(十六进制代码为1B)。等帧到达接收端数据链路层时,再进行检测,将转义字符“ESC”删除。
3、差错检测
误码率:传输错误的比特占传输总比特数的比率。
比特差错
比特差错就是说比特在传输过程中出现的1变成0,0变成1的情况。
检测方法 :
循环冗余检验(CRC) :在数据M后添加n位冗余码(检验码)然后在接收端进行检测。
具体原理 :首先利用模2运算进行2的n次方乘 M的运算(本质就是往M后添加了n个0),然后利用得到的数 除以 P(双方协定的,也就是说都知道)得到余数R,这个R就是要添加到M后的n位冗余码。然后在接收端直接用帧除以P,如果得到的余数为0 则无差错,若不为0 则出现差错,直接丢弃。
(仅仅使用CRC只能做到对帧的无差错接收)
无差错接收 : 凡是接收端数据链路层接受的帧,我们都能以非常接近于1的概率认为该帧在传输过程中没有产生差错。
帧丢失、帧重复和帧失序(传输差错)
解决方法 : 增加了帧编号、确认和重传机制。
点对点信道
这种信道采用一对一的点对点通信方式。
点对点协议PPP
是用户计算机和ISP进行通信是所使用的数据链路层协议。
只支持点对点的链路通信,不支持多点线路(即一个主站轮流和链路上的多个从站进行通信)
只支持全双工链路
PPP 的帧格式:
-
F 字段为帧的定界符
-
A 和 C 字段暂时没有意义
-
FCS 字段是使用 CRC 的检验序列
-
信息部分的长度不超过 1500
PPP使用异步时使用字节填充,同步时使用零比特填充来解决透明传输。
PPP链路的起始和终止都是链路静止状态。
广播信道
这种信道采用一对多的广播通信方式。
局域网
特 点 : 网络为一个单位所拥有,且地理范围和站点数目有限。
优点 :
1、具有广播功能,从一个站点可很方便地访问全网。
2、便于系统的扩展和逐渐演变,各设备的位置可灵活调整和改变。
3、提高了系统的可靠性、可用性和生存性
可以按照网络拓扑结构对局域网进行分类:
CSMA/CD协议
CSMA/CD 表示载波监听多点接入 / 碰撞检测。
-
多点接入 :说明这是总线型网络,许多主机以多点的方式连接到总线上。
-
载波监听 :每个主机都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待。
-
碰撞检测 :在发送中,如果监听到信道已有其它主机正在发送数据,就表示发生了碰撞。虽然每个主机在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。
记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 争用期 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 截断二进制指数退避算法 来确定。
截断二进制指数退避算法 :从离散的整数集合 {0, 1, …, (2的k次方-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。如果重传次数在10次以内,那么k就是重传次数,如果超过10次,那么k就是10。
**强化碰撞 **: 当发生碰撞时,除立即停止发送数据外,还会发送32比特或48比特的人为干扰信号。
以太网
以太网是一种星型拓扑结构局域网。(无连接的、不可靠的交付、发送的数据采用曼彻斯特编码,规定了最短帧长为64字节,也就是512比特,若发送的数据本身少于该值,则进行填充字节,若接收的帧少于64字节则作为无效帧直接丢弃)
早期使用集线器进行连接,集线器是一种物理层设备, 作用于比特而不是帧,当一个比特到达接口时,集线器重新生成这个比特,并将其能量强度放大,从而扩大网络的传输距离,之后再将这个比特发送到其它所有接口。如果集线器同时收到两个不同接口的帧,那么就发生了碰撞。
目前以太网使用交换机替代了集线器,交换机是一种链路层设备,它不会发生碰撞,能根据 MAC 地址进行存储转发。
以太网帧格式:
-
类型 :标记上层使用的协议;
-
数据 :长度在 46-1500 之间,如果太小则需要填充;
-
FCS :帧检验序列,使用的是 CRC 检验方法;
MAC地址
MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标识网络适配器(网卡)。
固化在适配器的ROM中的地址,也就是MAC地址,他的值与机器的真实地址无关,也可以通俗的理解为机器的编号。
一台主机拥有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个 MAC 地址
MAC帧格式:
交换机
具有并行性,一般工作在全双工方式,且相互通信的主机都独占传输媒体,无碰撞地传输数据。
交换机具有自学习能力,学习的是交换表的内容,交换表中存储着 MAC 地址到接口的映射。
正是由于这种自学习能力,因此交换机是一种即插即用设备,不需要网络管理员手动配置交换表内容。
下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。
虚拟局域网
虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息。
使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。
例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。
上图说明了 虚拟局域网不受实际地域的影响,并且就算在同一局域网中如果不属于同一虚拟局域网,那么也不能接收到广播信息。