TCP/IP协议簇之数据链路层

TCP/IP协议簇系列目录

OSI七层模型及各层功能概述

TCP/IP协议簇概述

TCP/IP协议簇之物理层

TCP/IP协议簇之数据链路层

TCP/IP协议簇之网络层

TCP/IP协议簇之传输层

TCP/IP协议簇之应用层

TCP/IP协议簇之HTTP协议

---------------------------------------------------------------------------------------------------------------------------

一、数据链路层概述

       数据链路层是TCP/IP五层参考模型的第二层,介与物理层和网络层之间,它定义了在单个连路上如何传输数据。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层的数据可靠地传输到相邻节点的目标机网络层。数据链路层特点

  1. 将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位。
  2. 控制帧在物理信道上的传输,包括处理传输差错、调借发送速率以使与接收方相匹配。
  3. 在两个网络实体之间提供数据链路通道的建立、维持和释放的管理。

                                                                                      数据链路层间的通信

链路、数据链路、适配器、帧的概念:

  1. 链路:一条点到点的物理线路段,中间没有任何其他的交换结点,一条链路只是一条通路的一个组成部分
  2. 数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。 
  3. 适配器:也就是网卡,就是用来实现数据链路上一些协议。
  4. 帧:数据链路层上传送的就是帧

二、数据链路层的三个问题

2.1、封装成帧

  数据链路层就是在ip数据报的前面和末尾加了一个首部和尾部来代表ip数据包的开始和结束,首部和尾部都是由8位二进制数表示的,可以一样也可以不一样。

2.2、透明传输

  有一个这样的问题, 在ip数据包中如果有一个跟帧尾部一样的8位二进制数,则会提前结束接受数据包,这样数据就被破坏了。出现了如下图这样的问题:

       解决方案:通过在特殊字符前面增加一个转义字符 ESC,在接收端,将数据包中所有ESC的字符删除,遇到两个ESC的,就删除第一个,遇到该转义字符,后面一个字符不管是什么都作为数据包的一部分。

2.3、差错检测

  问题:传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。为了检测传送的帧中ip数据包是否完整,是否没有被损坏,所以需要差错检测

  解决:

  1. 奇偶检验法
  2. 循环冗余检测CRC

2.3.1奇偶检验法

       如上图(偶检验):数据总共为d位,后面一位是校验位;采用偶(奇)校验的时候我们要在校验位添加0/1使得总共的1的位数为偶(奇)数;接收方也使用确认1的位数来检 测是否发生了错误,如果发生了错了则丢弃这个数据帧或者说包;奇偶检验检验是最简单但是也是最没有保障的。其一:是因为奇偶检验有“自盲性”,因为偶检验不能识别偶数个位的bit错误的发生;而奇校验不能识别奇数个位的bit错误(1位除外,1位错误奇偶都可以识别);其二:因为奇偶校验能发现错误但是不能纠正错误;

2.3.2循环冗余检测CRC

       若得出的余数 R = 0,则判定这个帧没有差错,就接受。

  若余数 R ≠ 0,则判定这个帧有差错,就丢弃。

  生成多项式:也很简单,例如上面的除数1101  就用P(X)=X3+X2+1 (X3是x的三次方的意思)  最高位是2的三次方,就是x的三次方这样算,例如,101101 P(X)=X5+X3+X2+1。

三、两种情况下的数据链路层

3.1、使用点对点信道的PPP协议(广域网)

       点对点协议:为在点对点连接上传输多协议数据包提供了一个标准方法。PPP 最初设计是为两个对等节点之间的 IP 流量传输提供一种封装协议。在 TCP/IP 协议集中它是一种用来同步调制连接的数据链路层协议。PPP协议有三个组成部分:

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

PPP协议的帧格式:

 PPP协议的字节填充问题:

如果PPP协议内部封装的不是字节,而是二进制流,则采用零比特填充方法,来实现透明传输。

PPP协议之所以不适用标记序号收到数据后的确认机制是出于以下考虑:

  1. 在数据链路层出现差错的概率不大时,使用比较简单的PPP协议较为合理
  2. 在因特网环境下,PPP的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能保证网络层的传输也是可靠的
  3. 帧检验序列FCS字段可保证无差错接受数据

注:PPP协议不管传输数据中丢失数据后的补发数据。

3.2、使用广播信道的数据链路层(局域网)

CSMA/CD协议:

四、可靠传输

       在有些情况下,我们需要数据链路层向上的网络层提供“可靠传输”的服务,就是发送端发送什么,在对应的接收端就收到什么, 前面的CRC只能检测出位数的差错,不能正确的检测出更精准的错误。

4.1、停止等待协议

  停止等待就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。       

  超时重传:解决上面如果数据分组或确认分组丢失时,发送方将会一直等待接收方的确认分组的问题,设置一个超时计时器,若到了超时计时器所设置的重传时间,而发送方仍收不到接收方的任何确认分组,则会重传原来的分组。

  重复分组:如果只使用超时重传来解决,不用发送确认分组,那么会出现重复分组的问题,就是当接收方收到分组后,发回确认分组时,确认分组丢失,那么会触发超时重传,则接收方会收到两个重复的分组,这里需要注意的是,是确认分组丢失。第一次发送的分组已经正确接收了。

4.2、退回N步协议

  其实跟停止等待协议差不多,只是使用的是流水线传输方式,发送方不间断的发送分组,每次发送的分组大小有限制,如果不限制,可能会使接收方或网络来不及处理这些分组,导致分组的丢失,所以每次发送的分组大小可能是5,6或者更多。这种限制就是回退N步协议。

        回退N步协议:利用发送窗口来限制发送方连续发送分组的个数。要是发送窗口为1就是我们上面所讨论的停止等待协议。

4.3、选择重传协议

  改进回退N布协议,  方式都是一样, 在接受方必须逐一确认, 但是出现错误,只需要重传出现错误的那一个分组,不用全部重传,这里的全部,指的是在出现错误的分组之后的所有分组,前提是在同一个发送窗口中。

 

        借鉴博文:https://www.cnblogs.com/zhangyinhua/p/7608173.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值