计算机网络基础 | 青训营笔记

103 阅读4分钟

当下,互联网已经成为人类社会不可缺少的一部分。计算机网络从整体来看,呈现出“网络的网络”之结构,具体到组成部分,又大致有主机(Host)、路由器(Router)等部分,设备与设备之间依赖网络协议(Protocol)进行信息的组织。

网络结构

网络整体结构是一个“网络的网络”,整个互联网可以看作是若干个区域网络相互连接形成的网络,而每个区域网络又是由更小的区域网络所构成,最底层则是若干台主机相互连接形成的网络。

两个主机之间要进行通信,一种容易想到的做法是为它们之间建立一条通路,之后双方使用这条通路交换信息即可,类似于电话接通后,通话双方就建立了一条通路,两边可以随意交谈。这种方式和电路很相似,某条电路连通后,电流就可以自由地通过电路流动,因而这种方式被称为电路交换。电路交换虽然很容易实现,且能为通信双方提供可保证的带宽,但也存在着资源利用率较低的问题:电话通话双方即使不说话,电话也仍然是接通的,其资源消耗并没有比通话双方不断说话更少,这显然造成了资源浪费。

为了解决上面的问题,分组交换应运而生。分组交换的思路是将信息切分为若干个“分组”(packet),通信线路则不再被某两个通信主机独占,而是让各个分组都能在通信线路上传输,通信双方通过发送一个个分组来进行交流,分组通过通信线路寻找并传输到目的主机。这种方法和快递类似:寄出的快递(可以看作是分组)包含了物品(要传输的信息),并在快递单上记录了地址(目的主机),一个个目的地相同或不同的快递通过快递车辆(通信线路)运输到相应的快递站点(路由器),并最终送到目的地(目标主机)。通过分组交换,通信线路能够被充分利用,通信双方暂时没有信息要传输时也就不会占据线路了。

网络分层

网络规模自网络诞生以来就在不断扩大,到了今天,互联网已然是一个前所未有的庞然大物,网络中存在着各种各样的设备(例如手机、电脑、智能家具)和物理线路(例如光纤、卫星通信、蜂窝网络),它们的硬件情况千差万别,难以设计出一个通用的通信协议,两个通信主机之间可能存在着多种传输介质(例如无线网络-有线网络)、两个主机也可能是不同设备(例如用手机控制家具)。为了解决这些问题,网络分层模型被提出,通过将网络划分为若干层,不同设备可以有不同的底层协议(例如WIFI网络中常用的802.11系列协议和有线网络常用的以太网协议),而遵循相同的顶层协议(例如目前已经成为事实标准的IP协议),从而实现相互通信。此外,网络分层还使得每一层的职责和权利被明确规定,每一层只需要在下一层提供的权利的基础上完成自己有限的职责,从而降低了开发难度(例如:开发一个网络聊天软件并不用去关心用户用的是有线网络还是无线网络,同理的,设计光纤也不用去考虑光纤要传输的是文字还是视频)。

目前常见的网络分层模型主要是TCP/IP五层模型和OSI七层模型两种,其中TCP/IP五层模型的应用最为广泛。TCP/IP五层模型从下到上依次为物理层、链路层、网络层、运输层和应用层,而OSI七层模型在运输层和应用层之间还加入了会话层和表示层。

网络协议

两个设备要相互交流,首先需要知道对方发送的是什么,为了实现这一点,就需要定义通信协议,双方按照约定的协议组织自己的信息,并按照协议作出相应的动作,才能彼此有效交流,没有协议,没有人知道一个01串要表达什么。

网络协议通常设计为标头+载荷的形式,标头用于记录例如目的信息和发送者信息、报文大小等信息,而载荷则是数据。一般来说,底层的协议会将上层的报文作为自己的载荷,并在之前加上自己的标头,因此一个报文呈现出多个标头+一组数据的形式,随后通过层层处理去除各层标头并交付给上层。