计算机网络笔记–8 数据链路层

计算机网络笔记–8 数据链路层

文章目录

  • 计算机网络笔记–8 数据链路层
  • 前言
  • 5.1数据链路层服务
  • 5.2差错编码
  • 5.3多路访问协议
  • 5.5 以太网(ETHERNET)
  • 5.6 PPP协议
  • 5.7 802.11无线局域网


前言

这是学习计算机网络课程时记录的笔记,里面大部分内容来源于哈尔滨工业大学李全龙老师的《计算机网络》mooc,加上我个人的理解整理出的内容。


5.1数据链路层服务

术语:
主机和路由器——>结点
连接相邻结点的通信信道——>链路:有线链路,无线链路,局域网
链路层(第二层)数据分组:帧,封装网络层数据报
数据链路层负责通过一条链路从一个节点向另一个物理链路直接相连的相邻节点传送数据报

链路层服务
1.组帧
封装数据报构成数据帧,加首部和尾部
帧同步:如何在物理层提取比特流信息,通常在数据帧首尾加上特殊帧定界服务字符(串)
2.链路接入
如果是共享介质,需要解决信道接入
帧首部的MAC地址,用于标识帧的源和目的——>不同于IP地址(网络/链路)
3.相邻节点间可靠交付
在低误码率的有线链路上很少采用那些可靠数据帧交付协议(如光纤,某些双绞线等)
无线链路:误码率高,需要可靠交付
4.流量控制
协调相邻的发送节点和接受
5.差错检测
信号衰减和噪声会引起差错
接收端检测到差错:通知发送端重传(可靠)或直接丢弃帧(不可靠)
6.差错纠正
接收端直接纠正比特差错(通过纠错编码)
7.全双工和半双工通信控制
同时双向传输或者交替双向传输

链路层的具体实现(硬件构成):
每个主机或路由器接口
链路层在“适配器”(网络接口卡—NIC)中实现或者在一个芯片上实现:
以太网网卡。802.11网卡:以太网芯片组
实现链路层和物理层
链接主机的系统连线
由硬件、软件与固件组成
计算机网络笔记–8 数据链路层_第1张图片
网卡间通信
发送端:
将数据报封装成帧
增加差错检测比特,实现可靠数据传输和流量控制等
接收端:
检测差错,实现可靠数据传输和流量控制等
提取数据报,交付上层协议实体计算机网络笔记–8 数据链路层_第2张图片

5.2差错编码

差错编码基本原理:
D->DR,其中R为差错检测与纠正比特(冗余比特)计算机网络笔记–8 数据链路层_第3张图片
分组码,卷积码
线性分组码,非线性分组码——>R和D的关系是线性还是非线性
课程中默认的是线性分组码
即使满足R’=f(D’),也可能发生差错——>差错编码不能保证100%可靠
差错编码的检错能力
差错编码的可分为检错码和纠错码
对于检错码,如果编码集的汉明距离ds=r+1, 则该差错编码可以检测r位的差错
汉明距离:两个码字对应比特位不同的位数,比如0010和1111的汉明距离是3
在这里插入图片描述

因为只要错了1比特,肯定不在编码集里,错误之后的码字一定不在编码集里
对于纠错码,如果编码集的汉明距离ds=2r+1,则该差错编码可以纠正r位的差错,遵循最近原则
比如右图C变成C’,那么因为C’离C最近,所以会被变为C在这里插入图片描述
奇偶校验码
1.比特校验位
检测奇数位差错
在这里插入图片描述
0代表数据中1的个数是奇数个->只能检测出奇数个位发生的差错
2.二维奇偶校验
检测奇数位差错,部分偶数位差错
计算机网络笔记–8 数据链路层_第4张图片
3.Internet校验和(Checksum)
发送端:将数据划分为16位二进制“整数”序列
求和:补码求和(最高位的1加入到最低位)
校验和:sum的反码
放入分组(UDP、TCP、IP)的校验和字段:
接收端:与发送端相同算法计算
计算得到的“checksum”——>为16位全0:无错
否则出错
循环冗余校验码(CRC)
检错能力更强大的差错编码
将数据比特D,视为一个二进制数
选择一个r+1位的比特模式(生成比特模式),G
目标:选择r位的CRC比特R,满足
能够刚好被G整除(模2)
接收端检错:利用G除以,余式全0无错,否则有错
可以检测所有突发长度小于r+1位差错
广泛应用于实际网络(以太网,ATM)计算机网络笔记–8 数据链路层_第5张图片
计算机网络笔记–8 数据链路层_第6张图片
计算机网络笔记–8 数据链路层_第7张图片

