【计算机网络】数据链路层-基本数据链路层协议

2023-05-16

【计算机网络】数据链路层-基本数据链路层协议

协议1:一个乌托邦式的单工协议

单工协议即数据只能单向传输。这个协议假设信道永远不会丢失或损坏帧,接收方的处理能力足够快,缓冲区足够大。

发送程序无限循环,接受程序响应事件,协议1中不包含流量控制和纠错功能。

协议2:无错信道上的单工停-等式协议

发送方的速度如果过快,接收方会被淹没,除了增强接收方的处理能力,可以让接收方给发送方发送反馈,发送方收到后才可以发送下一帧。

发送程序无限循环并等待接收方确认,接受程序响应事件后发送确认帧。

协议3:有错信道上的单工停-等式协议

有错信道上传输数据需要增加校验,接收方仅在数据正确时发送确认帧。但在确认帧丢失的情况下(超时),发送方将重发。接收方难以判断帧是重发还是新发,因此帧前加上序号以区分。

重复的帧也会收到确认帧,以便发送方决策。

停止等待协议(Stop-and-Wait Protocol)

停止等待协议是tcp保证传输可靠的重要途径,”停止等待”就是指发送完一个分组就停止发送,等待对方的确认,只有对方确认过,才发送下一个分组.

无差错情况

无差错情况:发送方发送分组,接收方在规定时间内收到,并且回复确认.发送方再次发送……

1734701-20191112201952308-1248554421.png

超时重传的情况

1.分组丢失:发送方发送分组,接收方没有收到分组,那么接收方不会发出确认,只要发送方过一段时间没有收到确认,就认为刚才的分组丢了,那么发送方就会再次发送.
2.确认丢失:发送方发送成功,接收方接收成功,确认分组也被发送,但是分组丢失,那么到了等待时间,发送方没有收到确认,又会发送分组过去,此时接收方前面已经收到了分组,那么此时接收方要做的事就是:丢弃分组,重新发送确认.
3.传送延迟:发送方发送成功,接收方接收成功,确认分组也被发送,没有丢失,但是由于传输太慢,等到了发送方设置的时间,发送方又会重新发送分组,此时接收方要做的事情:丢弃分组,重新发送确认. 发送方如果收到两个或者多个确认,就停止发送,丢弃其他确认.

1734701-20191112202120626-1712022751.png

优缺点

停止等待协议的优点是简单,但是缺点是信道的利用率太低,一次发送一条消息,使得信道的大部分时间内都是空闲的,为了提高效率,我们采用流水线传输,这就与下面两个协议有关系了.

错误的控制

ARQ(自动重复请求)实现错误控制

  • 如果正确的接收,那么接受方会发送一个"ack"帧给发送方
  • 如果发送方没有收到接受方回复的"ack"帧,那么发送方会设置计时器并重新发送传输帧

为了确保正确性,必须对框架和ack进行编号

  • 接收机需要区分重传(由于丢失ack或提前定时器)和新帧,对于stop和wait,2个数字(使用1位)就足够了

滑动窗口协议

滑动窗口的概念

发送方拥有着一个窗口,这个窗口里面装着可以发送的帧

  • 它需要暂时存储这些帧,因为这些帧可能被重传
  • 当这个窗口接受到确认帧后,它就会向前移动

接受方拥有着一个可以接受帧的窗口

  • 它要为将要到来的帧预留空间
  • 这个窗口随着按顺序到来的帧而逐渐向前移动

1734701-20191112204344472-243096895.png

一开始的时候,接受方可以接受一个帧,发送方之后发送了一个帧。接受方接受了这个帧之后,可以向后滑动一个单位,准备接受下一个帧,当发送方得到接受方回复给它的确认帧ack之后,继续向后滑动一个窗口,准备发送下一个帧。

滑动窗口协议的特点

  • 只有接受窗口向前移动的时候,发送窗口才会向前移动
  • 从滑动窗口的概念来看,停止等待协议、回退N协议和选择重传协议只不过是发送窗口和接受窗口的大小不同
    • 停止等待协议:发送窗口和接受窗口大小都是1
    • 后退N协议:发送窗口>1,接收窗口大小为1
    • 选择重传协议:发送窗口>1,接受窗口大小>1
  • 当接收窗口大小为1的时候可以保证有序的被接收
  • 数据链路层中,传输过程中滑动窗口的大小是固定的

