计算机网络  性能指标


  • 速率:速率就是数据传输(数据是指0和1)的速率,比如你用​​迅雷​​下载,1兆每秒,来衡量目前数据传输的快慢。它是计算机网络中最重要的一个性能指标。 速率就是发送数据的速度。
  • 带宽:在计算机网络中,网络带宽是指在单位时间(一般指的是1秒钟)内能传输的数据量,比如说你家的电信网络是100兆比特,意思是,一秒内最大的传输速率是100兆比特。 有百兆网卡,千兆网卡,万兆网卡。所有流量加一块超不过网卡最高速率这里最高速率是没有空闲时间,这里只能说接近带宽,但是达不到带宽(数据包是分组交换,每个数据包之间都会有间隔)每秒网卡,或者路由器的接口,或者交换机的接口每秒可以传送多少比特。

在计算机网络中,带宽用来表示网络中某通道传送数据的能力。表示在单位时间内网络中的某信道所能通过的“最高数据率”单位是 bit/s,即 “比特每秒” 

 速率带宽区别

这个带宽呢,就是这个网卡的最高的传输速率,就跟一个马路一样啊,这个马路最高啊,每秒钟过100辆车啊,这是带宽的意思啊,然后速率呢,比方说每秒钟,现在他虽然可以过100辆,但是现在呢,每秒钟就过了五辆,那就相当于速率。

数据链路层


OSI参考模型的第 2 层。负责物理层面上两个互连主机间的通信传输,将由 0 、 1 组成的比特流划分成数据帧传输给对端,即数据帧的生成与接收。

计算机网络 数据链路层 协议知识点总结_网络

数据链路层作用


链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。

数据链路:两络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。

计算机网络 数据链路层 协议知识点总结_链路_02

路由器会去掉帧的首部,拿到数据包之后,查看路由表,从哪个口出去,然后封装为该链路的协议的帧,不同的链路可以使用不同的协议。(路由器做三件件事,一件事去掉帧首部,拿到ip数据包,第二件事情根据路由表转发ip数据包,第三件事再封装)。

可以看到数据包从pc1到pc2每过一条链路都得封装一次。不同链路,不同的的协议,那么帧的格式也就不一样。

路由器的接口,有物理层的功能,收到计算机发来的电信号,然后将封装的帧去掉,然后提交给路由器,路由器有网络层的功能,根据路由表选择接口之后,又由这个接口来封装成帧,再变成这个接口电信号,光信号。

路由器是三层设备,也有数据链路层和物理层的功能。 

数据链路层使用的信道


计算机网络 数据链路层 协议知识点总结_java_03

数据链路层使用的信道可以是点对点,还有广播信道,比如同轴电缆连的网络,这就是广播信道。一个计算机通信,电信号会给到所有的计算机,这些计算机都可以收到。

点到点是指链路上就两个设备,广播信道是指链路上有多个设备。

他们使用的通信协议是不一样的。

 

不同链路协议不一样,帧的格式也不一样


以太网的帧封装了三个字段

计算机网络 数据链路层 协议知识点总结_链路_04

还是这个数据包,看看点对点链路的帧,看到源地址,目的地址还是没有变!但是由于链路不一样,协议也不一样,帧的格式也不一样,可以看到点到点的帧就不需要MAC地址。 

计算机网络 数据链路层 协议知识点总结_网络_05

广播链路的局域网


广播信道使用带冲突检测的载波侦听多路访问( CSMA/CD )机制通信。

CSMA/CD就是广播信道使用的数据链路层协议,使用CSMA/CD协议的网络就是以太网。 点到点链路就不用冲突检测,因此没必要使用CSMA/CD协议。

计算机网络 数据链路层 协议知识点总结_链路_06

使用集线器组建的局域网也是广播信道,是总线型拓扑。(A计算机和C计算机通信,那么这个信号通过集线器发给所有的口,不做任何的处理,也是一个广播信道)

计算机网络 数据链路层 协议知识点总结_数据链路层_07

 点到点链路使用的是ppp协议,广播链路使用的是CSMA/CD协议

什么是集线器?


