计算机网络------数据链路层

计算机网络-------数据链路层

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

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

1.1 数据链路和帧

  • 链路 (link) 是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
    • 一条链路只是一条通路的一个组成部分。
  • 数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
    • 现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
    • 一般的适配器都包括了数据链路层和物理层这两层的功能。
  • 数据链路层传送的是帧。
数据链路层像个数字管道
  • 常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。
  • 数据链路层不必考虑物理层如何实现比特传输的细节。甚至还可以更简单地设想好像是沿着两个数据链路层之间的水平方向把帧直接发送到对方。
数据链路层三个基本问题
  • 封装成帧
  • 透明传输
  • 差错控制
封装成帧
  • 封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
  • 首部和尾部的一个重要作用就是进行帧定界。
  • 控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。另一个控制字符 EOT (End Of Transmission) 表示帧的结束。
透明传输
  • 如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”。
  • 解决方法:字节填充 (byte stuffing) 或字符填充
  • 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC” (其十六进制编码是 1B)。
  • 接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。
  • 当接收端收到连续的两个转义字符时,就删除其中前面的一个。
差错控制
  • 在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。
  • 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。
  • 误码率与信噪比有很大的关系。
  • 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
  • 仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 (accept)。
  • “无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。
  • 也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。
  • 要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。

2、点对点协议PPP

2.1 PPP协议的特点

  • 对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。
  • 用户使用拨号电话线接入互联网时, 用户计算机和 ISP 进行通信时所使用的数据链路层协议就是 PPP 协议。
  • PPP 协议在1994年就已成为互联网的正式标准。
PPP协议应满足的需求
  • 简单 —— 这是首要的要求。
  • 封装成帧 —— 必须规定特殊的字符作为帧定界符。
  • 透明性 —— 必须保证数据传输的透明性。
  • 多种网络层协议 —— 能够在同一条物理链路上同时支持多种网络层协议。
  • 多种类型链路 —— 能够在多种类型的链路上运行。
  • 差错检测 —— 能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
  • 检测连接状态 —— 能够及时自动检测出链路是否处于正常工作状态。
  • 最大传送单元 —— 必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,促进各种实现之间的互操作性。
  • 网络层地址协商 —— 必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。
  • 数据压缩协商 —— 必须提供一种方法来协商使用数据压缩算法。
零比特填充
  • PPP 协议用在 SONET/SDH 链路时,使用同步传输(一连串的比特连续传送)。这时 PPP 协议采用零比特填充方法来实现透明传输。
  • 在发送端,只要发现有 5 个连续 1,则立即填入一个 0。
  • 接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除。

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

3.1局域网的数据链路层

  • 局域网最主要的特点是:

    • 网络为一个单位所拥有;
    • 地理范围和站点数目均有限。
  • 局域网具有如下主要优点:

    • 具有广播功能,从一个站点可很方便地访问全网。

    • 局域网上的主机可共享连接在局域网上的各种硬件和软件资源。

    • 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。提高了系统的可靠性、可用性和残存性。

媒体共享技术
  • 频分复用
  • 时分复用
  • 波分复用
  • 码分复用

3.2 CSMA/CD协议

以太网采取了两种重要的措施

为了通信的简便,以太网采取了两种重要的措施:

  • 采用较为灵活的无连接的工作方式
    • 不必先建立连接就可以直接发送数据。
    • 对发送的数据帧不进行编号,也不要求对方发回确认。
    • 这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。
  • 以太网发送的数据都使用曼彻斯特 (Manchester) 编码
以太网提供的服务
  • 以太网提供的服务是不可靠的交付,即尽最大努力的交付。
  • 当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定
  • 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。
CSMA/CD协议
  • CSMA/CD 含义:载波监听多点接入 / 碰撞检测 (Carrier Sense Multiple Access with Collision Detection) 。
  • 多点接入”表示许多计算机以多点接入的方式连接在一根总线上。
  • 载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
  • 总线上并没有什么“载波”。因此, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
碰撞检测
  • “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。
  • 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。
  • 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
  • 所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。
检测到碰撞后
  • 在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。
  • 每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
CSMA/CD 重要特性
  • 使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。
  • 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。
  • 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。


__EOF__

本文作者Younger
本文链接https://www.cnblogs.com/youngerwb/p/16276039.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   YoungerWb  阅读(143)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示