5.3多路访问协议

两类“链路”
1.点对点链路:拨号接入的PPP
以太网交换机与主机间的点对点链路
2.广播链路(共享介质)
早期的总线以太网
HFC的上行链路
802.11无线局域网计算机网络笔记–8 数据链路层_第8张图片
多路访问控制(MAC)协议
单一共享广播信道
两个或两个以上节点同时传输——>干扰,即冲突
冲突:节点同时接受两个或多个信号——>接收失败
采用分布式算法决定节点如何共享信道,即决策节点何时可以传递数据
必须基于信道本身,通信信道共享协调信息:无带外信道用于协调

理想的MAC协议
给定:速率为R bps的广播信道
期望:
1.当只有一个节点希望传输数据时,它可以以速率R发送
2.当有M个节点期望发送数据时,每个节点发送的平均速率为R/M
3.完全分散控制:无需特定节点协调
无需时钟、时隙同步
4.简单
MAC协议分类
三大类:
1.信道划分MAC协议
多路复用技术:TDMA,FDMA,CDMA,WDMA等
2.随机访问MAC协议
信道不划分、允许冲突
采用冲突“恢复”机制
3.轮转MAC协议
节点轮流使用信道

TDMA:time diversion multiple access
周期性接入信道
每个站点在每个周期,占用固定时长的时隙(长度=分组传输时间)
未用时隙空闲在这里插入图片描述
FDMA:frequency diversion multiple access
信道频谱划分成若干频带
每个站点分配一个固定的频带
无传输频带空闲
计算机网络笔记–8 数据链路层_第9张图片
随机访问MAC协议
当节点要发送分组时:
利用信道全部的数据速率R发送分组
没有事先的节点间协调
两个或者多个节点同时传输——>冲突
随机访问MAC协议需要定义
如何检测冲突
如何从冲突中恢复(通过延迟重传)
典型的随机访问MAC协议:
时隙ALOHA
ALOHA
CSMA、CSMA/CD、CSMA/CA

时隙ALOHA协议
假定:
所有帧大小相同
时间被划分为等长的时隙(每个时隙传输1个帧)
节点只能在时隙开始时刻发送帧
节点间时钟同步
如果2个或多个节点在同一时隙发送帧,节点即检测到冲突

运行:
当节点有新的帧时,在下一个时隙发送
如果没有冲突,该节点可以在下一个时隙继续发送新的帧
如果冲突:该节点在下一时隙以概率p重传该帧,直至成功计算机网络笔记–8 数据链路层_第10张图片
优点:
单个节点活动时,可以连续以信道全部速率传输数据
高度分散化:只需同步时隙
简单
缺点:
冲突时,浪费时隙
空闲时隙
节点也许能以远小于分组传输时间检测到冲突
时钟同步

效率:长期运行时,成功发送帧的时隙所占比例(很多节点很多帧待发送)
假设:N个节点有很多帧在传输,每个节点在每个时隙均以概率p发送数据
对于给定的一个节点,在一个时隙将帧发送成功的概率=p(1-p)N-1
对于任意节点成功发送帧的概率=Np(1-p)N-1
最大效率:求得使Np(1-p)N-1最大的p*
对于很多节点,求Np*(1-p*)N-1当N趋近于无穷的极限,可得:最大效率=1/e=0.37
最好情况:信道被利用的时间仅占37%

ALOHA协议
非时隙(纯)ALOHA:不进行时隙划分,更加简单,无需同步
当有新的帧生成的时候:立即发送
冲突的可能性增大
(t0-1)到(t0+1)区间为易损时间区