集线器( hub )是工作在物理层、具有信号放大功能、以它为中心的网络设备。即一个多端口的中继器,以集线器为中心,连接多个节点。广播方式发送数据,也就是说,当它要发送数据时,会发送到与集线器相连的所有节点。

计算机网络 数据链路层 协议知识点总结_数据链路层_08

由于集线器没有控制功能,因此所有终端共享带宽,同一时刻只能一个终端发送数据,多个终端同时发送数据就会产生冲突。这时,集线器、连接线缆以及连接在集线器上的终端设备构成了一个冲突域。于是采用 CSMA/CD 方式决定终端能否发送数据。

数据链路层要解决的三个问题 封装成帧


 在数据链路层,探讨的是如何将一段数据传递给另外一个节点的接口。在传递的时候变成电信号,光信号,还是无线信号,我们并不关心这个,因为这是物理层需要做的事情。

计算机网络 数据链路层 协议知识点总结_数据链路层_09

  • 封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。(网络层给你了数据包,网卡就要将其封装一下,加上头和尾部,从网络层给到数据链路层的ip数据报大小是有限制的,叫做最大传输单元,以太网是1500个字节,如果超过了这个大小,那么网络层的IP数据包就要分片)(封装成帧的意思就是给网络层的数据包加上头和尾,有头有尾代表一个完整的数据)
  • 首部和尾部的一个重要作用就是进行帧定界。

计算机网络 数据链路层 协议知识点总结_网络协议_10

 数据链路层要解决的三个问题 透明传输


当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符。

控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。另一个控制字符 EOT (End Of Transmission) 表示帧的结束。(控制字符也占用帧头部和尾部字段)

计算机网络 数据链路层 协议知识点总结_数据链路层_11

 ASCII表里面有非打印的字符,这些字符不是键盘输入的,都是一些控制字符。

计算机网络 数据链路层 协议知识点总结_数据链路层_12

 如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”。当作无效帧丢弃就产生错误了。 

计算机网络 数据链路层 协议知识点总结_链路_13

解决透明传输问题

解决方法:字节填充 (byte stuffing) 或字符填充 (character stuffing)。

发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1B)。

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

如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

计算机网络 数据链路层 协议知识点总结_链路_14

封装成帧加上头和尾,传输的时候加上转义字符,接收的时候去掉转义字符,加头和尾的过程叫做封装成帧,插入转义字符和去掉转义字符的过程叫透明传输。

不同链路协议解决的透明传输的方法不一样,这个转义字符到底是啥,完全由数据链路层搞定,但是,所有的数据链路层都要解决这个问题。

差错检测


计算机网络 数据链路层 协议知识点总结_数据链路层_15

  • 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。
  • 误码率与信噪比有很大的关系。
  • 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
  • 在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。 

计算机网络 数据链路层 协议知识点总结_数据链路层_16

帧的数据部分+数据链路层首部来计算帧校验序列,计算完之后将帧校验序列写到帧尾部FCS字段一块发出去。接收端收到之后使用帧校验序列来验证里面有没有差错。如果有差错就丢掉了。

在数据链路层是不可靠传输,如果有差错就直接丢弃,不会重传。

数据链路层有没有重传功能,完全看数据链路层协议有没有这个功能。ppp hdlc以太网协议都不具有可靠传输,有错误就直接丢弃,由传输层来实现。

需要注意的是校验的部分是帧的数据部分和数据链路层首部,检擦这些部分在传输过程当作有没有差错。用于校验的部分写到帧的FCS位置。

循环冗余检验的原理

  • 在发送端,先把数据划分为组。假定每组 k 个比特。
  • 在每组 M 后面再添加供差错检测用的 n 位冗余码,然后一起发送出去。

计算机网络 数据链路层 协议知识点总结_数据链路层_17

 冗余码的计算

  • 用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。
  • 得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q 而余数是 R,余数 R 比除数 P 少 1 位,即 R 是 n 位。
  • 将余数 R 作为冗余码拼接在数据 M 后面,一起发送出去。