可靠的传输机制

  • 捎带确认:接收方在会给发送方发送一个确认帧来告诉发送方收到了
  • 超时重传:在发送某个数据帧之后,就开启一个计时器,开始计时,一旦超过某段时间还没有收到确认帧,就重新发送该数据帧

自动重传请求ARQ:接受方请求发送方重新发送出错的数据帧来恢复出错的帧,传统的自动重传分三种

  • 停止等待ARQ
  • 后退ARQ
  • 选择性重传ARQ
    窗口开的够大的时候,帧在线路上可以连续的流动,因此又称连续的ARQ协议

回退N协议

之前协议存在的问题?

过长的往返时间严重影响带宽的利用率

如何提高带宽的利用率?

发送端在收到确认之前,连续发送多帧

回退N协议的过程

  • 发送窗口的大小>1,接收窗口的大小=1
  • 接收端发现某一帧发生差错时,直接丢弃所有后续的帧,对丢弃帧不发送确认
  • 数据链路层除了接收应该递交给网络层的下一帧之外,拒绝接收其它任何帧
  • 发送方最终会超时,将按顺序重传所有未被确认的帧,即从最初受损或丢失的那一帧开始
  • 接收端接收帧的顺序和发送端发出帧的顺序相同

1734701-20191113143205596-1020968708.png

回退N协议窗口大小的选择

  • 用n表示序号字段长度;2^n表示发送端可发送帧的序号个数
  • 发送窗口尺寸w应为2^(n-1)

回退n协议的适用情况

  • 回退n帧协议,如果错误率较低时,工作的很好
  • 但错误率较高时,就会浪费大量的带宽在重传上

选择重传协议

选择重传协议的特点

  • 接收方的数据链路层存储坏帧之后的所有正确的帧,当发送方得知某个帧出错时,只是重传此坏帧,而不是所有的后继帧
  • 在这个协议中,发送方和接收方都维持一个可接收序列号的窗口
  • 接收窗口的大小>1,并为窗口中的每个序列号都提供一个缓冲区,每个缓冲区用一位判断其是否为空
  • 当某一帧到达时,接收方检查其序列号,看其是否落在窗口内
  • 如果落在窗口内且从未接收过,就接收并存储
  • 接收到的此帧保存在数据链路层,而不交给网络层,直到比它序列号小的所有帧都按次序已交给了网络层,此帧才能提交给网络层
    1734701-20191113173906867-2062364742.png

选择重传协议的窗口大小

窗口大小应为2n/2=(MAX_SEQ+1)/2

数据链路层协议实例

PPP(Point to Point)协议

点对点协议,提供了在点对点链路上传输多种协议数据包的一种标准方法。

PPP功能

  • 处理错误检测链路的配置
  • 支持多种协议
  • 允许身份认证等

PPP提供了3个主要特征

  • 成帧方法。它可以毫无歧义地分割出一帧的结束和下一帧的开始。并且帧格式支持错误检测
  • 链路控制协议(LCP)。可用于启动线路、测试线路、协商参数,以及不需要线路时关闭线路
  • 协商网络层选项的方法。协商方法与所使用的网络层协议独立。所选择的方法对于每种支持的网络层都有一个不同的网络控制协议(NCP)。支持的网络层协议有IPv4、IPv6、IPX和AppleTalk等

PPP帧格式

1734701-20191113174747020-421077405.png

若Flag字节出现在Payload字段中,则需要用转义字节0x7D去填充,然后将紧跟在后面的那个字节与0x20进行XOR操作

PPP链路建立到释放的状态转换图

1734701-20191113174835754-1721681428.png

