计网第五章笔记 -- 数据链路层

介绍

数据链路层的责任是在相邻的结点之间传输数据报(datagram)

主机和路由器都是一个结点

连接相邻结点的通道,分为以下几种

  • 有线连接,无线连接
  • 局域网,广域网

层二包是一个帧

数据报可以在不同连接上的不同协议间传输:

  • 802.3 Ethernet link,以太网
  • Ppp link,point to point protocol,点对点协议,早期的宽带,需要拨号上网
  • ATM link ,异步传输模式
  • Frame relay,帧中机服务
  • Fiber link
  • 802.11 link: one type of wireless links,统称为wifi技术
  • 4G/5G link

链路层服务

  • 封帧,解帧:把数据打包成帧传输
    • 确定传输目标地址时候需要使用MAC地址(media Access Control Address),6 * 8共四十八位,例如:00-16-EA-AE-3C-40
  • 链路的访问控制功能
    • 上面没有标蓝的两个有可靠性控制
  • 流量控制
  • 检错功能
    • 检错之后直接把这个数据扔掉,不再往上传
    • 网卡,交换机都是这样,检测到有错误之后直接扔掉,到达不了网络层,如果能到三层,一定没有差错,所以checknum是多余的
  • 差错的校正
    • 发四个包到接收端,四个包异或一下得到第五个包,如果有一个数据包丢掉之后,但是接收到了第五个包,可以把收到的包进行异或就可以恢复了
    • 现在的网卡没有这个功能
  • 半双工和全双工通信
    • 当前的网络99%都是全双工通信的,两方可以同时发送信息
    • 半双工:对讲机

链路层的实现

对于主机来说是实现在网卡的,对于路由器来说是内置的,交换机和路由器一样

网卡:NIC(network interface card),现在用的是 PCMCIA card,连接在总线上的

PCMCIA card: Personal Computer Memory Card International Association

网卡没有CPU,包含硬件,软件和固件(烧在芯片中的软件)

扫描二维码关注公众号,回复: 15476409 查看本文章

适配器通信

image-20220412103354960

  • 发送端
    • 把数据报封装在帧里面
    • 添加差错检验位
    • 流量控制
  • 接收端
    • 检查错误
    • 把数据报从帧中解帧出来,并向上传输到网络层

三种工作方式:

  • 正常工作模式:看链路层头的mac地址是不是自己,如果是自己就解帧发送到网络层,如果不是直接扔掉
  • 如果是全1的包,那么说明是一个广播地址,也会解开往上传
  • 混杂模式:收到帧就解开往上传

差错检测

要求发送端发送冗余信息

奇偶校验法

一维奇偶校验

最后加一个校验码,表示这段数据中1的个数是奇数还是偶数

image-20220412103710189

二维奇偶校验

把数据组织成二维的形式,一位差错时可以纠正,两位出错时可以校验

image-20220412103916801

CRC

循环冗余校验(Cyclic Redundancy check),目前普遍使用的方法

把要发的数据左移若干位(比generator少一位),然后除以generator,得到的余数叫做CRC

具体移动位数取决于发送端与接收端约定的产生式(generator),现在普遍采用的是32位,也可以叫做多项式

余数连同要发的数据Data发送到接收端,接收端收到之后连同余数一起除以generator,如果没有差错的话,最后得到的余数是0

产生式是多少位就可以检测出来多少位的错误,检验错误之后直接取反就是正确数据

原始数据左移r位(其中generate是r+1位),然后异或得到的余数(任何数异或0都是自己)

image-20220412104744918

例子

这里的除法是模二除法,不往前借位,10-01=11

generator:1001

Data:101110

Data左移三位为:101110,000,除以generator得到余数011,拼接到Data后面发送到接收端

lyn: :为什么余数是011,不是11

image-20220412104455904

这里的remainder表示求余数

多路访问链路和协议

链路类型

  • 点对点链路(P2P链路)
    • PPP for dial-up access,ADSL
    • 不会出现碰撞,不需要控制,通信时候甚至不需要mac地址,因为已经建立好了二者之间的通信,我发就是你收
  • 广播(shared wire or medium)
    • 数据同时发的话会产生碰撞
    • 老的以太网
    • HFC,混合光纤同轴电缆
    • 802.11 无线局域网
  • 交换式链路
    • Ethernet

多路访问控制