冗余码的计算举例

  • 现在 k = 6, M = 101001。
  • 设 n = 3, 除数 P = 1101,
  • 被除数是 2nM = 101001000。
  • 模 2 运算的结果是:商 Q = 110101,余数 R = 001。
  • 把余数 R 作为冗余码添加在数据 M 的后面发送出去。发送的数据是:2nM + R,即:101001001,共 (k + n) 位。

 循环冗余检验的原理说明 

计算机网络 数据链路层 协议知识点总结_网络协议_18

假设101001是我们要传输的数据,冗余码需要生成3位二进制,这个时候就需要在原始数据后面加上3个0,然后选一个除数,除数要比冗余码多一位,冗余码是3位,除数就得是4位。

这个除数其实是每种协议提前定义好的,发送端和接受端都知道这个除数。

冗余码的计算

计算机网络 数据链路层 协议知识点总结_数据链路层_19

 接收端对收到的每一帧进行 CRC 检验

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

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

  • 但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。
  • 只要经过严格的挑选,并使用位数足够多的除数 P,那么出现检测不到的差错的概率就很小很小。

帧检验序列 FCS


算出来的CRC叫做帧校验序列,CRC是一个算法,当然也可以通过其他算法得出帧校验序列FCS的计算方法除了CRC还有其他算法算出帧校验序列。

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

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

  • CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
  • FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。

 

 

 

PPP 协议的特点


点到点链路不仅仅可以使用PPP协议还可以使用HDLC协议(下面是所有的数据链路层协议都有的功能)

  • 简单 —— 这是首要的要求。
  • 封装成帧 —— 必须规定特殊的字符作为帧定界符
  • 透明性 —— 必须保证数据传输的透明性
  • 差错检测 —— 能够对接收端收到的帧进行检测,并立即丢弃有差错的帧
  • 能够及时自动检测出链路是否处于正常工作状态。(出现故障恢复能够自动的去建立连接)
  • 最大传送单元 —— 必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值促进各种实现之间的互操作性。(如何一个数据链路层都有一个定义最大的传输单元是多少)

 

 

 

PPP 协议不需要的功能


  •  纠错
  • 流量控制
  • 序号
  • 多点线路
  • 半双工或单工链路

 

 

PPP协议的帧格式


还是这个数据包,看看点对点链路的帧,看到源地址,目的地址还是没有变!但是由于链路不一样,协议也不一样,帧的格式也不一样,可以看到点到点的帧就不需要MAC地址。

计算机网络 数据链路层 协议知识点总结_网络_05

  • PPP 帧的首部和尾部分别为 4 个字段和 2 个字段。
  • 标志字段 F = 0x7E (符号“0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是 01111110)。(首部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的开始。)
  • 地址字段 A 只置为 0xFF。地址字段实际上并不起作用。
  • 控制字段 C 通常置为 0x03。
  • PPP 是面向字节的,所有的PPP 帧的长度都是整数字节。

计算机网络 数据链路层 协议知识点总结_java_21

首部有四个字段F,A,C,协议。尾部有两个字段FCS,F。这个就是ppp协议规定的。

F代表开始和结束,分别占用一个字节,这一个字节的数值是16进制的。7E代表了16进制里面的0111 1110。

A是地址字段。FF全部都是1111 1111,这个地址又不代表目标MAC地址,ppp协议不涉及MAC地址。ppp协议就不需要MAC地址,从一根线的一端发送到另外一端信号,中间没有其他设备,A发送的接收端必然是B,所以有没有地址都是无所谓的,所以这个地址字段形同虚设没有什么实际的意义。

PPP 有一个 2 个字节的协议字段。(和快递一样,得指明快递里面包裹是文件还是什么类型的物品)

  • 其值 若为 0x0021,则信息字段就是 IP 数据报。
  • 若为 0x8021,则信息字段是网络控制数据。
  • 若为 0xC021,则信息字段是 PPP 链路控制数据。
  • 若为 0xC023,则信息字段是鉴别数据。

PPP帧的尾部
尾部中的第一个字段(2个字节)是使用CRC的帧检验序列FCS。

尾部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的结束。

注:标志字段就是PPP帧的定界符。连续两帧之间只需要用一个标志字段。如果连续出现两个标志字段,就表示这是一个空帧,应当丢弃。