计算机网络(3):数据链路层

数据链路层属于计算机网络的低层。
数据链路层使用的信道主要有以下两种类型:
(1)点对点信道。这种信道使用一对一的点对点通信方式。
(2)广播信道。这种信道使用一对多的广播通信方式。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。

fig1
当主机 H1 向主机 H2 发送数据时,中间经过三个路由器(R1,R2 和 R3)。
从协议的层次上看,数据的流动如图所示。主机H1和H2都有完整的五层协议栈,但路由器在转发分组时使用的协议栈只有下面的三层。(当路出器之间在交换路出信息时,则根据所使用的路由选择协议的不同,也有可能需要使用运输层协议)
数据链路层从左向右沿水平方向传送:H1的链路层→R1的链路层→R2的链路层→R3的链路层→H2的链路层。

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

链路与数据链路不是同一种东西:
链路(link) 是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。在进行数据通信时,两个计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。
数据链路(data link) :当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

现在最常用的方法是使用网络适配器(如拨号上网使用拨号适配器,以及通过以太网上网使用局域网适配器)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。

另外的术语:把链路分为物理链路和逻辑链路。物理链路就是上面所说的链路,而逻辑链路就是上面的数据链路,是物理链路加上必要的通信协议。
逻辑链路 = 物理链路 + 通信协议 逻辑链路 = 物理链路+通信协议 逻辑链路=物理链路+通信协议

数据链路层把网络层交下来的数据构成(数据链路层的协议数据单元)发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。在因特网中,网络层协议数据单元就是 IP 数据报(或简称为数据报、分组或包)。

点对点信道的数据链路层的三层简化模型
在这里插入图片描述
点对点信道的数据链路层在进行通信时的主要步骤如下:
(1)结点A的数据链路层把网络层交下来的 IP 数据报添加首部和尾部封装成帧。
(2)结点A把封装好的帧发送给结点B的数据链路层。
(3)若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出 IP 数据报 上交给上面的网络层:否则丢弃这个帧。

三个基本问题

数据链路层协议有许多种,但有三个基本问题则是共同的:封装成帧、透明传输和差错检测。

封装成帧

封装成帧(framing) 就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
在这里插入图片描述

所有在因特网上传送的数据都是以分组(即IP数据报)为传送单位。

帧长等于数据部分的长度加上帧首部和帧尾部的长度,而首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。还包括重要的控制信息。

每一种链路层协议都规定了帧的数据部分的长度上限——最大传送单元MTU (Maximum Transfer Unit)

控制字符 SOH(Start Of Header) 放在一帧的最前面,表示帧的首部开始。另一个控制字符 EOT (End Of Transmission) 表示帧的结束。SOH 和 EOT都是控制字符的名称。它们的十六进制编码分别是01(二进制是00000001)和04(二进制是00000100)。SOH(或EOT)并不是 S, O, H(或E,O,T)三个字符。
在这里插入图片描述

当数据在传输中出现差错时,假定发送端在尚未发送完一个帧时突然出故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。(通过SOH 和 EOT 进行帧的完整性的判断,接收或丢弃)

透明传输

由于帧的开始和结束的标记是使用专门指明的控制字符,因此,所传输的数据中的任何 8 比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。

当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输

但当数据部分是非 ASCII码的文本文件时,情况就不同了。如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 这种控制字符一样,数据链路层就会错误地 “找到帧的边界”,把部分帧收下(误认为是个完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH),如图。
在这里插入图片描述

解决透明传输问题:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符 “ESC”(其十六进制编码是1B)。而在接收端的数据链路层在将数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(byte stuffing)字符填充(character stuffing)
如果转义字符也出现数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。
在这里插入图片描述

错检测

比特在传输过程中可能会产生差错:1可能会变成0,而 0 也可能变成1。这就叫做比特差错。比特差错是传输差错中的一种。
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER (Bit Error Rate)

数据链路层广泛使用了 循环冗余检验CRC (Cyclic Redundancy Check)
在发送端,先把数据划分为组,假定每组 k k k个比特。现假定待传送的数据 M M M。CRC运算就是在数据 M M M 的后面添加供差错检测用的 n n n 位冗余码,然后构成一个帧发送出去,一共发送 ( k + n ) (k +n) (kn) 位。
在所要发送的数据后面增加 n n n 位的冗余码,虽然增大了数据传输的开销,但却可以进行差错检测。

