• 计算机网络03 数据链路层


    03章 数据链路层

    数据链路层像一个数字管道,在数字管道上传输的数据单位是

    帧包括了网络层传入的  校验值 数据包 


    基本概念

    链路是一条点到点的物理线路段,中间没有任何其他的交换节点![]

    • 一条链路只是一条通路的一个组成部分

    数据链路除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路

    • 现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件
    • 一般的适配器都包括了数据链路层和物理层这两层的功能

    三个基本问题

    1. 封装成帧
    • 封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,就构成了一个帧。确定帧的界限
    • 首部和尾部的一个重要作用就是进行帧定界
    1. 透明传输
    • 若传输的数据是ASCII码中“可打印字符(共95个)”集时,一切正常
    • 若传输的数据不是仅由“可打印字符”组成时,就会出现问题


      通过在帧开始符帧结束符相同字节前加" ESC " (十六进制编码1B)这个转义字符来与开始结束符区别
    • 字节填充字符填充——接收端的数据链路层在讲数据送往网络层之前删除插入的转义字符
    • 如果转义字符也出现在数据当中,那么应在转义字符钱前插入一个转义字符。当接收端收到连续的两个转义字符时,就删除前面的一个
    1. 差错控制
      差错检测:在到达路由器时路由器发现数据有误,则扔掉,最后到达目标计算机的时候,目标计算机要求重发

    路由器仅查错,不负责要求完美发送

    循环冗余检验(CRC)的计算过程
    在要传的数据后补0,用比补的0多一位的任意一个n位数做除数,做不进位的加法
    最后得出与补的0的位数一样的余数,做为FCS(帧检验序列)
    接收方在得到数据以后再把数据除以发送时的n位数,如果余0,则数据无误
    否则不进行接收

    特点:

    • 这种检验方法并不能确定究竟是哪一个或哪几个比特出现了查错
    • 只要经过严格的挑选,并使用位数足够多(位数越多检测能力越强)的除数 p ,那么出现检测不到的查错的概率就很小很小
      CRC差错检测技术是一种无比特差错,而不是无传输差错的检测机制
      若想要做到"可靠传输"(即发送什么就收到什么)就必须再加上确认重传机制

    两种情况下的数据链路层

    使用点对点信道的数据链路层

        使用一对一的点对点通信方式
    

    多使用在广域网

    点对点的PPP协议是全世界用的最多的协议

    PPP协议的三个组成部分

    • 数据链路层协议可以用于异步串行或同步串行介质
    • 它使用LCP(链路控制协议)简历并维护数据链路连接
    • 网络控制协议(NCP)允许在点到点连接上使用多种网络协议

    PPP协议帧格式

    1. 7E表示开头或结尾
    2. FF 03是固定的
    3. 一个2字节的协议字段
    协议字段 含义
    0x0021 PPP帧的信息字段是IP数据报
    0xC021 信息字段是PPP链路控制数据
    0x8021 表示这是网络控制数据
    0xC023 信息字段是安全性认证PAP
    0xC025 信息字段是LQR
    0xC223 信息字段是安全性认证CHAP
    1. IP数据包(信息部分)     不超过1500字节
    2. FCS(帧检验序列)
    3. 7E


    PPP是面向字节的,所有的PPP帧的长度都是整数字节

    1字节是8比特,所以PPP帧长度都是8的倍数

    PPP协议的透明传输

    1. 字节填充
      • 将信息字段中出现的每个0x7E字节转变成为2字节序列(0x7D,0x5E)
      • 若信息字段中出现一个0x7D的字节,则将其转变成为2字节序列(0x7D,0x5D)
      • 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在改字符前面要加入一个0x7D字节,同时将该字节的编码加以改变
    2. 零比特填充方法
      • 在发送端,只要发现有5个连续的1,则立即填入一个0。接收端对帧中的比特流进行扫描,每当发现5的连续1时,就把这5个连续1后的一个0删除
    PPP协议不使用序号和确认机制的原因
    • 在数据链路层出现差错的概率不大时,使用比较简单的PPP协议较为合理
    • 在因特网环境下,PPP的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠地
    • 帧检验序列FCS字段可保证无差错接收

    使用广播信道的数据链路层

    使用在局域网

    使用一对多的广播通信方式,因此过程比较复杂。广播信道上链接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送

    静态化分信道

    • 频分复用
    • 时分复用
    • 波分复用
    • 码分复用
      太麻烦了,不用

    动态媒体接入控制(多点接入)

    • 随机接入(主要被以太网采用)
    • 受控接入,入多点线路探询(polling)或轮询。(目前已不被采用)

    总线上的每一个工作的基选集都能检测到B发送的数据信号

    • 地址一致的接收
    • 其他计算机丢掉

    以此在具有广播特性的总线上实现一对一的通信

    协议

    以太网使用CSMA/CD协议

    CSMA/CD表示Carrier Sense Multiple Access with Collision Detection(带有冲突检测的载波侦听多路访问)

    • 多点接入
      许多计算机以多点接入的方式连接在一根总线上
    • 载波监听
      每一个在发送数据钱要先检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免碰撞
    碰撞检测
    碰撞检测的实现
    • 几个站同时在总线上发送数据时,总线上的信号电压****摆动值将会增大(互相叠加)
    • 当一个站检测到的信号电压摆动值超过了一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞
    • 所谓“碰撞”就是发生了冲突。因此“碰撞检测”也被称为“冲突检测”
    检测到碰撞后
    • 在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来
    • 每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后灯等待一段随机时间后再次发送
    传播时延对载波侦听的影响

    单程端到端传播时延记为τ
    理论上最长时延是2τ

    CSMA/CD协议的重要特性

    • 使用CSMA/CD协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信
    • 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性
    • 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率

    争用期

    最先发送数据帧的站,在发送数据帧后之多领过时间2τ(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞
    经过正勇气这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞

    • 以太网的争用期
      • 以太网的端到端往返时延2τ成为争用期,或碰撞窗口。通常,取51.2μs为争用期的长度
      • 对于10Mb/s以太网,在争用期内可发送512bit,即64字节
      • 以太网在发送数据时,若前64字节未发生冲突,则后续的数据就不会发生冲突
    • 最短有效帧长
      • 如果发生冲突,就一定是在发送的前64字节之内
      • 由于一检测到冲突就立即终止发送,这时发送出去的数据一定小于64字节
      • 以太网规定了最短有效帧长64字节,凡字节小于64字节的帧都是由于冲突而异常终止的无效帧

    64字节是单位长度的网线下,10Mb/s的速度时发送的最短有效帧
    所以以太网规定网线最长100m,否则将影响冲突检测

    二进制指数类型退避算法

    • 确定基本退避时间,一般是取为征用期2τ
    • 定义参数k,
      k = Min [重传次数,10]
    • 从整数集合[0,1,2,...,(2^k -1 )]中随机地取出一个数,记为r。重传所需的时延就是r倍的基本退避时间
    • 当重传达16次扔不能成功时即丢弃该帧,并向高层报告

    以太网

    以太网提供的服务是不可靠的交付,即尽最大努力的交付
    有错即丢,纠错交给高层

    概述

    以太网的两个标准

    • DIX Ethernet V2
    • IEEE的802.3标准
      两个标准只有很小的差别,因此可以将802.3局域网简称为“以太网
      严格来说,“以太网”应当是指符合DIX Ethernet V2标准的局域网
      (一般认为,只要满足载波侦听多路检测协议的都叫做以太网)

    信道利用率

    以太网单程端到端时延τ帧的发送时间T0

    α=τ/T0

    要提高以太网的信道利用率,就必须减小τ与T0之比。

    • α→0表示一发生碰撞就可以检测出来,并立即停止发送,因而信道利用率很高
    • α越大,表明争用期所占的比例增,每发生一次碰撞就浪费许多新到资源,使得信道利用率明显降低

    对以太网参数的要求

    • 当数据率一定时,以太网的连线的长度受到限制,否则τ的数值会太大
    • 以太网的帧长不能太短,否则T0的值会太小,使α值太大

    信道利用率的最大值

    • 理想化的情况下,以太网上的各站发送数据都不会产生碰撞(这显然已经不是CSMA/CD,而是需要使用一种特殊的调度方法),即总线一控线就有某一个站立即发送数据
    • 发送一帧占用线路的时间是T0+τ,而帧本身的发送时间是T0,于是我们可计算出理想情况下的信道利用率Smax为:

    Smax=T0/T0+τ=1/1+α

    以太网的帧格式


    有效最短帧为64个字节-目标地址(6)-原地址(6)-数据类型(2)-帧校验序列(4)=46
    所以IP数据包最短长度为46个字节

    无效的MAC帧

    • 帧的长度不是整数个字节
    • 用收到的帧检验序列FCS查处有查错
    • 数据字段的长度不在46-1500之间
    • 有限的MAC帧长度在64-1518之间

    对于检查出的无效MAC帧就简单地丢弃
    以太网不负责重传丢弃的帧

    帧间最小间隔

    帧间最小间隔为9.6μs,相当于96bit的发送时间
    一个站在检测到总线开始空闲后,还要等待9.6μs才能再次发送数据
    这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备

    扩展以太网

    在物理层考虑扩展

    将以太网的网线提至100M以上
    主机使用光纤和一对光纤调解器连接到集线器
    提升距离

    扩大范围,但同时也增加冲突的可能性了,效率低

    在数据链路层考虑扩展

    使用的是网桥

    网桥工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发
    网桥具有过滤帧的功能,当它收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪个接口

    后来网桥所接的hub越来越多,就直接接计算机,就是现在的交换机
    交换机连的网络可以实现全双工

    高速以太网

    速率达到100Mb/s的以太网称为高速以太网
    在双绞线上传送100Mb/s基带信号的星型拓扑以太网,仍使用IEEE902.3的CSMA/CD协议。100BASE-T以太网又称为快速以太网

    百兆以太网的物理层

    • 100BASE-TX:使用2对UTP 5类线或屏蔽双绞线STP
    • 100BASE-FX:使用2对光纤
    • 100BASE-T4:使用4对UTP3类或5类线

    100Base-T特点

    • 可在全双工方式下工作而无冲突
      因此不是使用CSMA/CD协议
    • MAC帧格式仍然是802.3标准规定的
    • 保持最短帧长不变(64字节),但将一个网段的最大电缆长度减小到100m
    • 帧间时间间隔从原来的9.6μs改为现在的0.96μs

    吉比特以太网

    1000Mb/s

    • 允许在1Gb/s下全双工半双工两种方式工作
    • 使用802.3协议规定的帧格式
    • 半双工方式下使用CSMA/CD协议(全双工方式不需要使用CSMA/CD协议)
    • 与10BASE-T和100BASE-T技术向后兼容
    • 当吉比特以太网工作在全双工方式时(即通信双方可同时进行发送和接收数据),不使用载波延伸和分组突发

    吉比特以太网的物理层

    • 1000BASE-X

      • 1000BASE-SX    SX表示短波长  传输距离275550米
      • 1000BASE-LX    LX表示长波长  550米或5000米
      • 1000BASE-CE    CX表示铜线  传输距离25米
    • 1000BASE-T
      使用4对5类线UTP(非屏蔽双绞线)

      吉比特以太网的配置举例

    10吉比特以太网

    万兆以太网

    基于万兆以太网,就可以实现端到端的以太网传输
    好处是:

    • 成熟的技术
    • 互操作性很好
    • 在广域网中使用以太网时价格便宜
    • 统一的帧格式简化了操作和管理
  • 相关阅读:
    亲测——pycharm下运行第一个scrapy项目 ©seven_clear
    [转]pycharm的一些快捷键
    一个豆瓣API的使用——拒绝思维定式
    小试牛刀--利用豆瓣API爬取豆瓣电影top250
    Python GUI编程--Tkinter
    多线程详解
    K8S+GitLab-自动化分布式部署ASP.NET Core(一) 部署环境
    初学者浅度剖析eShopOnContainers 里面用到的MediatR .
    通过Task异步加快对数组的运算
    为什么是容器?
  • 原文地址:https://www.cnblogs.com/laoduancode/p/13268487.html
Copyright © 2020-2023  润新知