多个结点同时使用链路时候需要处理冲突

冲突(interference):两个结点以上同时发数据就会发生碰撞(collision),同时发数据在收到之后一查就发现是错的,只能扔掉

分类

  • 分散式的
    • 目前采用比较多的方法
    • 任意一个结点需要使用通道发数据时候就直接发了,有可能产生碰撞,产生碰撞之后停止发送,过一段时间之后再申请发送,直到发送成功为止
    • 每一个结点自行决定什么时候发送数据
    • 使用的是分布式的算法
    • 需要有能力检测是不是发生碰撞了,检测到需要直接停止发送
  • 集中式的
    • 需要一个控制器
    • 发数据前现象控制器申请,许可之后才能发送
    • 可以保证任意时间点只有一个结点在发送数据
    • 控制器坏了整个网络就瘫痪了

理想的多路传输协议

四个要求(假设链路带宽为R bps)

  • 只有一个结点传数据的时候可以使用全部的带宽(R bps)
  • 当多个结点共享时候每一个结点使用的带宽是相等的(R/M bps)
  • 尽可能的完全分散
    • 不需要集中的控制器
    • 没有同步的时钟
  • 算法要足够简单

MAC协议

三种大的分类

  • 信道划分
    • 时分
    • 频分
    • 码分
    • 波分
    • 空分(不同方向,例如卫星通信)
    • 适合高负载的情况
  • 随机访问
    • 信道是随机划分的,允许碰撞
    • 产生碰撞时候会重新分类
    • 适合用户量比较少的情况
  • taking turns
    • 大家轮着使用,有一个结点控制大家使用,有一个结点使用的时候其他不许使用
    • 集中式轮询
    • 分布式轮询
    • 同一时间只有一个用户发数据

信道划分协议

信道划分

时分复用

TDMA:每个用户分一个时间片,大约为发一帧数据的时间,大家轮流使用通道

例如:座机打电话

image-20220412111256450

频分复用

FDMA:使用不同的频率发数据

分配给你的频率你不发数据就浪费掉了,别人不能使用

例如:wifi(分为三个频段),ADSL

image-20220412111332756

随机访问协议

重点

思想:想发就发了

当一个结点有包要发时候

  • 以带宽的速率发送
  • 没有优先级的问题

两个结点同时发送时候会产生碰撞问题,如果产生碰撞,那么所有结点都停止发送,让链路回到碰撞之前的状态

典型随机访问MAC协议

  • ALOHA
  • Slotted ALOHA
  • CSMA, CSMA/CD, CSMA/CA

Slotted ALOHA

Additive Link On-link Hawaii System ,在线夏威夷系统的附加链路

适合与活跃的用户数非常少的情况(会一直产生碰撞)

夏威夷岛上无线通信的一个协议

ALOHA是夏威夷的一个土话,打招呼的意思

Slotted ALOHA,分片的ALOHA协议

假设

  • 所有的帧都是一样大小
  • 是一个同步的协议,所有的结点发数据必须在一个时间片开头发数据
  • 时间分为大小相等的时间片
  • 如果在一个开头两个都发数据,那么就会产生碰撞,这时候两个都停止发送
    • 下一个时间片开头,两个结点都有概率P的大小重新发送数据,直到发送成功
  • 如果没有碰撞,那么在下一个时间片可以再发下一个帧

image-20220412112156548

  • 优点
    • 只有一个结点在发数据的话,可使用所有带宽
    • 高度分散化式的,只要求在时间片开头发数据
    • 简单
  • 缺点
    • 发生碰撞就浪费了
    • 有空闲的时间片
    • 结点要有能力检测碰撞
    • 要求结点的时钟严格同步

目前很少使用了

效率分析

假设有N个结点,都有大量的帧发送,发送数据的概率是P

一个结点发送成功的概率是: p ( 1 − p ) N − 1 p(1-p)^{N-1} p(1p)N1

N个结点发送成功的概率是: N p ( 1 − p ) N − 1 Np(1-p)^{N-1} Np(1p)N1

最大的效率,以p为变量求 N p ( 1 − p ) N − 1 Np(1-p)^{N-1} Np(1p)N1的最大值为 1 e = 0.37 \frac 1 e = 0.37 e1=0.37

最大的利用效率为37%

Pure(unslotted) ALOHA

不分时间片,碰撞的概率增加了