n n n 位冗余码可用二进制的 模 ⒉运算(加法不进位) "进行"乘 M M M 的运算,这相当于在 M M M 后面添加 n n n 个0。得到的 ( k + n ) (k+ n) (k+n) 位的数除以收发双方事先商定的长度为 ( n + 1 ) (n +1) (n+1) 位的除数 P P P,得出商是 Q Q Q,而余数是 R ( n 位,比 P 少一位 ) R(n位,比P少一位) R(n位,比P少一位)

假设 M = 101001(即k =6)。假定除数 P= 1101(即n = 3)。经模 2 除法运算后的结果是:商 = 110101(商并没有什么用处),而余数 R = 001。这个余数 R 就作为冗余码拼接在数据 M 的后面发送出去。
在这里插入图片描述

这种为了进行检错而添加的冗余码常称为帧检验序列FCS (Frame Check Sequence)。因此加上 FCS 后发送的帧是101001001(即2^n M + FCS),共有 (k+n )位。

在接收端把接收到的数据以帧为单位进行CRC检验:把收到的每一个帧都除以同样的除数P(模⒉运算),然后检查得到的余数R:
(1)若得出的余数R=0,则判定这个帧没有差错,就接受(accept)。
(2)若余数R≠ 0,则判定这个帧有差错(但无法确定究竟是哪-位或哪几位出现了差错),就丢弃。

一种较方便的方法是用多项式来表示循环冗余检验过程。
在上面的例子中,用多项式 P ( X ) = X 3 + X 2 + 1 P(X) = X^3 + X^2 + 1 P(X)=X3+X2+1 表示上面的除数 P= 1101(最高位对应于 X 3 X^3 X3,最低位对应于 X 0 X^0 X0)。多项式 P ( X ) P(X) P(X) 称为生成多项式

在数据链路层若仅仅使用循环冗余检验CRC差错检测技术,凡是接收端数据链路层接受的帧均无差错。
使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输

