目录

  • 1 认识网络
    • 1.1 概述
    • 1.2 计算机网络的产生和发展
    • 1.3 Internet简介
    • 1.4 计算机网络
  • 2 网络通信
    • 2.1 基本概念
    • 2.2 主要技术指标
    • 2.3 数据编码和调制
    • 2.4 数据传输方式
    • 2.5 传输介质
  • 3 网络体系结构
    • 3.1 网络协议和标准化组织
    • 3.2 计算机网络体系结构
  • 4 网络编址
    • 4.1 TCP/IP网际层
    • 4.2 网际协议(IP)和IP地址
    • 4.3 子网的划分与配置
  • 5 局域网技术
    • 5.1 数据链路层
    • 5.2 流量控制和链路管理
    • 5.3 CSMA/CD
    • 5.4 网络适配器
    • 5.5 以太网
  • 6 网络寻址技术
    • 6.1 虚拟互连网络
    • 6.2 配置路由
  • 7 网络中的传输控制
    • 7.1 传输层
    • 7.2 传输控制协议(TCP)
    • 7.3 TCP拥塞控制和流量控制
    • 7.4 用户数据报协议(UDP)
  • 8 网络服务
    • 8.1 会话层、表示层与应用层
    • 8.2 TCP/IP 应用层协议
    • 8.3 域名系统(DNS)
    • 8.4 文件传输协议(FTP和TFTP)
    • 8.5 超文本传输协议和万维网
  • 9 广域网接入技术
    • 9.1 点到点协议(PPP)
    • 9.2 拔号入网
    • 9.3 帧中继
    • 9.4 广域网接入技术
数据链路层


数据链路层功能及成

链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。

一条链路只是一条通路的一个组成部分。

数据链路(data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

使用网卡来实现这些协议的硬件和软件。

网卡包括了数据链路层和物理层的功能。

  • 成帧是将数据组合成数据块(帧);

  • 差错控制是控制帧在物理信道上的传输,包括如何处理传输差错;

  • 流量控制是调节发送速率使之与接收方相匹配;

  • 链路管理是在两个网路实体之间提供数据链路通路的建立、维持和释放管理。 

注意:物理层的传输单位是二进制位(bit),而数据链路层是以帧(Frame)为传输单位,而且是在LAN内节点之间的传输。(如果传输数据时经过中间节点,那就是广域网,存在路由选择问题,这是网络层考虑的问题)。

封装成帧

封装成帧就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。

(1)一旦数据在传输时出错,只需重传或纠正有错的帧,而不必重发全部数据,从而提高效率;

(2)报文不分割整个传输,出错概率较大;分成若干帧后,较小的帧出错概率也小;

(3)检查一个短帧的错误要比检查一个大的报文传输错误要容易,算法也要简单。

帧同步

帧同步是指为了能让接收方收到的比特流中明确区分出一帧,发送方必须要建立和区分出帧的边界(起始和终止),方法是在帧的开始和结束位置增加一些特殊的位组合来实现。

常用的帧同步方法有下面几种:

透明传输

透明传输:不管从键盘上输入什么字符都可以放在帧中传输过去。

字符填充法

控制字符“SOH”或“EOT”前面插入一个转义字符“ESC”(1B)。

接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。

零比特填充

差错控制编码

循环冗余校验码

基本思路:收发双方约定好,使用同一个生成多项式G(x)的系数做除法运算,得出的余数作为冗余位,然后将冗余位作为附加位放在二进制序列后传输,实现差错检查的目的。

在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。  

循环冗余校验码(CRC)是一种最常用的检错码。它通过在信息位的后面附加一串冗余比特实现。方法是将要发送的二进制比特序列当作一个多项式F(x)的系数,发送端用双方预先约定的G(x) 生成多项式对应的比特序列去除,(F(x)对应的比特序列后要加上n个0,n是一个比G(x) 生成多项式对应的比特序列的位数减1的数),求得一个余数多项式,它就是循环冗余校验码,然后将它附加在放在信息位的后面组成CRC码进行传输。在接收端,用同样的G(x)去除接收到的比特序列,若能被其整除,表示传输正确,否则表示有错。

运算时需要注意以下两点:

(1)运算都是模2运算,即“异或”运算

    (00=0;11=0;01=1;10=1)。

(2)多项式F(x)比特序列后加了4个0,所以冗余位也要是4位。如果余数为“10”,那么冗余位是“0010”。

本例余数为1010,它就是冗余码。因此,发送方传输前需要将冗余码“1010”附加到信息“1011001”之后,因此实际传输的CRC码为“10110011010”。

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

(2) 若余数 R  0,则判定这个帧有差错,就丢弃。

但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。

只要经过严格的挑选,并使用位数足够多的除数 P,那么出现检测不到的差错的概率就很小很小。

帧检验序列 FCS 

在数据后面添加上的冗余码称为帧检验序列 FCS 。

循环冗余检验 CRC 和帧检验序列 FCS并不等同。

CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。

FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。

应当注意

  • 仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受。

  • 凡是接受的帧(即不包括丢弃的帧),都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错

  • 也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。

  • 要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。