image-20220412112900785

效率分析

最大效率仅为0.18,比上一个Slotted ALOHA协议更糟糕

协议限制了信道的吞吐量

image-20220412112931219

CSMA

这个必须要记着,不要把字写错了

CSMA (Carrier Sense Multiple Access),载波侦听多路访问

在传输前感知信道是不是空闲

  • 如果空闲了才发数据
  • 如果不空闲就推迟传送

也无法避免碰撞,有如下原因

  • 传播延迟,在感知时候另一个结点占用的信息还没有发送到自己这里
  • 两个同时感知信道,发现没被使用时候同时发数据

CSMA/CD

Collision Detection,带碰撞检测的载波监听的多路访问

CSMA/CD: carrier sensing, deferral as in CSMA

  • collisions detected within short time
  • colliding transmissions aborted, reducing channel wastage

碰撞检测

  • 有线网络较好检测:测量信号强度
  • 无线网络比较复杂,采用的方式是避免碰撞

Taking Turns

链路上有一个主节点(master),其他都是从节点(slave)

任意一个时间点只有一个结点发数据,轮询到一个结点的时候只能发一帧数据,下次轮询到才能再发一帧

蓝牙采用的这种方式

集中式轮询

image-20220412114321902
  • 主节点邀请结点去传输数据
    • 如果有数据就发,没有就继续问下一个结点
  • 通常与“dumb”从设备一起使用
    • dumb:哑设备,都比较简单
  • 缺点
    • 轮询是有开销的
    • 有延时
    • 单点故障(主节点)

分布式轮询

适用于环形网络

Token传输,(托肯传输,建议写成令牌传输)

Token:是一个很小的控制帧,每个结点必须拿到令牌才能传输数据

image-20220412114432521
  • 控制令牌在结点之间顺序传播
  • 缺点
    • 轮询是有开销的(网络上只有一个结点要发数据时候需要转一圈才能发)
    • 延时
    • 单节点故障(拥有token的结点)

总结

  • 信道划分
    • 适合于用户比较大情况
  • 随机访问协议
    • ALOHA, S-ALOHA, CSMA, CSMA/CD
    • Collision detection: easy in some technologies (wire), hard in others (wireless)
    • CSMA/CD used in Ethernet(以太网)(CD:碰撞检测)
    • CSMA/CA used in 802.11)(CA:碰撞避免)
  • Take turns
    • 集中式(Polling from central site)和分布式(token passing)
    • Bluetooth, FDDI, IBM Token Ring

交换局域网

MAC地址和ARP

MAC:局域网地址(LAN),物理地址(physical),网卡地址(NIC),MAC地址

  • 功能:获取从一个接口到另一个物理连接接口(同一网络)的帧
  • 48位长的,烧在NIC的ROM中的,
    • 例如:1A-2F-BB-76-09-AD
    • Broadcast address = FF-FF-FF-FF-FF-FF

不分层,不会重复,在出厂时MAC就已经设置好了

通信:

下到二楼发送时候需要填源MAC地址和目的MAC地址

所有结点在网络层和链路层之间维护了一个表,叫做ARP表,记录了IP地址和MAC地址的对应关系

当ARP表中没有一个IP的MAC地址的时候,会在局域网中进行广播,询问MAC地址,这时候目的主机会返回自己的MAC地址

然后发送到目的主机之后先CRC检查差错,没有问题就解帧变成IP段,然后继续向上传输

ARP是动态的,有一个TTL,如果在TTL时间中没有被访问过,就会删掉这个记录,通常为20min;初始时这个表是空的

记录格式: < IP address; MAC address; TTL>

ARP是工作在局域网中的,不能跨路由器

ARP: Address Resolution Protocol

跨路由器的通信过程

目的:主机A要发数据到主机B

  • 网络层,目的IP地址是B的IP地址
  • 然后下到链路层进行封帧,源MAC地址是A的,目的MAC地址是路由器的左侧MAC地址(DHCP技术获得)
    • 如果没有路由器左边接口的地址,可以广播一个ARP报文,要路由器的MAC地址
    • 路由器接收到报文之后就会发送回自己的MAC地址
  • 路由器收到帧之后进行CRC检查,没有差错之后就解包,送到第三层
  • 然后根据目的地址查路由表,路由包就转发到右边的地址
  • 然后下到二层,进行封帧,源MAC地址是路由器右边的地址,目的MAC地址是B的MAC地址
    • 如果没有就广播ARP要B的MAC地址
  • 送到B之后再次进行CRC检查,没有问题就往第三层送,然后逐步解包送到应用层中