可靠传输:数据链路层的发送端发送什么,在接收端就收到什么。
传输差错可分为两大类:一类就是比特差错,而另一类传输差错就是收到的帧并没有出现比特差错,但却出现了帧丢失、帧重复或帧失序。
例如,发送方连续传送三个帧:[#1]-[#2]-[#3]:
帧丢失:收到 [#1]-#3。
帧重复:收到 [#1]-[#2]-[#2]-[#3](收到两个[#2])。
帧失序:收到 [#1]-[#3]-[#2](后发送的帧反而先到达了接收端,这与一般数据链路层的传输概念不一样)。

点对点协议 PPP

点对点协议PPP(Point-to-Point Protocol)是目前使用得最广泛的数据链路层协议。

PPP 协议的特点

因特网用户通常都要连接到某个 ISP 才能接入到因特网。PPP 协议就是用户计算机和 ISP 进行通信时所使用的数据链路层协议。

PPP 协议应满足的需求

(1)简单
IETF 在设计因特网体系结构时把其中最复杂的部分放在 TCP 协议中,而网际协议IP则相对比较简单,它提供的是不可靠的数据报服务。在这种情况下,数据链路层没有必要提供比 IP 协议更多的功能。因此,对数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制。。
(2)封装成帧
PPP 协议必须规定特殊的字符作为帧定界符(即标志一个帧的开始和结束的字符),以便使接收端从收到的比特流中能准确地找出帧的开始和结束位置。
(3)透明性
PPP 协议必须保证数据传输的透明性。这就是说,如果数据中碰巧出现了和帧定界符一样的比特组合时,就要采取有效的措施来解决这个问题。
(4)多种网络层协议
PPP 协议必须能够在同一条物理链路上同时支持多种网络层协议(如P和IPX等)的运行。当点对点链路所连接的是局域网或路由器时,PPP协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。
(5)多种类型链路
除了要支持多种网络层的协议外,PPP还必须能够在多种类型的链路上运行
(6)差错检测(error detection)
PPP 协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧
(7)检测连接状态
PPP 协议必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态
(8)最大传送单元
PPP 协议必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值R。如果高层协议发送的分组过长并超过 MTU 的数值,PPP 就要丢弃这样的帧,并返回差错。
(9)网络层地址协商
PPP 协议必须提供一种机制使通信的两个网络层(例如,两个IP层)的实体能够通过协商知道或能够配置彼此的网络层地址。协商的算法应尽可能简单,并且能够在所有的情况下得出协商结果。这对拨号连接的链路特别重要,因为仅仅在链路层建立了连接而不知道对方网络层地址时,则还不能够保证网络层能够传送分组。
(10)数据压缩协商
PPP 协议必须提供一种方法来协商使用数据压缩算法。但 PPP协议并不要求将数据压缩算法进行标准化。

PPP 协议不需要的功能

(1)纠错(error correction)
在 TCP/P 协议族中,可靠传输由运输层的 TCP 协议负责,而数据链路层的 PPP协议只进行检错。这就是说,PPP协议是不可靠传输协议
(2流量控制
在 TCP/IP 协议族中,端到端的流量控制由TCP负责,因而链路级的PPP协议就不需要再重复进行流量控制。
(3)序号
PPP 不是可靠传输协议,因此不需要使用帧的序号。在噪声较大的环境下,如无线网络,则可以使用有序号的工作方式,这样就可以提供可靠传输服务。
(4)多点线路
PPP 协议不支持多点线路(即一个主站轮流和链路上的多个从站进行通信),而只支持点对点的链路通信。
(5)半双工或单工链路
PPP 协议只支持全双工链路。

PPP 协议的组成

PPP协议有三个组成部分:
(1)一个将 IP 数据报封装到串行链路的方法。
PPP 既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。IP 数据报在PPP帧中就是其信息部分。这个信息部分的长度受最大传送单元MTU的限制。
(2)一个用来建立、配置和测试数据链路连接的链路控制协议LCP(Link Control Protocol)。
通信的双方可协商一些选项。
(3)一套网络控制协议NCP (Network Control Protocol)。
其中的每一个协议支持不同的网络层协议,如IP、OSI的网络层、DECnet,以及AppleTalk 等。

PPP 协议的帧格式

1.字段的意义
PPP帧的首部和尾部分别为四个字段和两个字段。
在这里插入图片描述

首部的第一个字段和尾部的第二个字段都是标志字段F (Flag),规定为0x7E(十六进制的 7E的二进制表示是01111110)。标志字段表示一个帧的开始或结束。因此标志字段就是 PPP 帧的定界符。连续两帧之间只需要用一个标志字段。如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。

首部中的地址字段 A 规定为 0xFF(即11111111),控制字段C规定为 0x03(即00000011)。这两个字段实际上并没有携带 PPP 帧的信息。

PPP 首部的第四个字段是 2字节 的协议字段。
当协议字段为 0x0021 时,PPP 帧的信息字段就是 IP 数据报。
若为 0xC021,则信息字段是 PPP 链路控制协议 LCP 的数据,
而 0x8021 表示这是网络层的控制数据。
信息字段的长度是可变的,不超过1500字节。
尾部中的第一个字段(2字节) 是使用 CRC 的帧检验序列 FCS。

2.字节填充
当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。
当 PPP 使用 异步传输 时,它把转义符定义为 0x7D,并使用字节填充。
RFC 1662规定了如下所述的填充方法:
(1)把信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列(0x7D,0x5E)。
(2)若信息字段中出现一个 0x7D 的字节(即出现了和转义字符一样的比特组合),则把 0x7D 转变成为2字节序列(Ox7D,0x5D)。
(3)若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为 2 字节序列(0x7D,0x31)。

由于在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。

3.零比特传输
PPP 协议用在 SONET/SDH 链路时,是使用 同步传输 (一连串的比特连续传送)而不是异步传输(逐个字符地传送)。在这种情况下,PPP协议采用零比特填充方法来实现透明传输。
零比特填充的具体做法是:在发送端,先扫描整个信息字段(通常是用硬件实现,但也可用软件实现,只是会慢些)。只要发现有 5 个连续1,则立即填入一个 0。因此经过这种零比特填充后的数据,就可以保证在信息字段中不会出现 6 个连续1。接收端在收到一个帧时,先找到标志字段 F 以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续1后的一个0删除,以还原成原来的信息比特流。
在这里插入图片描述

这样就保证了透明传输:在所传送的数据比特流中可以传送任意组合的比特流,而不会引起对帧边界的判断错误。

PPP协议的工作状态

当用户拨号接入ISP后,就建立了一条从用户 PC 机到 ISP 的物理连接。这时,用户 PC 机向 ISP 发送一系列的 LCP(链路控制协议 Link Control Protocol) 分组(封装成多个PPP帧),以便建立 LCP 连接。这些分组及其响应选择了将要使用的一些 PPP参数。接着还要进行网络层配置,NCP(网络控制协议, Network Control Protocol)给新接入的用户 PC 机分配一个临时的IP地址。这样,用户 PC 机就成为因特网上的一个有IP地址的主机了。
当用户通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。

在这里插入图片描述

PPP 链路的起始和终止状态永远是链路静止(Link Dead)状态,这时在用户 PC 机和 ISP 的路由器之间并不存在物理层的连接。

当用户 PC 机通过调制解调器呼叫路由器时,路由器就能够检测到调制解调器发出的载波信号。在双方建立了物理层连接后,PPP就进入链路建立(Link Establish)状态,其目的是建立链路层的 LCP 连接。
这时 LCP 开始协商一些配置选项,即发送 LCP 的配置请求帧(Configure-Request)。
这是个 PPP帧,其协议字段置为 LCP 对应的代码,而信息字段包含特定的配置请求。
链路的另一端可以发送以下几种响应中的一种:
(1)配置确认帧(Configure-Ack):所有选项都接受。
(2)配置否认帧(Configure-Nak):所有选项都理解但不能接受。
(3)配置拒绝帧(Configure-Reject):选项有的无法识别或不能接受,需要协商。

LCP 配置选项包括链路上的最大帧长、所使用的鉴别协议(authentication protocol)的规约(如果有的话),以及不使用 PPP 帧中的地址和控制字段(因为这两个字段的值是固定的,没有任何信息量,可以在PPP帧的首部中省略这两个字节)。

协商结束后双方就建立了LCP链路,接着就进入鉴别(Authenticate)状态。在这一状态,只允许传送 LCP 协议的分组、鉴别协议的分组以及监测链路质量的分组。若使用口令鉴别协议 PAP (Password Authentication Protocol),则需要发起通信的一方发送身份标识符和口令。系统可允许用户重试若干次。
如果需要有更好的安全性,则可使用更加复杂的口令握手鉴别协议 CHAP(Challenge-Handshake Authentication Protocol)。若鉴别身份失败,则转到链路终止(Link Terminate)状态。若鉴别成功,则进入网络层协议(Network-LayerProtocol)状态。

网络层协议状态,PPP 链路的两端的网络控制协议 NCP 根据网络层的不同协议互相交换网络层特定的网络控制分组,因为路由器都能够同时支持多种的网络层协议。
总之,PPP 协议两端的网络层可以运行不同的网络层协议,但仍然可使用同一个 PPP 协议进行通信。

如果在 PPP 链路上运行的是 IP 协议,则对 PPP 链路的每一端配置 IP 协议模块(如分配IP地址)时就要使用 NCP 中支持IP的协议—— IP控制协议 IPCP (IP Control Protocol) 。IPCP分组也封装成 PPP 帧(其中的协议字段为0x8201)在PPP链路上传送。在低速链路上运行时,双方还可以协商使用压缩的 TCP 和 IP 首部,以减少在链路上发送的比特数。

当网络层配置完毕后,链路就进入可进行数据通信的链路打开(Link Open)状态。链路的两个PPP端点可以彼此向对方发送分组。两个 PPP 端点还可发送回送请求 LCP 分组(Echo-Request)和回送回答 LCP 分组(Echo-Reply),以检查链路的状态。

数据传输结束后,可以由链路的一端发出终止请求 LCP 分组(Terminate-Request)请求终止链路连接,在收到对方发来的终止确认 LCP 分组(Terminate-Ack)后,转到链路终止状态。如果链路出现故障,也会从链路打开状态转到链路终止状态。当调制解调器的载波停止后,则回到链路静止状态。

总结为:从设备之间无链路开始,到先建立物理链路,再建立 LCP 链路。经过鉴别后再建立 NCP 链路,然后才能交换数据。
因此,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。

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

广播信道可以进行一对多的通信。

局域网的数据连结层

局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。

局域网具的主要优点:
(1)具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
(2)便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
(3)提高了系统的可靠性(reliability)、可用性(availability)和生存性(survivability)。

局域网可按网络拓扑进行分类。
在这里插入图片描述

(a)是星形网。由于集线器(hub)的出现和双绞线大量用于局域网中,星形以太网以及多级星形结构的以太网获得了非常广泛的应用。
(b)是环形网,最典型的就是令牌环形网(token ring),简称为令牌环。
©为总线网,各站直接连在总线上。线网可使用两种协议。一种是传统以太网使用的 CSMA/CD,而另一种是令牌传递总线网,即物理上是总线网而逻辑上是令牌环形网。
(d)是树形网,总线网的变型,都属于使用广播信道的网络,但这主要用于频分复用的宽带局域网。

局域网工作的层次跨越了数据链路层和物理层。

共享信道要着重考虑的一个问题就是如何使众多用户能够合理而方便地共享通信媒体资源。
这在技术上有两种方法:
(1)静态划分信道,如频分复用、时分复用、波分复用和码分复用等。用户只要分配到了信道就不会和其他用户发生冲突。但这种划分信道的方法代价较高,不适合于局域网使用。
(2)动态媒体接入控制,它又称为多点接入(multiple access),其特点是信道并非在用户通信时固定分配给用户。这里又分为以下两类:
a.随机接入
随机接入的特点是所有的用户可随机地发送信息。但如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享媒体上就要产生碰撞(即发生了冲突),使得这些用户的发送都失败。因此,必须有解决碰撞的网络协议。
b.受控接入
受控接入的特点是用户不能随机地发送信息而必须服从一定的控制。这类的典型代表有分散控制的令牌环局域网和集中控制的多点线路探询(polling),或称为轮询

以太网的两个标准

以太网是一种常见的局域网(LAN)技术,用于在计算机和其他网络设备之间传输数据。它定义了数据链路层和物理层的标准,其中最常见的两个以太网标准是 Ethernet 和 Fast Ethernet。

Ethernet:
速度: 最初的Ethernet标准定义了传输速率为10 Mbps(兆比特每秒)。
介质: 常见的物理介质包括同轴电缆和双绞线。
拓扑结构: Ethernet 支持总线拓扑和星型拓扑。
帧格式: 数据帧采用CSMA/CD(载波监听多路访问/冲突检测)协议,用于在共享介质上协调设备之间的数据传输。
应用: 初始版本的Ethernet在1980年代广泛应用,但随着网络需求的增长,人们开始寻求更高的传输速率。

Fast Ethernet:
速度: Fast Ethernet标准提高了传输速率,达到了100 Mbps。
介质: Fast Ethernet保留了对同轴电缆的支持,但更常见的是使用双绞线。
拓扑结构: Fast Ethernet与Ethernet一样,支持总线和星型拓扑。
帧格式: 仍然使用CSMA/CD协议,但由于更高的速度,冲突检测的效率降低,而全双工通信变得更为普遍。
应用: Fast Ethernet在1990年代中期以后逐渐取代了传统的Ethernet,提供更高的带宽。

Fast Ethernet 是 Ethernet的升级版本,以满足对更高传输速率的需求。

适配器的作用

网络适配器(又称网络接口卡、网卡或NIC)是计算机中的一种硬件设备,它的主要作用是在计算机与计算机网络之间进行数据传输。以下是网络适配器的一些主要作用:
1.物理连接: 网络适配器负责建立计算机与网络之间的物理连接。它通常有一个端口,可连接到计算机的主板上,而另一端则连接到网络的物理媒体,如以太网电缆或Wi-Fi信号。
2.数据封装和解封装: 网络适配器将计算机中的数据封装成网络可以传输的格式。在发送数据时,它将计算机内部的数据转换成网络帧或数据包。在接收数据时,它负责解封装从网络上接收的数据,以便计算机能够理解和处理。
3.数据链路层处理: 网络适配器在OSI模型中的数据链路层(第二层)执行功能,处理数据帧的发送和接收。这包括物理地址(MAC地址)的管理、帧的创建和解析、错误检测和纠正等。
4.协议处理: 网络适配器支持特定的网络通信协议,例如TCP/IP协议。它能够理解和执行相应的协议,确保计算机能够与网络上的其他设备进行有效的通信。
5.流量控制: 网络适配器能够在数据传输过程中执行流量控制,以确保网络上的数据传输有效、有序,并且不会导致过多的数据丢失或冲突。
6.网络连接管理: 网络适配器管理与网络的连接和断开。它能够处理连接的建立和终止,以及在网络状态发生变化时适时地通知计算机系统。
7.无线网络管理(对于无线适配器): 如果是无线网络适配器,它还负责管理无线网络的连接,包括扫描可用网络、建立和维护与无线路由器或接入点的连接等功能。

CSMA/CD 协议

**CSMA/CD(Carrier Sense Multiple Access with Collision Detection)**是一种用于协调共享通信介质上多个设备访问的协议。
主要应用于以太网等局域网(LAN)技术中。CSMA/CD协议的工作原理涉及到"载波监听"、“多点访问"和"冲突检测”。
1.载波监听(Carrier Sense): 在数据发送之前,设备首先监听通信介质(比如电缆)上是否有载波(即其他设备正在发送数据)。如果通信介质上没有检测到载波,设备认为通道是空闲的,可以发送数据。
2.多点访问(Multiple Access): 多个设备可以在同一时间尝试发送数据。这是一种共享介质的访问方法,允许多个设备共享同一通信通道。
3.冲突检测(Collision Detection): 在设备发送数据的同时,它会不断监听通信介质,以检测是否发生了冲突。冲突是指两个或更多设备在同一时间尝试在通信介质上传输数据,导致信号干扰。
4.冲突处理: 如果发生冲突,设备会立即停止发送,并发送一个干扰信号,通知其他设备发生了冲突。接着,设备会等待一个随机的时间间隔,然后尝试重新发送数据。这个随机等待时间有助于减少再次发生冲突的可能性。

在使用CSMA/CD协议时,一个站不可能同时进行发送和接收。因此使用CSMA/CD协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)。

。。。大概了解就好了,现在应该是不太怎么常用了

使用广播信道的以太网

使用集线器的星形拓扑

在这里插入图片描述
传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。这种以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器(hub)

集线器(Hub)是一种网络设备,用于连接多个计算机或网络设备,充当网络中数据的中继和分发中心。下面是集线器的一些主要特点:
1.物理层设备: 集线器工作在OSI模型的物理层。它主要负责在物理媒体上传输比特流,没有处理网络层以上的逻辑或数据包的信息。
2.多端口连接: 集线器通常具有多个端口,每个端口都用于连接到网络中的一个设备。常见的集线器有4、8、16个端口,甚至更多。
3.广播性质: 集线器通过广播方式传输数据。当一个端口接收到数据时,集线器会将数据广播到所有其他端口,让所有连接的设备都能够看到这个数据。
4. 无存储和智能处理: 集线器不存储或处理数据帧,也没有智能路由功能。它只是简单地将接收到的数据广播到所有端口,而不关心数据的内容或目的地。
5. 共享冲突域: 所有连接到集线器的设备属于同一个冲突域。这意味着如果两个或更多设备尝试同时发送数据,可能会发生冲突。为了解决冲突,通常使用CSMA/CD协议,使用集线器的以太网在逻辑上仍是一个总线网。但在现代网络中,交换机和全双工通信方式更为常见,可以避免大部分冲突。
6.单点故障: 集线器是网络中的单点故障。如果集线器本身出现故障,整个网络可能受到影响。为了提高可靠性,现代网络更倾向于使用交换机等设备,这些设备在一定程度上能够处理冲突问题。
7.适用于小型网络: 集线器通常用于较小规模的网络,例如家庭网络或小型办公室网络。对于大型网络,更先进的设备,如交换机,更常用于提供更高的性能和更复杂的管理功能。

以太网的信道利用率

以太网的信道利用率是指在一定时间内,网络信道被成功利用的时间与总时间的比率。
信道利用率是一个重要的性能指标,它反映了网络的有效利用程度。在以太网中,信道利用率受到一些因素的影响。
在这里插入图片描述

信道利用率(Channel Utilization)可以通过以下公式计算:

信道利用率 = 实际传输时间 总时间 × 100 信道利用率= \frac{实际传输时间}{总时间}×100% 信道利用率=总时间实际传输时间×100

其中,实际传输时间是指在一定时间内成功传输数据的时间,总时间是指考虑了所有可能时间片段的总时间。

从上图可知,成功发送一个帧需要占用信道的时间是 T 0 + τ T_0 + \tau T0+τ τ \tau τ 是以太网单程端到端传播时延,比这个帧的发送时间要多一个单程端到端时延 t t t。这是因为当一个站发送完最后一个比特时,这个比特还要在以太网上传播。
在最极端的情况下,发送站在传输媒体的一端,而比特在媒体上传输到另一端所需的时间是 τ \tau τ。因此,必须在经过时间 T 0 + τ T_0 + \tau T0+τ 后以太网的媒体才完全进入空闲状态,才能允许其他站发送数据。

要提高以太网的信道利用率,就必须减小 τ \tau τ T T T 之比。在以太网中定义了参数 a a a,它是以太网单程端到端时延 τ \tau τ 与帧的发送时间 T 0 T_0 T0 之比:
a = τ T a=\frac{\tau}{T} a=Tτ

a → 0 a→0 a0 时,表示只要一发生碰撞,就立即可以检测出来,并立即停止发送,因而信道资源被浪费的时间非常非常少。反之,参数 a a a 越大,表明争用期所占的比例增大,这就使得每发生一次碰撞就浪费了不少的信道资源,使得信道利用率明显降低。

理想情况下,假定以太网上的各站发送数据都不会产生碰撞,并且能够非常有效地利用网络的传输资源,即总线一旦空闲就有某一个站立即发送数据。这样,发送一帧占用线路的时间是 T 0 + τ T_0 + \tau T0+τ,而帧本身的发送时间是 T 0 T_0 T0。于是可计算出极限信道利用率 S max ⁡ S_{\max} Smax 为:
S max ⁡ = T 0 T 0 + τ = 1 1 + a S_{\max} = \frac{T_0}{T_0+\tau} = \frac{1}{1+a} Smax=T0+τT0=1+a1

以太网的 MAC 层

在局域网中,硬件地址又称为物理地址或MAC地址(因为这种地址用在 MAC帧中)。

MAC层(媒体访问控制层)的硬件地址是设备在网络中唯一标识的地址,通常被称为 MAC地址。MAC地址是一个由 48位 二进制数组成的地址,通常以十六进制数表示。这个地址是在网络接口卡(NIC)制造时烧录到硬件中的,因此称之为硬件地址。

MAC地址的常见表示形式是六组由冒号或连字符分隔的十六进制数,例如:
00:1A:2B:3C:4D:5E 或没有分隔符的形式:001A2B3C4D5E
MAC地址的前三个字节(24位)通常表示设备制造商的标识,称为组织唯一标识符(OUI)。这由IEEE(电气和电子工程师协会)分配,并用于唯一标识网络设备的制造商。后三个字节是厂商在其产品中的唯一标识。

MAC 帧的格式

常用的以太网MAC帧格式有两种标准,一种是DIX Ethernet V2标准(即以太网V2标准),另一种是IEEE的802.3标准。

以太网 V2 的MAC帧格式:
在这里插入图片描述
以太网V2的 MAC 帧由五个字段组成。
前两个字段分别为 6 字节长的目的地址源地址字段。
第三个字段是 2 字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的 MAC帧的数据上交给上一层的这个协议。
第四个字段是数据字段,其长度在46到1500字节之间(46字节是这样得出的:最小长度64字节减去18字节的首部和尾部就得出数据字段的最小长度)。
最后一个字段是4字节的帧检验序列FCS(使用CRC检验)

IEEE 802.3 标准规定凡出现下列情况之一的即为无效的MAC帧
(1)帧的长度不是整数个字节;
(2)用收到的帧检验序列FCS查出有差错;
(3)收到的帧的MAC客户数据字段的长度不在46~1500字节之间。考虑到MAC帧首部和尾部的长度共有18字节,可以得出有效的MAC帧长度为64~1518字节之间。

这一章剩下的东西了解就好,没什么用。。。。

谢希仁第五版《计算机网络》学习笔记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/259380.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

制作PPT找了一个校徽是方形的,如何裁剪为圆形的。

问题描述:制作PPT找了一个校徽是方形的,如何裁剪为圆形的。 问题解决:使用一个在线圆形裁剪软件即可。 网址为: https://crop-circle.imageonline.co/cn/#google_vignette

css实现边框彩虹跑马灯效果

效果展示 代码实战 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-…

VWAP 订单的最佳执行方法:随机控制法

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学&#xff0c;点击下方链接报名&#xff1a; 量化投资速成营&#xff08;入门课程&#xff09; Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

软件设计模式:UML类图

文章目录 前言一、&#x1f4d6;设计模式概述1.软件设计模式的产生背景2.软件设计模式3.设计模式分类 二、&#x1f4e3;UML图1.类图概述2.类的表示法3.类与类之间的关系关联关系&#xff08;1&#xff09;单向关联&#xff08;2&#xff09;双向关联&#xff08;3&#xff09;…

【物联网无线通信技术】WiFi从理论到实践(ESP8266)

文章从理论基础到具体实现完整的介绍了最常见的物联网无线通信技术&#xff1a;WiFi。 文章首先介绍了WiFi这种无线通信技术的一些基本概念&#xff0c;并针对其使用的802.11协议的基本概念与其定义的无线通信连接建立过程进行了简单的介绍&#xff0c;然后对WiFi开发常常涉及的…

代码提交规范-ESLint+Prettier+husky+Commitlint

代码提交规范-ESLintPrettierhuskyCommitlint 配置eslint &#xff08;3步&#xff09;配置prettier(4步)1.安装配置prettier2.设置忽略文件 .prettierignore3.处理eslint冲突4. 配置vscode 的settings.json husky安装并配置lint-staged&#xff08;3步&#xff09;安装配置com…

网线的制作集线器交换机路由器的配置--含思维导图

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 一、网线的制作 1、网线的材料有哪些&#xff1f; 网线 网线是一种用于传输数据信号的电缆&#xff0c;广泛应…

【STM32工具篇】使用CLion开发STM32

本文主要记录使用CLion开发STM32&#xff0c;并调试相关功能 使用的CLion版本&#xff1a;2023.3.1 CLion嵌入式配置教程&#xff1a;STM32CubeMX项目 |CLion 文档 (jetbrains.com) OpenOCD官网下载&#xff1a;Download OpenOCD for Windows (gnutoolchains.com) GNU ARM工…

Java 栈和队列的交互实现

文章目录 队列和栈的区别一.用队列模拟实现栈1.1入栈1.2出栈1.3返回栈顶元素1.4判断栈是否为空 二.用栈模拟实现队列2.1 入队2.2出队2.3peek2.4判断队列是否为空 三.完整代码3.1 队列模拟实现栈3.2栈模拟实现队列 队列和栈的区别 栈和队列都是常用的数据结构&#xff0c;它们的…

Zookeeper-快速开始

Zookeeper介绍 简介&#xff1a;ZooKeeper 是一个开源的分布式协调框架&#xff0c;是Apache Hadoop 的一个子项目&#xff0c;主要用来解决分布式集群中应用系统的一致性问题。 设计目标&#xff1a;将那些复杂且容易出错的分布式一致性服务封装起来&#xff0c;构成一个高效…

Java中四种引用类型(强、软、弱、虚)

目录 引言 强引用&#xff08;Strong References&#xff09; 软引用&#xff08;Soft References&#xff09; 弱引用&#xff08;Weak References&#xff09; 虚引用&#xff08;Phantom References&#xff09; 引用类型的应用场景 总结 引言 Java中的引用类型是管理…

【漏洞复现】CVE-2023-6895 IP网络对讲广播系统远程命令执行

漏洞描述 杭州海康威视数字技术有限公司IP网络对讲广播系统。 海康威视对讲广播系统3.0.3_20201113_RELEASE(HIK)存在漏洞。它已被宣布为关键。该漏洞影响文件/php/ping.php 的未知代码。使用输入 netstat -ano 操作参数 jsondata[ip] 会导致 os 命令注入。 开发语言:PHP 开…

计算机组件操作系统BIOS的相关知识思维导图

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、运维实施工程师需要具备的知识 1、运维工程师、实施工程师是啥&#xff1f; 2、运维工程师、实施工…

[DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案

[网络故障] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案 问题描述 最近&#xff0c;我在使用CSDN插件浏览 MOOC 网站时&#xff0c;遇到了一些网络故障。具体表现为&#xff1a; MOOC 中国大学慕课网&#xff1a;www.icourse163.org点击CSDN插件首页的 MOOC&#xff08…

gitcode邀请协作人员

项目首页 点击项目设置 点击项目成员设置--生成邀请链接 设置权限、是否需要审核、成员有效时间、邀请链接有效时间&#xff08;不设置时间就是永久有效&#xff09; 点击创建链接 点击复制分享给别人加入即可

自动化测试工具-Selenium:WebDriver的API/方法使用全解

我们上一篇文章介绍了Selenium的三大组件&#xff0c;其中介绍了WebDriver是最重要的组件。在这里&#xff0c;我们将看到WebDriver常用的API/方法&#xff08;注&#xff1a;这里使用Python语言来进行演示&#xff09;。 1. WebDriver创建 打开VSCode&#xff0c;我们首先引…

windows下wsl(ubuntu)ldconfig报错

错误 sudo ldconfig /sbin/ldconfig.real: Cant link /usr/lib/wsl/lib/libnvoptix_loader.so.1 to libnvoptix.so.1 /sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link解决&#xff1a; 处理 sudo ldconfig 报错 libcuda.so.1 is not a symbolic …

IIS如何本地部署网站,作为局域网内的服务器

文章目录 IIS本地部署WebService1.使用IIS及WebService的原因:2.相关文件说明及网络条件说明&#xff1a;&#xff08;1&#xff09;文件说明&#xff1a;&#xff08;2&#xff09;网络条件说明&#xff1a; 3.IIS安装与配置&#xff1a;第一步&#xff1a;安装第二步&#xf…

0137 - 跳转控制语句 break、continue、return

文章目录 1 break1.1 基本介绍1.2 基本语法1.3 注意事项和细节说明 2 continue2.1 基本介绍2.2 基本语法 3 return 1 break 1.1 基本介绍 break 语句用于终止某个语句块的执行&#xff0c;一般使用在 switch 或者循环[for , while , do-while]中 1.2 基本语法 { ……break…

CAS-源码分析引出Unsafe类、Unsafe类详解

CASDemo演示 public class CASDemo {public static void main(String[] args) {AtomicInteger atomicInteger new AtomicInteger(5);System.out.println(atomicInteger.compareAndSet(5, 2022) "\t" atomicInteger.get());//true 2022System.out.println(atomicI…