乐趣区

关于tcp-ip:小菜学网络数据链路层概述

上一大节,咱们以两台主机为例,探讨了一个理想化的物理层模型。当初,咱们将问题进一步延长:多台主机如何实现两两通信呢?咱们以三台主机为例进行探讨:

如上图,有 _3_ 台主机,名字别离是:_ant_、_bee_ 以及 _cicada_。为了实现主机间通信,咱们将三者连贯到一根共用导线。每台主机都能够扭转导线电平,也能够检测导线电平。与此同时,假如在硬件层面,多方通信抵触仲裁机制曾经实现并且可用。这样,是否就解决了多主机通信问题呢?

寻址

假如,_ant_ 向 _bee_ 发送一个数据 11110000 (粗体)。因为导线是共享的,所有主机都能够检测到电平信号。换句话讲,_bee_ 和 _cicada_ 都会收到这个数据 11110000,而 _cicada_ 本不应该接管这个数据!另一方面,_bee_ 收到数据后,也不晓得数据到底是谁发给它的。

为了简化接下来的探讨,咱们省略了物理层起止管制比特 1010 和 0101

数据不禁产生困惑:_我从哪来?去往何方?_

为此,咱们须要引入一些比特,用来标识数据的 起源 以及 目的地。例子中只有 3 台主机,两个比特就足以惟一确定一台主机:

机器 比特
ant 00
bee 01
cicada 10

那么,发送数据时,再加上两个比特用于示意起源主机,两个比特示意指标主机,问题不就解决了吗?

如图,主机下方的灰色比特惟一标识一台主机:

ant 发送数据时,在最后面加上两个比特 (红色) 用于标识起源机器,00 示意 ant;另外两个比特 (绿色) 用于标识指标机器,01 示意 bee

当 _bee_ 收到数据后,查看前两个比特(红色),值为 00,便晓得它是 _ant_ 收回来的;查看紧接着的两个比特(绿色),值为 01,与本人匹配上,便欢快地收下了。相同,_cicada_ 收到数据后,发现 01 和本人 10 匹配不上,便抛弃这个数据。

新引入比特所起的作用,在计算机网络中称为 寻址 。这两个比特也就称为 地址,其中,红色为源地址,绿色为目标地址。引入寻址机制后,咱们完满地解答了数据从哪来,到哪去的困惑。

复用与分用

信道只有一个,然而通信需要是无穷无尽的——传输钻研数值、文件打印、即时通讯,不一而足。如何解决这个矛盾呢?套路还是一样的——引入新的比特标识数据类型。

假如,总的通信需要就下面这 3 个。那么,2 个额定的比特即可解决问题。

类型 比特
钻研数据 00
文件打印 01
即时通讯 10

举个例子,假如 _ant_ 向 _bee_ 上报钻研数据并打印一个文件:

_bee_ 接管到数据后,依据紫色比特,决定数据如何解决。通过新引入的紫色比特,咱们在同个信道上实现了不同的通信!

接下来,从实践的视角来扫视这个场景:

信道只有一个,却要承载多样的通信工作。在发送端,通过退出紫色比特,将不同的数据通过一个共用信道发送进来,这个过程叫做 复用  (_Multiplexing_);在接收端,从共用信道上接收数据,而后查看紫色比特决定数据如何解决,这个过程叫做 分用 (_Demultiplexing_)。

在接下来的章节,咱们将看到 复用分用 的思维贯彻计算机网络的始终。

到目前为止,咱们引入了 _3_ 种不同的比特,别离是 源地址 目标地址 以及 数据类型 。对于这些比特的位数以及含意的约定,便形成 网络协议

至此,咱们解决了多台共用信道主机间的通信问题,这相当于网络分层构造中的 数据链路层。数据链路层负责为下层提供链路通信能力,次要作用是:

  • 寻址
  • 数据复用 / 分用

数据链路层的协定有很多,下节咱们将介绍其中最罕用的 以太网协定

【小菜学网络】系列文章首发于公众号【小菜学编程】,敬请关注:

退出移动版