路由器上每个端口都有一个ARP表

image-20220414161414409

image-20220414162031334

以太网

英文:Ethernet

目前最流行的有线网络,因为技术简单,成本低,带宽也很宽(10Mbps - 10Gbps)

wifi也可以称为无线以太网

所有的网卡通过总线连到网络(ETHER)上

image-20220414162351755

Star topology

曾经结构:10base2

总线式的局域网,需要先确定总线是否空闲,所有发出去的数据都会被其他结点收到(设置为混杂模式才可以)

  • 10Mbps网
  • base: 不需要调试,有数据直接传
  • 2:有效距离200M(实际185m)

image-20220414162709778

目前结构:star topology prevails

树状结构或者是层状结构

交换式的局域网

每一个枝叫做一个spoke

这里使用的交换机也是一个存储转发设备

image-20220414162715677

以太网的帧结构

头和尾统称为帧头,在数据的两端

  • Preamble:总共八字节长,前7个字节是10101010,后八个字节是10101011,固定死的,用于同步时钟信号
  • 目标地址:MAC地址,48位的
  • 源地址:MAC地址,48位的
  • Type:类型,数据域中封装的什么类型的数据,一般都是IP包
  • CRC:4个字节长,用于校验的,可以检查出来32位的01跳变
  • Data:数据域,最长可以有1500个字节

wifi的帧结构和这个帧结构不兼容,比这个要复杂一点

在IP层上进行变换,在无线路由器(实际是一个链路转发器)进行转换,这个既不是路由器也不是交换机

image-20220414163059891

以太网的服务模型

Internet: best effort

以太网的服务模型:无连接的不可靠的服务(CRC+CSMA/CD )

服务模型需要记住

  • CSMA/CD: 发送之前先感知链路是否空闲
  • CRC: 然后进行差错检查

发送完数据后不需要等待接收端的确认,不需要建立连接和确认,只有一个CRC检查

传输采用的是基带(base)传输,直接把数据发到响应的链路上,与ADSL不一样,ADSL需要调制解调器,

采用的是Manchester encoding,从上变到下表示的是1,从下变到上表示0,传输过程中刚干扰能力比较强(是物理层的方法)

CSMA/CD算法

中英文都要记住

Carrier Sense Multiple Access Collision Detection,带碰撞检测的载波监听的多路访问

算法也要理解并记住

A: sense channel, if idle 
then {
    
    
    transmit and monitor the channel; 
    If detect another transmission // 检测到碰撞,检测到碰撞电平就会升高
  		then {
    
     
       		abort and send jam signal;// 停止发送数据并且发送一个堵塞信号
			update collisions; // 更新碰撞次数,刚开始发的时候一定是0
			delay as required by exponential backoff algorithm; //  延迟做规避,延迟时间是指数型的backoff算法,依据是碰撞次数
			goto A//  重新侦听信道
		}
 	else {
    
    
        done with the frame; // 数据传输完成 
        set collisions to zero // 清空碰撞计数器
	}
}
else {
    
    wait until ongoing transmission is over and goto A}

指数型规避算法

  • 第一次碰撞,从0和1中选一个数字,然后做的延时是 K ∗ 512 b i t K * 512 bit K512bit的传输时间
  • 第二次之后k的范围是 { 0 , 1 , 2 , 3 } \{0,1,2,3\} { 0,1,2,3}
  • 大于10之后K的范围都是 { 0 , 1 , 2 , 3 , 4 , ⋯   , 1023 } \{0,1,2,3,4,\cdots,1023\} { 0,1,2,3,4,,1023}

对于10Mbps的以太网来说,传输一位的时间是1微秒,如果K=1023,传输时间是50ms

Jam Signal:确保所有的传输都可以收到碰撞信号,有48bit

CSMA/CD的效率

  • 传播延时(prop)是指最远的两个点之间的时间
  • 传送延时(trans)是指最大的帧传输时用的时间

理想情况下效率接近于1,

链路的控制方式是分散式的

image-20220414164858263

以太网技术的类型

统称为802.3

802.11是wifi

  • 总线式
  • 交换机
  • 光纤方式
  • 双绞线