PPP建链路的具体过程

  • LCP协商,协商内容包括除RFC1661中所定义的选项之外,还要考虑PPPOA和PPPOE协议中规定的内容
  • LCP协商过后就到了Establish阶段,开始PAP或CHAP认证
    • PAP为两次握手认证,口令为明文。PAP认证过程如下:发送用户名同口令到认证方,认证方查看是否有此用户,口令是否正确,然后发送相应的响应
    • CHAP为三次握手认证,口令为密文(密钥)。CHAP认证由认证方发送一些随机产生的报文,交给被认证,被认证方用自己的口令字用MD5算法进行加密,传回密
      文,认证方用自己保存的口令字及随机报文用MD5算法加密,比较二者的密文,根据比较结果返回响应的响应
  • 认证成功即进行Network阶段协商(NCP),在IP接入中主要是IPCP协商(如IP地址和DNS地址的协商等)。任何阶段的协商失败都将导致链路的拆除。
  • 协商成功,则链路建立成功,可以开始传输网络层数据报文

SONET上的数据包

SONET(同步光网络)

  • 物理层协议
  • 最常被用在广域网的光纤链路上
  • 提供了一个以定义良好速度运行的比特流,如2.4Gbps的OC-48链路

1734701-20191113175209919-1308349275.png
IP包被承载在PPP帧中通过SONET线路传输

ADSL

ADSL使用的协议和设备的概貌

1734701-20191113175321085-463202874.png

  • 在PPPOE应用中,CPE将PC上的以太网帧(携带PPP帧)通过ATM网络桥接到集中路由器(Aggregation Router)上
  • 当CPE为ADSL Modem时,PC为PPPOE Client,运行PPPOE模拟拨号软件先将用户数据封装为PPP,再将PPP封装到以太网帧中,PPP中相关的验证信息将会送给集
    中路由器进行PAP或CHAP验证
  • 通过验证之后,PC会以IPCP协商的形式从集中路由器获得IP地址
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【计算机网络】数据链路层-基本数据链路层协议 的相关文章

  • [H3C] 5120V2设备配置WEB以及TELNET界面

    H3C 5120V2设备配置WEB以及TELNET界面 Int vlan 1 Ip add 192 168 15 132 25 添加IP地址 H3C local user admin 建立一个新用户 New local user added
  • BFD的原理及配置

    BFD 简述 BFD xff08 Bidirectional Forwarding Detection xff0c 双向转发检测 xff09 是一个通用的 标准化的 介质无关和协议无关的快速故障检测机制 xff0c 用于检测IP网络中链路的
  • ISIS协议基础知识

    前言 介绍 ISIS xff0c 中间系统到中间系统的网络协议 xff0c 最初是OSI组织为了他的CLNP xff08 类似于TCP IP中的IP网络 xff09 而设计的动态路由协议 xff0c 后IETF对其进行修改和填充 xff0c
  • 信息安全管理与评估 21年国赛真题解析答案

    祝各位选手在比赛中荣获佳绩 xff0c 网络系统管理与信息安全交流群可见其他文章 xff0c 欢迎各位的加入 本文仅供参考 xff0c 请勿购买专栏 xff0c 有意合作私聊 DCRS工作任务 DCRS 开启 telnet 登录功能 xff
  • 神州数码 AP上线指南(待优化)

    网络安全 amp 网络系统管理交流群 xff1a 320870333 AP默认地址192 168 1 10 wireless no auto ip assign enable ap authentication none discovery
  • 【IPv6】IPv6 NDP邻居状态详解

    NDP 邻居状态 任意两个通信的主机在通信之前 xff0c 先要建立邻居 xff08 省的去查找arp了 xff09 因为接下来的文字会很乱 xff0c 排版费劲 xff0c 所以用这个来 未完成 Incomplete 可达 Reachab
  • 【IPv6】基本概念及字段

    IPV4知识点 xff1a 字段值 IPv4字段共 字段值解释Version版本版本字段 xff0c 可以区分V4和V6版本 xff0c V4是0100 xff0c V6是0110 xff0c 需要注意的是V4和V6头部除了版本字段位置相同
  • 【IPv6】基本概念及字段

    IPV4知识点 xff1a 字段值 IPv4字段共 字段值解释Version版本版本字段 xff0c 可以区分V4和V6版本 xff0c V4是0100 xff0c V6是0110 xff0c 需要注意的是V4和V6头部除了版本字段位置相同
  • 智能云卸载残留问题

    在今天我将1803版本更新到了1809版本 xff0c 更新之后我就发现输入法多了一个 智能云输入法 看来是之前对于卸载智能云输入法并没有卸载的很全面 彻底删除两部曲 卸载智能云就不需要教了把 一 先将智能云输入法从语言选项中删除 步骤 x
  • Ubuntu 20.04下安装微信

    Ubuntu 20 04下安装wine微信 安装必要的工具及deepin wine依赖 sudo apt install wget g 43 43 git 安装deepin wine git clone https gitee com ws
  • Unable to determine the device handle for GPU 0000:04:00.0: GPU is lost. Reboot the system to recov

    Original url https askubuntu com questions 235760 unity does not appear after installing proprietary nvidia drivers gpu
  • 【Maven】Maven报错:The packaging for this project did not assign a file to the build artifact

    Maven Maven报错 xff1a The packaging for this project did not assign a file to the build artifact 问题描述问题发生问题解决 问题描述 对写好的项目打
  • ubuntu系统安装clamav

    ubuntu系统安装clamav 添加用户 groupadd clamav useradd g clamav s bin false c 34 Clam AntiVirus 34 clamav 安装 sudo apt get install
  • SQLyog无法连接Linux下的MySQL问题

    SQLyog直接连接报错 xff1a 解决步骤 xff1a 一 测试网络 windows cmd上ping linux ip地址查看是否能ping通 二 关闭MySQL防火墙 systemctl stop firewalld xff08 开
  • 正则表达式边界符中的 ^, $, \A, \Z, \z

    转载自 http blog csdn net ggicci article details 8015087 Regex 本文介绍正则表达式中边界符 和 以及 A 和 Z z 的比较和用法 本文的正则表达式在 Java 中测试 本文的一些概念
  • vnc的默认端口更改

    vnc的默认端口是5901 xff0c 这个说法是不对的 vnc并不是只有一个端口 以前另一个文章介绍了nvcserver的配置用户的过程 xff0c 里面提到了桌面号 xff0c 这个桌面号就可以端口有密切关系 先看看这个配置 VNCSE
  • CentOS查看开启端口

    安装nmap yum span class hljs keyword install span nmap span class hljs comment 输入y安装 span 使用nmap span class hljs title nma
  • 使用stm32互补输出PWM波并且控制死区时间,带刹车功能

    使用stm32互补输出PWM波并且控制死区时间 xff0c 带刹车功能 项目背景 xff1a 需要20k带死区时间的互补pwm波连接IGBT驱动器 使用高级定时器1 xff0c CH1 PA8 CH1N PB13 BKIN PB12 如果是
  • tensorflow2安装教程

    本教程还未写完请不要看 参考网站 官网 https tensorflow google cn tutorials keras classification hl 61 zh cn 分析视频 https www bilibili com vi
  • 创建支持es6,vscode可调试的nodejs es6工程

    通常vscode调试es6工程时 xff0c 比如有import语句 xff0c 会有如下错误 xff1a SyntaxError Unexpected token import 网上有很多例子都是不可行的 xff0c 或者是老版本的vsc