比时隙ALOHA效率更差:计算机网络笔记–8 数据链路层_第11张图片
计算机网络笔记–8 数据链路层_第12张图片
CSMA协议
载波监听多路访问协议CSMA
发送帧之前,监听信道(载波):
信道空闲,发送完整帧
信道忙,推迟发送——>1-坚持CSMA(一直监听,直至空闲发送数据),非坚持CSMA(放弃监听,随机等待),P-坚持CSMA(一直监听,如果空闲则以概率p发送数据)

冲突可能仍然发生:信号传播延迟
CSMA/CD协议(带有冲突检测的CSMA协议)
短时间内可以检测到冲突
冲突后传输终止,减少信道浪费计算机网络笔记–8 数据链路层_第13张图片
冲突检测:
有限局域网易于实现:测量信号强度,比较发射信号与接收信号(接收到的信号比自己发的强,说明有其他信号)
无线局域网很难实现:接收信号强度淹没在本地发射信号强度下,距离越远信号强度越弱
“边发边听,不发不听”计算机网络笔记–8 数据链路层_第14张图片
在这种极端情况下(冲突域最远两个主机),网络带宽Rbps,数据帧最小长度Lbits,信号传播速率Vm/s
为了数据传输可靠性,要满足L/R>=2dmax/V=RTTmax,否则会在冲突前放弃监听而没发现冲突(“不发不听”)
在这里插入图片描述是最小数据帧长度满足的等式
计算机网络笔记–8 数据链路层_第15张图片
CSMA/CD效率:

Tprop:LAN中两个节点最大的传播延迟
t trans:最长帧传输延迟
计算机网络笔记–8 数据链路层_第16张图片
Tprop趋近于0或t trans趋近于1,效率几乎为1
远优于ALOHA,并且简单、分散

轮转访问MAC协议:综合以下两者的优点
信道划分MAC协议:网络负载重时,共享信道效率高并且公平
网络负载轻时,共享信道效率低
随机访问MAC协议:网络负载轻时,共享信道效率高,单个节点可以利用信道的全部带宽
网络负载重的时候,产生冲突开销

1.轮询
主节点轮流“邀请”从属节点发送数据,只有收到请求才能发送数据
典型应用:“哑”丛属设备
问题:轮询开销
等待延迟
单点故障
轮转访问MAC协议:
2.令牌传递
控制令牌依次从一个节点传递到下一个节点
令牌:特殊帧
图中的T就是“令牌”,数据的发送“自生自灭”,就像图中的,被最下面的主机发送了之后,经过传播回到这个主机,主机需要负责将它剔除
计算机网络笔记–8 数据链路层_第17张图片
缺点:
1 令牌开销
2 等待延迟
3 (令牌)单点故障(一般通过一个令牌检测节点控制:如果令牌很久没有经过也没有数据在信道内传输,就生成一个新的令牌,避免出错)

MAC协议总结
CSMD/CD应用于以太网
CSMD/CA(下面会讲)应用802.11无线局域网
轮转访问MAC协议
主节点轮询:令牌传递
蓝牙、FDDI、令牌环网

ARP协议
MAC地址
32位IP地址:接口的网络层地址
用于标识网络层分组,支持分组转发
MAC地址(或者称为LAN地址,物理地址,以太网地址):但它用在数据链路层不在物理层
作用:用于局域网内标识一个帧从哪个接口发出,到达哪个物理相连的其他接口
使用最多的是48位MAC地址(用于大部分LANs),固化在网卡的ROM中,有时也可以软件设置
把48bit地址分为六个十六进制表示:例如1A-2F-BB-76-09-AD
局域网中每一块网卡都有唯一的MAC地址

MAC地址由IEEE统一管理和分配
网卡生产商购买MAC地址空间(前24比特)

类比:
MAC地址—>身份证号,永远唯一,平面地址
可以从一个LAN携带到另一个LAN
IP地址—>邮政地址,有归属关系,层次地址
不可携带,依赖于节点属于哪一个子网
计算机网络笔记–8 数据链路层_第18张图片
ARP:地址解析协议
如何在已知目的接口的IP地址前提下确定其MAC地址
ARP表:LAN中的每一个IP节点维护一个表
存储某些LAN节点的IP/MAC地址映射关系
TTL:经过这段时间之后映射关系会被遗弃(通常是20min)