红色的使用的是光纤

蓝色的使用的是双绞线

帧结构和链路的使用方式都是一样的CSMA/CD

image-20220414165111072

Mancgester Encoding

image-20220414165204044

  • 在 10base2使用
  • 不需要对时钟进行同步
  • 是一个分散式的控制

互联设备

Hubs

中文名:集线器

外表和宿舍的小交换机是一样的,是一个物理层的设备

PDU是位,不需要转发,接收到的数据全部都广播出去(不能隔离碰撞域)

没有缓存,不运行CSMA/CD算法

只要把网卡设置为混杂模式就可以收到信息,不够安全

数据采集时候比较方便

image-20220414165349534

交换机

是一个链路层的设备,是链路设备

处理的PDU是帧,帧全部接受完了之后才会进行处理并转发

是一个存储转发设备(优点:隔离碰撞域)

转发的时候需要维护一个MAC表,查询转发出口

检查传入帧的MAC地址,有选择地将帧转发到一个或多个传出链路

转发之前需要运行一下CSMA/CD算法避免碰撞

对用户来说都是透明的

热插拔的,有自学习能力(学习并维护ARP表)

image-20220414165827307

对应于不同的端口可以同时发送,但是如果从一个端口进出数据就不可以同时进行

例如 A → A ′ , B → B ′ , C → C ′ A\to A',B\to B',C\to C' AA,BB,CC就可以同时进行,但是 A → A ′ A\to A' AA B → A ′ B\to A' BA就不能同时进行

image-20220414170059474

全双工的通信并且每个结点都有缓存的

路由器的每一个端口都有一个ARP表

每个交换机都维护一个交换表

  • 交换表的每一行是(MAC地址, 端口号, TTL)
  • TTL一般是60分钟,超时会直接扔掉
  • 可以通过自学习获得
  • 没有数据的时候Flooding(广播)一下,然后接收到了信息之后存起来方便后面使用

自学习

当Flooding之后,会把端口号和传出端口记下来,这个过程就是一个自学习过程

传入和传出的时候都会记录在表里面

image-20220414172026226

过滤转发算法

  • 交换机收到一帧数据的时候,把源MAC地址和接口号记录下来(自学习,如果表里面有了的话就更新一下TTL)

  • 在交换表里面查找目的MAC地址

if entry found for destination
then {
    
    
    if dest on segment from which frame arrived// 如果目的MAC地址和源MAC地址在一个interface就直接扔掉   
    then drop the frame
    else {
    
    
        CSMA/CD // 运行CSMA/CD算法检查是否有碰撞
        forward the frame on interface indicated// 转发帧到目的端口
    }
}   
else {
    
    
    CSMA/CD // 运行CSMA/CD算法检查是否有碰撞
    flood // 广播
}

单位网络

主交换机带宽1Gbps,末端交换机带宽100Mbps

要是需要采集子网的所有进出数据,需要在主交换机上进行配置,用到的技术是端口镜像,把输出端口镜像到采集端口

image-20220414172352697

交换机和路由器的比较

  • 都是存储转发设备,交换机和路由器都可以隔离碰撞域
  • 交换机运行在局域网,路由器运行在广域网
  • 交换机维护交换表,路由器维护路由表
  • 交换机运行CSMA/CD,filter & forwarding,self-learning,路由器运行路由算法
  • 运行在不同的层,路由器运行在网络层,交换机运行在链路层

广播域不能被hub或者交换机隔离,只能通过路由器隔离广播域

如果虚拟化局域网则需要使用路由器进行隔离,所以需要把主交换机再进行修改(交换式的路由器),修改之后再进行MAC地址配置,把那些MAC地址放到一个虚拟局域网中

image-20220414173708235

再看一下PPT73页左右的那些东西,各种访问过程

练习

image-20220414174333415

A,交换机到一个结点的最远距离是100m

image-20220414174423230

B

image-20220414174432442

ADE

image-20220414174508960

ADE(F是对角布线,一般都是沿着边边走,所以是错的)

C

image-20220414174703897

B(a:54Mbps)

image-20220414174840857

Spanning Tree Protocol(STP):生成树算法,把一个图转换成树

可以解决广播风暴问题:一个广播帧很快淹没了整个网络

猜你喜欢

转载自blog.csdn.net/qq_46311811/article/details/129177206