计算机网络基础 2


计算机网络基础

数据链路层


基本概念和功能

基本概念

  • 结点:主机、路由器
  • 链路:网络中两个结点之间的物理通道,分为有线和无线链路,比如双绞线、微波
  • 数据链路:网络中两个结点之间的逻辑通道。除了物理线路之外,还需要有通信协议来控制数据的传输,若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
  • 帧:数据链路层中的数据单元,封装网络层数据报

功能

在物理层的服务基础上向网络层提供服务,将来自网络层的数据可靠地传输到目的节点的网络层。加强物理层传输原始比特流的功能,将物理层可能出错的物理连接改造成逻辑上无差错的数据链路。

  • 为网络层提供服务
  • 链路管理,管理链路的建立,维持,释放
  • 组帧
  • 流量控制,控制发送方的错误
  • 差错控制(帧错/位错)

封装成帧

在一段数据的前后部分添加首部和尾部,构成一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束(帧定界)。

https://cdn.jsdelivr.net/gh/MayeZhang/note-img/img/数据链路功能.png

帧定界

帧定界就是确定帧的界限,比如用控制字符进行帧定界

https://cdn.jsdelivr.net/gh/MayeZhang/note-img/img/帧定界图.png

透明传输

因为不管什么样的比特组合都可以在链路上传输,这就有个问题:如果要传的数据中恰好出现了和帧定界符相同的比特组合,这样就可以误认为这个帧传输结束了,而把后面的数据丢弃。那么就要采取有效的措施解决这个问题,比如添加转义字符

  • 发送端的数据链路层在数据中出现控制字符“SOH”或者“EOT”的前面插入一个转义字符“ESC”,接收端看到转义字符后就不管后面的字符是什么意思
  • 接收端的数据链路层把数据送往网络层之前,应该删除掉插入的转义字符
  • 如果数据中也有“ESC”,那就在这个“ESC”前面再插入一个转义字符。接收端收到连续两个转义字符时就删除其中前面一个

https://cdn.jsdelivr.net/gh/MayeZhang/note-img/img/透明传输-1.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2cfa8eca-956a-48ab-96d7-e936076715b4/-2.png

差错控制

有帧错和比特错,这里讲的是比特错。

比特在传输过程中可能会产生差错,比如1变成0,或0变成1。这时候需要进行差错控制,主要有两类:自动重传请求ARQ和前向纠错FEC。在ARQ方式中,接收端检测差错时就设法通知发送端重发,直到接收到正确码字为止。在FEC方式中,接收端不但能发现错误,还能确定错误位置。因此,差错控制又可分为检错编码和纠错编码。

检错编码:

  • 奇偶校验
  • 循环冗余CRC

纠错编码:

  • 汉明码

对于通信质量良好的有线传输链路,数据链路层协议不使用确认和重传机制,即不要求数据链路层向上提供可靠传输的服务。如果在数据链路层传输数据时出现了差错并且需要进行改正,那么改正差错的任务就由上层协议(例如,运输层的 TCP 协议)来完成。

对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠传输的服务

自动重传请求ARQ是通信中用于处理信道所带来差错的方法之一,分为三种类型:

  • 停止等待式ARQ:发送端等待接收端的状态报告,如果状态报告指示发送成功,则发送后续分组,否则重传该分组
  • 连续ARQ:发送端接收到状态报告指示发送错误后,发端将重传过去的n个分组,也称回退N帧ARQ
  • 选择性重传ARQ:当发送端接收到状态报告指示发送错误后,发送方只发送传送错误的分组

流量控制

流量控制是避免发送端的发送速度过快,使得接收端来不及处理而丢失数据。常见的方式有停止-等待协议和滑动窗口协议。

注意:数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。

  1. 停止等待流量控制:发送端每发送一帧,都要等待接收端的应答才发送下一帧
  2. 滑动窗口流量控制:允许连续发送多个帧,受到发送窗口和接收窗口的限制
    • 发送窗口:在还没有接收到接收端确认的条件下最多还允许发送的帧数量。发送端每发送一个帧,窗口序号的下界值加1;每接收到一个正确响应帧,上界加1。
    • 接收窗口:大小固定,表示允许接收的最大帧数量。窗口序号等于下界的帧被正确接收,并产生一个响应帧,上界、下界都加1。

介质访问控制

网络链路有两种类型:

  • 点对点链路:单个发送方和单个接收方由一条链路相连,常见的协议有PPP协议
  • 广播链路:所有主机共享通信介质,这时候就需要进行介质访问控制,来协调多个发送和接收节点对信道的访问。

https://cdn.jsdelivr.net/gh/MayeZhang/note-img/img/介质访问控制.png

随机访问介质

  • ALOHA协议
    • 纯ALOHA协议:不监听信道,不按时间槽发送,想发就发,随机重发
    • 时隙ALOHA:把时间分成若干个相同的时间片,所有用户在时间片开始时刻发送,若发生冲突则等到下一个时间片开始时刻再发送
  • CSMA协议 载波监听多路访问协议CSMA(carrier sense multiple access)
    • CS:每一个站在发送数据之前都要检测一下总线上是否有其他计算机在发送数据
    • MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上
    CSMA协议中当两个站发送的帧发生碰撞时,也会坚持把帧给传送完。为什么都进行了载波监听,还会发送碰撞呢?因为存在信道的传播时延,比如B在$t_0$时刻开始传送,在$t_1$时刻还没传到D,此时D自然监听到的是信道空闲,然后D也开始传输,这时候就可能会发生碰撞。
  • CSMA/CD协议 载波监听多点接入/碰撞检测CSMA/CD(carrier sense multiple access with collision detection) 与CSMA不同的是,这种协议在发送数据之前以及发送数据时都检测总线上是否有其他计算机在发送数据。

轮询访问介质

  • 轮询协议 主节点以循环的方式轮流“邀请”从属节点发送数据
  • 令牌传递协议 令牌是一个特殊格式的MAC控制帧,不含任何信息。令牌在节点之间以某种固定的次序进行交换,比如:节点1总是把令牌发给节点2,节点2总是把令牌发给节点3… 一旦收到令牌,节点如果有帧要发送,便可以发送帧,帧中包含目的地址,在传送过程中,不管帧是不是传给本节点的,都要进行转发,直到帧回到它的始发站,并由始发站撤销该帧。

交换局域网

以太网

以太网是最流行的有线局域网技术,是使用总线拓扑的以太网是一种广播局域网。常用的以太网MAC帧格式:

https://cdn.jsdelivr.net/gh/MayeZhang/note-img/img/以太网MAC帧格式.png

链路层设备

  • 集线器:集线器(hub)是一种物理层设备,它作用于各个比特而不是作用于帧。当表示一个0或一个1的比特到达一个接口时,集线器只是重新生成这个比特,将其能量强度放大,并将该比特向其他所有接口传输出去
  • 交换机

MAC地址

MAC地址又称物理地址,是网络站点全球唯一的标识,与其物理位置无关。一共6个字节(48位),固化在适配器的 ROM 中的地址。

适配器本来是在主机箱 内插入的一块网络接口板,这种接口板又称为网卡,现在计算机主板上都已经嵌入了这种适配器,不再使用单独的网卡了。


文章作者: ZLD
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ZLD !
  目录