ARP具体过程:
A想要给同一局域网内的B发送数据报:假如B的MAC地址不在A的ARP表中,A广播ARP查询分组,其中包含B的IP地址,(目的MAC地址=FF-FF-FF-FF-FF-FF),LAN中所有节点都会接收ARP查询,B接受ARP查询分组,IP地址匹配成功,向A应答B的IP地址,利用单播帧向A发送应答,A在其ARP表中,缓存B的IP-MAC地址对,直至超时,超时后再次刷新

ARP是“即插即用”协议:节点自主创建ARP表,无需人工干预

通信过程:
A通过路由器R向B发送数据报
关注寻址:IP地址(数据报中)和MAC地址(帧中)
假设A知道B的IP地址和R左接口的IP地址(根据之前内容都能知道原理)
A构造IP数据报,进而构造链路层帧,封装A到B的数据报
R再创建链路层帧,封装到B的数据报
B收到数据帧之后,解析数据包发送到上层
计算机网络笔记–8 数据链路层_第19张图片

5.5 以太网(ETHERNET)

“统治地位”的有线LAN技术:
造价低廉(NIC不足100元)
应用最广泛的LAN技术
比令牌环网和ATM等简单便宜
满足网络速率需求10 Mbps-10Gbps

以太网:物理拓扑
1.总线:上世纪90年代中期前流行
所有节点在同一个冲突域
计算机网络笔记–8 数据链路层_第20张图片
2.星型拓扑:目前主流网络拓扑
中心交换机
每个节点对应一个单独冲突域
计算机网络笔记–8 数据链路层_第21张图片
以太网提供的是不可靠无连接的服务
无连接:发送帧的网卡和接收帧的网卡之间没有握手过程
不可靠:接收网卡不向发送网卡进行确认,一般出错率低,差错帧直接丢弃,丢弃帧中的数据恢复依靠高层协议,否则发生数据丢失

以太网的MAC协议:采用二进制指数退避算法的CSMA/CD
算法过程:
1.NIC从网络层接收数据报,创建数据帧
2.监听信道:如果NIC监听到信道空闲,则开始发送帧,否则等到信道空闲再发送帧
3.NIC发送完整个帧,而没有检测到其他节点的数据发送,则确认数据发送成功
4.如果NIC检测到其他节点传输数据,则立刻停止发送,并发送阻塞信号
5.中止发送后,NIC进入二进制指数退避:第m次冲突后,取n=min(m,10),NIC从{0,1,2…2n-1}随机选取一个数k,NIC等待K*512比特的传输延迟时间,再回到第二步
连续冲突次数越多,平均等待时间越长,如果尝试16次就不继续尝试了并报告错误

以太网帧结构
发送端网卡将IP数据报()封装到以太网帧中
在这里插入图片描述
1.前导码(preamble)8B:7个字节的10101010,第8个字节为10101011,用于发送端与接收端的时钟同步
2.目的MAC地址(6B)、源MAC地址(6B):如果网卡的MAC地址和收到的帧的目的MAC地址匹配,或者帧的地址为广播地址,则网卡接收该帧,并将其封装的网路层分组交给相应的网络层协议,否则网卡丢弃该帧
3.类型(2B):指示帧中封装的是哪种高层协议的分组(如,IP数据报)
4.数据(46-1500B):指上层协议载荷,不够46需要其他内容填充,因为在这里插入图片描述这里的18不包含前导码
5.CRC(4B):循环冗余校验码

802.3以太网数据标准:链路与物理层
许多不同的以太网标准:相同的MAC协议和帧格式
不同速率:2Mbps,10Mbps,100Mbps,1Gmbps,10Gmbps…
不同物理介质:光纤、线缆
计算机网络笔记–8 数据链路层_第22张图片
以太网交换机
属于链路层设备
存储-转发以太网帧
检验到达帧目的MAC地址,选择性向一个或者多个链路转发帧
利用CSMA/CD访问链路,发送帧