随机推荐

  • Docker 镜像使用帮助

    注意 本镜像只提供 Debian Ubuntu Fedora CentOS RHEL 的 docker 软件包 xff0c 非 dockerhub Docker 官方在 2015 年 7 月启用新的仓库 xff0c 软件包名由 lxc do
  • Linux下安装VNC图形化远程桌面工具

    Linux 下安装 xff1a 1 下载 vncserver vncview vnc Linux 版 下载地址 http download csdn net detail jxmykl 7789529 vnc Windows 版 下载地址
  • 对抗攻击Adversarial Attack

    参考链接 xff1a xff08 1 xff09 对抗攻击常见方法汇总 https blog csdn net qq 43367558 article details 121694626 xff08 2 xff09 对抗性样本攻击方法汇总
  • docker 防火墙 设置不生效问题解决

    centos7 想把容器的端口8500禁止掉 方法1 firewall cmd zone 61 public remove port 61 8500 tcp permanent xff08 没有用 xff09 报错Warning NOT E
  • 【组成原理期末复习】06总线系统

    一 基本概念 定义 数字计算机是由若干系统功能部件构成的 xff0c 这些系统功能部件在一起工作才能形成一个完整的计算机系统 计算机的若干功能部件之间不可能采用全互联形式 需要有公共的信息通道 xff0c 即总线 总线是构成计算机系统的互联
  • Build ONIE SDK

    Linux ubuntu 4 15 0 29 generic 31 16 04 1 Ubuntu SMP Wed Jul 18 08 54 04 UTC 2018 x86 64 x86 64 x86 64 GNU Linux sudo ap
  • SUMO/检测器设置(E3)学习总结

    一 E3检测器简介 Multi Entry Exit Detectors xff08 E3 xff09 可以用来检测通过检测区域的平均速度 车辆通过检测区域的平均停车次数 车辆通过区域的平均延误 一段时间内进入检测区域车辆数 一段时间内进入
  • source insight4 行结束符 CRLF转化为LF

    options gt preferences gt files gt default line endings 改成Unix LF显示行结束符 options gt preferences gt syntax formatting gt f
  • linux内核的反向路由检查机制

    今天遇到一个问题 xff0c eth1 eth2 双网卡 xff0c 都配有IP 默认网关在eth1 上 尝试给另一个网卡加上同样的默认网关 插入之后 xff0c 发现ens161 无法访问 ens256 可以访问 删除此条路由 xff0c
  • testpmd csum engine 测试 checksum hw offload

    dpdk版本 xff1a 网卡 xff1a intel E810 测试拓扑如下 xff1a root 64 usr share jmnd sy admin2 0 bin testpmd l 3 5 n 4 a ec 01 1 a ec 09
  • 修改git config

    git config local e 编辑仓库级别配置文件 git config global e 编辑用户级别配置文件 git config system e 编辑系统级别配置文件
  • Linux软件包的安装(rpm+yum)

    概述 xff1a 1 rpm软件包管理命令 软件包的获取 a 光盘镜像中有很多软件包可以使用 xff1a 先挂载光盘 xff0c 再查看软件包 b 从软件的官网获取 rpm 安装rpm包 ipm ivh 软件包名称 删除rpm包 ipm e
  • ubuntu samba配置好 没有权限写入解决

    在ubuntu下创建 samba后发现不能写 xff0c 用下面方法即可解决 xff1a 进入共享目录后 xff1a 执行命令 xff1a chmod R go 43 rwx share
  • outlook 使用git send-email发送邮件smtp的配置

    sendemail smtpencryption 61 tls sendemail smtpserverport 61 587 sendemail smtppass 61 xxxx sendemail smtpserver 61 smtp
  • virtio-user pmd driver 加载命令

    host server client dpdk testpmd l 9 10 n 4 file prefix 61 vhost vdev net vhost0 iface 61 tmp sock0 queues 61 1 i dpdk te
  • testpmd vdev设置队列深度

    dpdk testpmd l 2 3 n 4 file prefix 61 mtr vdev 61 net virtio user0 path 61 dev vhost vdpa 0 queues 61 1 queue size 61 51
  • ovs-vswitchd dbg

    root 64 Standard PC i440FX PIIX 1996 home smoke test gdb fGNU gdb Ubuntu 8 1 1 0ubuntu1 8 1 1 Copyright 2018 Free Softwa
  • Snorkel-数据标注系统

    为什么需要数据标注 在面临机器学习问题时 xff0c 我们往往会面临两个问题 xff1a 数据和算法 xff08 模型 xff09 随着各种机器学习框架的完善 xff0c 算法的应用门槛正在逐渐的降低 但数据的获取却仍然是一个费时费力的必需
  • Ubuntu扩展虚拟机的磁盘空间以及删除磁盘分区的方法

    1 虚拟机的磁盘扩容步骤如下 xff1a 2 将扩展的磁盘空间挂载到系统中 1 xff09 分区操作的几个命令 fdisk 磁盘分区相关操作 df 系统分区挂载信息 mount 挂载分区 umount 卸载分区 mkfs ext4 格式化分
  • 【计算机网络】数据链路层-基本数据链路层协议

    计算机网络 数据链路层 基本数据链路层协议 协议1 xff1a 一个乌托邦式的单工协议 单工协议即数据只能单向传输 这个协议假设信道永远不会丢失或损坏帧 xff0c 接收方的处理能力足够快 xff0c 缓冲区足够大 发送程序无限循环 xff