• 3.17上午


    一、基本概念
    链路——从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。

    数据链路——点到点
    ——按一种链路协议的技术要求连接两个或多个数据站的电信设施,称为数据链路,简称数据链。
    ——在一条物理线路之上,通过一些规程或协议来控制这些数据的传输,以保证被传输数据的正确性。
    实现这些规程或协议的硬件和软件加到物理线路,这样就构成了数据链路。从数据发送点到数据接收点(点到点 point to point)所经过的传输途径。

    ——————————————————————————————————————
    二、数据链路层的功能
    数据链路层的功能——向网络层提供服务。主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
    具体功能:
    1.为网络层提供服务:
    (1)无确认的无连接服务
    (2)有确认的无连接服务
    (3)有确认的面向连接服务。

    2.链路管理:
    数据链路层连接的建立、维持和释放过程就称作链路管理。
    在多个站点共享同一物理信道的情况下(例如局域网中),如何在要求通信的站点间分配和管理信道也属于数据链路层管理的范围。

    3.帧界定、帧同步、透明传输
    (1)帧界定
    ——两个工作站之间传输信息时,必须将网络层的分组封装成帧,以帧的格式进行传送。
    ——将一段数据的前后分别添加首部和尾部,就构成了帧。
    ——首部和尾部中含有很多控制的信息,它们的一个重要作用是确定帧的界限,即帧界定。
    (2)帧同步
    ——指的是接收方应当能从接收到的二进制比特流中区分出帧的起始与终止。
    (3)透明传输
    ——如果数据中恰好出现与帧界定符相同的比特组合,就要采取有效措施解决这个问题,即透明传输。

    4.流量控制
    ——限制发送方的数据流量,使其发送速率不致超过接收方的接收能力。

    5. 差错控制——使发送方确认接收方是否正确收到了由它发送的数据的方法,即差错控制。
    位错:帧中某些位出现了差错。通过循环冗余校验CRC发现错位。通过自动重传请求ARQ来重传错的帧。
    帧错:帧的丢失、重复或失序。解决方法:定时器、编号机制。

    ——————————————————————————————————————
    三、组帧
    什么是组帧——发送方依据一定规则、把网络层递交的分组封装成帧。
    为什么要组帧?——让接收方正确地接收并检查所传输的帧,出错时只重发出错的帧,提高效率。
    组帧要解决的问题——帧界定、帧同步、透明传输 

    组帧实现方法:
    1.字符计数法:
    在帧头部使用一个计数字段来标明帧内字符数。(缺点:脆弱性,计数字段出错造成灾难性后果。)

    2.字符填充的 首尾定界符 法:
    使用特定的字符回来定界一帧的开始和结束。(缺点:复杂性 不兼容性)

    3.比特填充的首尾标志法:
    使用一个特定的比特模式,即01111110来标志一帧的开始和结束。为了做到透明传输,每出现5个连续的“1”时,自动在其后插入一个“0”。
    接收方做该过程的逆操作恢复原信息。(优点:性能优于字符填充方法)

    4.违规编码法:
    (1)物理层比特编码时通常采用违规编码法。(比如曼切斯特编码方法)
    将“1”编码成“高—低”电平对
    将“0”编码成“低—高”电平对
    “高—高”、“低—低”即为违规编码,借用这些违规编码序列来定界帧的起始和终止。
    优点:不采用任何填充技术就能实现透明传输,但只适用于冗余编码(原数据编码+后填充上的编码)的环境。(IEEE802标准就采用这种方法)

    ——————————————————————————————————————

    四、差错控制
    1.传输中的差错都由两类噪声引起:
    (1)信道固有的随机热噪声、(2)外界特定短暂的冲击噪声。
    前者可通过提高信噪比减少、排除干扰,后者不可避免是产生差错的重要原因。

    2.差错控制技术分两类:
    (1)自动重传请求(ARQ),能检错
    (2)向前纠错(FEC),能检错也能纠错

    3.检错编码(采用冗余编码技术)
    (1)奇偶校验码
    (2)循环冗余码CRC (CRC原理介绍http://blog.chinaunix.net/uid-30249924-id-5054776.html)
    4.纠错编码
    (1)海明校验码(能发现双比特错,但只能纠正单比特错)(海明码原理http://blog.chinaunix.net/uid-30249924-id-5055123.html)

    ——————————————————————————————————————


    五、流量控制与可靠传输机制
    1.停止-等待协议——最简单但也是最基础的数据链路层协议。发送方每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

    2.滑动窗口:
    发送窗口(SWS,send window size)
    ——任意时刻发送方都维持一组连续的允许发送的帧的序号。
    ——发送窗口的大小Wt,代表还没收到对方确认信息的情况下发送方最多还可以发送多少个数据帧。

    接收窗口(RWS,receive window size)
    ——接收方维持一组连续的允许接收帧的序号。
    ——设置接收窗口是为了控制可以接收哪些数据帧而不可以接收哪些数据帧。
    ——接收方收到的数据帧的序号落入接收窗口内才允许将该数据帧收下。

    滑动窗口的特性——
    (1)只有接收窗口向前滑动时,发送窗口才有可能向前滑动(取决于是否收到确认帧)。
    (2)停止-等待协议、后退N帧协议、选择重传协议只在发送窗口大小和接收窗口大小上有所差别。
    停止-等待协议:发送窗口大小=1,接收窗口大小=1;
    后退N帧协议:发送窗口大小>1,接收窗口大小=1;
    选择重传协议:发送窗口大小>1,接收窗口大小>1;

    (3)接收窗口的大小为1时,可保证帧的有序接收。

    (4)数据链路层的滑动窗口协议中,窗口的大小在传输过程中是固定的。

    3.可靠传输机制:①确认 ②超时重传
    确认——一种无数据的控制帧,它让发送方知道哪些内容被正确接收。
    捎带确认——有些情况下,为了提高传输效率,将确认捎带在一个回复中。
    超时重传——发送方在某发送一个数据帧以后,就开启一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,就重新发送该数据帧,直达发送成功。
    ACK——确认字符
    NAK——否定应答
    自动重传请求(ARQ)——接受方→请求发送方,重传出错的数据帧→来恢复出错的数据。


    三种自动重传请求:(后两种协议是滑动窗口技术与请求重发结束的结合,又称连续ARQ协议)
    (1)即停等式ARQ协议  (stop and wait);单帧滑动窗口
    ——发送方发送单个帧→必须等待确认→接收方的回答到达之前→发送方不能发送数据帧
    ——停止-等待协议的常见差错:
    ①数据帧丢失
    ②到站的帧可能已遭破坏(→接收方利用检错技术,丢弃该帧;发送方计时器超时,重传)
    ③数据帧正确,但确认帧被破坏(→也是重传)
    ——若连续出现相同发送序号的数据帧,表示发送端进行了超时重传
    ——连续出现相同序号的确认帧,表明接收端收到了重复帧。
    ——为了超时重发、判定重复帧的需要,发送方接收方都必须设置帧缓冲区。

    (2)后退N帧ARQ协议 (go back n);GBN 多帧滑动窗口
    ——发送方不需要在收到上一个帧ACK后才能开始发送下一帧,而是可以连续发送帧;
    ——接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧;(或发送方计时器超时,重发)
    ——接收方只允许按顺序接收帧
    ——接收端可以在连续收到好几个正确的数据帧后,发对最后一个数据帧发确认信息(或捎带确认),这同时表明 这帧之前的所有数据帧都正确收到。
    ——若采用n个比特对帧编号,发送窗口WT尺寸应满足:1≤ WT ≤ 2^n-1,否则会造成收发方无法分辨新帧和旧帧。 
    ——信道的传输质量很差到误码率较大时,退后N帧协议不一定优于停止-等待协议。


    (3)选择性重传ARQ协议 (selective repeat)SR;多帧滑动窗口
    ——只重传出现差错的数据帧(或计时器超时的)
    ——加大接收窗口,先收下发送序号不连续但仍处接收窗口中的那些数据帧,等收到所缺序号的数据帧后再一并交送主机。
    ——每一个发送缓冲区对应一个计时器,当计时器超时时,缓冲区的帧就会重传。
    ——另外,一旦接收方怀疑帧出错,就会发送一个NAK给发送方,要求发送方对NAK中指定的帧进行重传。
    ——接收端设置具有相当容量的缓冲区,来暂存那些未按序正确收到的帧,所需缓冲区数目等于窗口的大小,而不是序号数目。
    ——接收窗口为WR,发送窗口为WT;WR+WT ≤ 2^n;WR ≤ 2^(n-1);WTmax = WRmax = 2^(n-1)

  • 相关阅读:
    php 爬虫采集
    深入浅出Java 23种设计模式,最全PDF版本终于开放下载了!!(文末有福利)
    【Nginx】如何格式化日志并推送到远程服务器?看完原来很简单!!
    【Nginx】如何为已安装的Nginx动态添加模块?看完我懂了!!
    【Nginx】如何配置Nginx日志?这是最全面的一篇了!!
    【Nginx】如何按日期分割Nginx日志?看这一篇就够了!!
    【Nginx】如何封禁IP和IP段?看完这篇我会了!!
    【Nginx】面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章!!
    【Nginx】实现负载均衡、限流、缓存、黑白名单和灰度发布,这是最全的一篇了!
    【Nginx】如何获取客户端真实IP、域名、协议、端口?看这一篇就够了!
  • 原文地址:https://www.cnblogs.com/bgd140206302/p/6565582.html
Copyright © 2020-2023  润新知