透明交换机:
主机感受不到交换机的存在
即插即用和自学习:交换机插入到网络中,不需要配置和管理,直接接入网路
主机利用独享链路直接连接交换机
交换机缓存帧
交换机在每段链路上利用CSMA/CD收发帧,但无冲突且全双工——>每段链路一个独立的冲突域
交换:A-A’ 的通讯与B-B’的传输可以同时进行,没有冲突
交换表
每个交换机有一个交换表,每个入口:对应了主机的MAC地址、到达主机的接口、时间戳
看起来很像路由表

交换机通过自学习,获知到达某个主机的接口信息:
当收到帧时,交换机通过帧的源MAC地址学习到发送帧的主机,位于收到该帧的接口所连接的LAN网段
然后将发送主机MAC地址/接口信息记录到交换表中

帧过滤/转发:
当交换机收到帧
1.记录帧的源MAC地址与输入链路接口
2.利用目的MAC地址检索交换表
3.If在交换表中检索到与目的MAC地址匹配的入口
Then {
If目的主机位于收到帧的网段
Then 丢弃帧
Else将帧转发到该入口指向的接口
}else 泛洪

交换机互连(互连过程也是自学习的,通过交换机之间的泛洪)

交换机与路由器
两者均为存储-转发设备
路由器:网络层设备(检测网络层分组首部)
交换机:链路层设备(检测链路层帧的首部)

二者均使用转发表
路由器:利用路由算法计算,根据IP地址
交换机:利用自学习、泛洪构建转发表,根据MAC地址
计算机网络笔记–8 数据链路层_第23张图片
网络设备对比
计算机网络笔记–8 数据链路层_第24张图片
直通:交换机接收数据帧的同时转发到别的接口上(个别交换机可以做到)

虚拟局域网(VLAN)
为何提出VLAN
用户的迁移,单一广播域的要求

虚拟局域网:支持VLAN划分的交换机,可以在一个物理LAN结构上配置、定义多个VLAN

基于端口的VLAN:分组交换机端口(通过交换机管理软件),于是单一的物理交换机可以视作多个交换机
计算机网络笔记–8 数据链路层_第25张图片计算机网络笔记–8 数据链路层_第26张图片
流量隔离:去往/来自1-8的帧只到达端口1-8——>也可以基于MAC地址定义VLAN,而不是交换端口
动态成员:端口可以动态分配给不同的VLAN

在VLAN间转发:通过路由——>实践中,厂家一般把路由器和交换机集成在一起
跨越多交换机的VLAN
多线缆连接:每个线缆连接一个VLAN(不好)
中继端口:在跨越多个物理交换机定义的VLAN承载帧,但是为多VLAN转发802.1帧容易产生歧义,所以必须携带VLAN ID 信息
计算机网络笔记–8 数据链路层_第27张图片计算机网络笔记–8 数据链路层_第28张图片
802.1Q VLAN帧格式
计算机网络笔记–8 数据链路层_第29张图片

5.6 PPP协议

点对点数据链路控制:一个发送端,一个接收端,一条链路,比广播链路容易
无需介质访问控制
无需MAC寻址
例如:拨号链路,ISDN链路
常见的点对点数据链路控制协议:HDLC:High Level Data Link Control
PPP:(Point-to-Point Protocol)
PPP设计需求
组帧:
将网络层数据报封装到数据链路层中
可以同时承载任何网络层协议分组(不仅IP数据报)
可以向上层实现分用(多路分解)

比特透明传输:数据域必须支持承载任何比特模式
差错检测:(无纠正,只扔掉)
连接活性检测:检测、并向网络层通知链路失效
网络层地址协商:端/节点可以学习/配置彼此网络地址

PPP无需支持的功能
无需差错纠正恢复
无需流量控制
不存在乱序交付(点对点的交互文件到达顺序不会变)
无需支持多点链路
差错恢复,流量控制等交由上层处理

PPP数据帧
计算机网络笔记–8 数据链路层_第30张图片
标志:定界符(帧的开始和结束)
地址:因为点对点,所以地址无效(只是一个选项)
控制:目前无效,面向未来的可能需求
协议:上层字段,封装的是什么协议(PPP-LCP,IP,IPCP),通过协商确定长度
信息:上层协议分组数据,通过协商确定长度
校验:CRC校验,用于差错检测,通过协商确定长度
(地址字段和控制字段可以被省略)

字节填充
“数据透明传输”需求:数据域必须允许包含标志模式<01111110>,而不被错认为是标志位

发送端:在数据中的<01111110>和<01111101>字节前添加额外的字节<01111101>(填充)

接收端:
单个字节<01111101>表示一个填充字节
连续两个字节<01111101>:丢弃第一个,第二个作为数据接收
单个字节<01111110>:标志字节
计算机网络笔记–8 数据链路层_第31张图片
在交换网络层数据之前,PPP数据链路两端必须:
1.配置PPP链路:
最大帧长
身份认证
2.学习/配置网络层信息
对于IP协议:通过交换IPCP协议报文,完成IP地址信息等相关信息配置
计算机网络笔记–8 数据链路层_第32张图片

5.7 802.11无线局域网

802.11b:2.4-2.5Ghz免费频段
最高速率:11Mbps
物理层采用直接序列扩频(DSSS)技术(CDMA就是其中之一)
所有主机使用相同的码片序列

802.11a:5-6 Ghz频段
最高速率:54Mbps

802.11g:2.4-2.5Ghz频段
最高速率:54Mbps

802.11n:多天线(MIMO)2.4-2.5Ghz频段
最高速率:600Mbps

802.11无线局域网均使用CSMA/CA多路访问控制协议
均有基础设施(基站)网络模式和特定网(自组网)网络模式
计算机网络笔记–8 数据链路层_第33张图片
802.11体系结构
无线主机与基站通信
基站=访问点
基本服务集BSS(Basic Service Set),也成为单元(cell)

基础设施网络模式:无线主机
AP:基站
自组网模式:只有主机
计算机网络笔记–8 数据链路层_第34张图片
信道与AP关联
802.11b :2.4Ghz-2.485Ghz频谱划分为11个不同频率的信道
每个AP选择一个频率(信道)
存在干扰可能:相邻的AP可能选择相同的信道

主机:必须与某个AP关联
关联过程:
主机扫描信道,监听包含AP名称(服务集标示符SSID)和MAC地址的信标帧
选择一个AP进行关联
可能需要身份认证
典型情形:运行DHCP获取IP地址等信息

被动扫描:
被动获取各AP发送的信标帧
主机(H1)向选择的AP发送关联请求帧
AP向主机(H1)发送关联响应帧
计算机网络笔记–8 数据链路层_第35张图片
主动扫描:
主机主动广播探测请求帧
AP发送探测响应帧
主机向选择的AP发送关联请求帧
AP向主机发送关联响应帧
计算机网络笔记–8 数据链路层_第36张图片
802.11的多路访问控制
避免冲突:2+节点同时传输
802.11:CSMA-发送数据前监听信道——>避免与正在进行传输的其他节点冲突
但是并不能边发送边检测——>因为无线信道很难实现,信号因为距离有屏蔽
无法侦听到所有可能的冲突:隐藏站,信号衰落
目标:避免冲突——CSMA/CA,只能避免数据帧的冲突,不能解决所有冲突
计算机网络笔记–8 数据链路层_第37张图片
计算机网络笔记–8 数据链路层_第38张图片
基本思想:允许发送帧预约信道,而不是随机发送数据帧,从而避免长数据帧的冲突
发送端首先利用CSMA向BS发送一个很短的RTS帧
RTS帧仍然可能彼此冲突(但RTS很短)
BS广播一个CTS帧作为多RTS的响应
CTS帧可以被所有节点接收:消除隐藏帧影响,发送端收到CTS之后可以发送数据,其他节点推迟发送
利用很小的预约帧彻底避免了数据帧的冲突
计算机网络笔记–8 数据链路层_第39张图片
IEEE 802.11 MAC帧
计算机网络笔记–8 数据链路层_第40张图片
802.11数据帧地址
802.11数据帧有四个地址字段
地址4用于自组网络,不常用(即通过交换机用无线局域网相连形成的系统)
地址1~地址3
计算机网络笔记–8 数据链路层_第41张图片
计算机网络笔记–8 数据链路层_第42张图片
计算机网络笔记–8 数据链路层_第43张图片

你可能感兴趣的:(计算机网络,python,http,udp)