计算机网络的基础知识

79 阅读14分钟

本文已参与「新人创作礼」活动.一起开启掘金创作之路。

计算机网络的基础知识

计算机网络按规模可以分为WAN(Wide Area Network)广域网比广域网小一点的叫 MAN(Metropolitan Area NetWork)城域网 和 LAN(Local Area NetWork)局域网(小区等)。

网络的协议

什么是协议?在以前我总是没办法把它有一个很好的比喻来讲给没有入门的人,协议很抽象,但是目前有一个很好的例子来讲述什么是协议。

互联网中常用的协议有IP、TCP、HTTP等,在局域网中TCP、UDP也很常用。

计算机网络体系结构将这些网络协议进行了系统的归纳,像TCP/IP就是IP、TCP、HTTP等协议的集合。现在很多设备都支持TCP/IP。除此之外,还有很多其它类型的网络体系结构,如苹果的Apple-Talk等等。

下表介绍了不同的协议:

Web1-16548263989712

协议可以分为很多种,每一种协议都明确界定了他的行为规范,两台计算机之间额能够支持相同的协议,并遵守相同的协议进行处理。

协议如同对话。假设有三个人A、B、C。A只会说汉语、B只会说英语、而C既会说汉语也会说英语,那么他们该如何沟通呢?

  • 这时候汉语和英语就是协议
  • 聊天内容就是数据。
  • 聊聊天的动作就是通信

如此看来协议就和平常的语言一样,计算机和计算机之间进行通信,也可以认为是依据类似于人类的“语言”实现了相互通信。

举个例子:

image-20220706153823368

分组交换协议

分组交换是指将大数据分割为一个一个叫做包或者帧的(Packet)的较小单位进行传输的方法。这里所说的包,就和我们平常的快递一样,分组交换就是将一个大的物体打包成多个快递来发送。

当我们寄送快递的时候,需要将报上贴一个标签,其中包含了包裹的信息和收发人还有目的地等,在计算机网络分组传输的时候,也是需要在数据的头部加入一些信息作为识别标签,方便将数据在组合起来,在不同的通信协议当中需要构造的首部内容也不大相同,通常会规定,应在头部写入哪些内容,怎么写入内容,按什么顺序写入内容。举个例子:一般一分组交换协议为基础的数据包通信过程如下:

2

相互通信的两方通过协议来确定传输的内容,也就是说通信双方通过协议的规范对报文首部内容保持一定的定义和解释,这样通信双方就能正确的接收和使用数据。

协议标准化

1974年,IBM公司发布了SNA,将本公司的计算机通信技术作为系统化网络体系结构公之于众。从此,计算机厂商也纷纷发布各自的网络体系结构,引发了众多协议的系统化进程。然而,各家厂商的各种网络体系结构、各种协议之间并不相互兼容。即使是从物理层面上连接了两台异构的计算机,由于它们之间采用的网络体系结构不同,支持的协议不同,仍然无法实现正常的通信。

这对用户来说极其不便。因为这意味着起初采用了哪个厂商的计算机网络产品就只能一直使用同一厂商的产品。若相应的厂商破产或产品超过服务期限,就得将整套网络设备全部换掉。此外,因为不同部门之间使用的网络产品互不相同,所以就算将它们从物理上相互连接起来了也无法实现通信,这种情况亦不在少数。灵活性和可扩展性的缺乏使得当时的用户对计算机通信难以应用自如。

为了解决上述问题,国际标准化组织ISO(International Organization forStandards)制定了一个国际标准OSI(Open Systems lnterconnection)开放式通信系统互联参考模型。

这个模型只是作为参考,他只是对各层的作用做出了组略的界定,并没有太详细的定义,他对我们学习只能起到一个参考引导的作用,大多数通信模型,都参考了OSI中的几层来进行设计,通过OSI你就可以快速了解某一个协议的某一层是干什么的,有什么用。

协议分层与OSI模型

协议分层就如同计算机软件中的模块化开发。OSI参考模型的建议是比较理想化的。它希望实现从第一层到第七层的所有模块,并将它们组合起来实现网络通信。分层可以将每个分层独立使用,即使系统中某些分层发生变化,也不会波及整个系统。因此,可以构造一个扩展性和灵活性都较强的系统。实际上就是将各层的功能解耦合。

在这一模型中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做“接口”。同一层之间的交互所遵循的约定叫做“协议”。

3

简单来说就是每一层只接收下一层接口发来的内容,只向上一层通过接口发送内容。两个个体之间同一层的通信使用协议。你同时可能对这句话的理解比较困难:分层可以将每个分层独立使用,即使系统中某些分层发生变化,也不会波及整个系统

具体例子可参考下图:

未必

分层一定是完美的吗?

当然不是,分层的劣势可能就在于,过分的模块化、使数据处理的任务变得更加沉重以及每个模块都不得不实现相同的功能,导致性能的浪费。

至于每个模块都不得不实现相同的功能,说的是对于分组数据来说,每个层之间都需要实现相同的数据拆包和组包得功能。这是一件重复的动作。

标准的OSI参考模型

对于一个标准的OSI,应包含如下七层:

WEB5

OSI参考模型的分析

OSI模型始终扮演的是一个参考的作用,他只是对每一层的作用(职责范围)做出了大致的和粗略的定义,并没有对协议和接口进行详细的定义。他对学习和设计只能起一个引导作用。

那么我们为啥要学习OSI模型呢?

实际上大多数协议的每一层都是从OSI参考模型中合并出来的或者从OSI中单独抽取出来的。通过这一点,你就可以快速了解其他协议的构成或其他协议的每一层的作用。

OSI的协议与OSI参考模型

OSI协议是以OSI参考模型为基础界定了每个阶层的协议和每个阶层之间的相关接口的标准。遵循OSI协议的产品被称为OSI产品,也就是说其指代意义并不相同,请勿混淆。只要记住,OSI协议是为了让异构计算机之间能够相互通信的、由ISO和ITUT推进的其标准化的一种网络体系结构,其实现基础是OSI的七层模型。

OSI参考模型分层的大致分工

应用层

这一层的协议主要针对的是特定的应用来实现特定的操作,每应用的协议由应用类型决定。举个例子:

image-20220706162235970

表示层

在本地数据固有的格式和网络传输所需要的格式之间进行转换。

举个例子:

image-20220706162542342

会话层

通信链接管理,负责建立和断开连接,当然这里的连接指的是逻辑上的通路,并不是物理上的变化。

需要注意的是会话层并不直接管理是否断开连接,其管理的是断开联机的时机。

image-20220706162713302

传输层

传输层是管理两个节点之间数据的传输,也就说他主要关注的是数据是否传输发生错误等。

传输层才是实际处理和操作连接的层,他掌握着断开和连接。

在不同的网络体系结构下,网络层虽然可以将数据送达,但是网络层无法保证可达性。而在传输过程中出现数据丢失、顺序混乱等问题可能性会很大,就需要传输层提供一个功能:确保数据包可靠传输。

image-20220706162847592

网络层

这一层就很简单了,他的主要关注点就在于,跨网络直接如何进行传输和路由。

如何将数据传输到对应的地址上,实际上这一层主要负责寻址和路由选择。

image-20220706163008908

数据链路层

数据链路层每次理解的时候都很麻烦。就像本书,也没有很好的将这一点解释明白,其主要的关注点应该是,如何解决物理层差错问题?如何解决通信介质访问(多个设备同时使用相同的介质,比如手机WIFI)的问题?

链路层实际上就是解决了以上的问题,让你在传输数据的同时,即使通信介质被大量相同的设备使用也没有问题(链路层子协议:MAC协议),通过分组等操作,实现差错控制,差错纠正等应用。

实际上对于网络层,链路层就是将数据的分组解释出来,将揭示出来的内容上交给网络层进行分析。数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接受到的帧中的数据取出上交到网路层(IP数据报)。

当然MAC协议还包含了一个重要的内容就是:MAC地址。MAC地址是为了识别连接在同一个传输介质上的设备。

注意这里的措辞:同一个传输介质。

我们有时候也说数据链路层负责的实际上就是发送在一个分段内的数据,这个分段指的就是同一个传输介质的意思。

image-20220706163847139

物理层

物理层理解起来就相对简单了,物理层的作用就是将数据的1010转化成对应的高低电压变化,其存在的意义就是如何解决通信介质不同(通信的介质可能是电缆也有可能是空气)的问题,即使跨不同种类的介质也没有问题。

image-20220706165349007

网络的构成要素

通信链路与数据链路

计算机之间是指网络与计算机相连而组成的网络。那么现实当中计算机之间是怎样连接的呢?

计算机之间通过各种电缆相互连接,电联有很多种,包括双绞线电缆,光纤电缆,同轴电缆,串行电缆等。根据需要连接的设备之间数据链路的不同选择使用的电缆连接方式也不同,这里的数据链路(Datalink) 所指的是通信所涉及的协议及其网络类型。针对不同数据链路有不同的传播介质与其对应。具体有什么可参考下图:

补充一点:

传输速率与吞吐量

在数据传输过程当中信号的传播速度通常都是恒定的,因为光和电在一种介质当中其速率保持一定。而传输速率指的是两个设备之间数据流动的物理速度,注意这里指的是数据的速度,不是信号的速度,要和上边区分开,其单位是bps(Bits per second,每秒比特数),因此即使数据链路的传输速率不同,也不会出现传播速度忽快忽慢的情况,传输速率不是指单位数据流动的速度有多快,而是指单位时间内传输的数据量有多少。

传输速率又称为带宽,带宽越大网络传输能力就越强。

主机之间实际的传输速率被称作吞吐量。其单位与带宽相同,都是bps(Bits per second)。吞吐量不仅衡量带宽,同时也衡量主机的CPU处理能力、网络的拥堵程度、报文中数据字段的占有份额等信息。

基础的网络设备

网卡

任何一台计算机连接网络的时候,都需要一个硬件支持,俗称网卡,全称为网络接口卡(Network :network interface card)有时也被叫做:网络适配器(network adapter)、LAN卡。

集成了连接局域网功能的设备。有时会被集成到计算机的主板中,有时也可以单独插入扩展槽使用。Network lnfor-mation Center的缩写也是NIC,所以要注意区分。

计算机与外部链接的接口称作为计算机端口,简称端口。没有配置NIC的计算机如果想接入以太网,至少得外接一个扩展槽以便插入NIC。无线局域网的情况下也是如此,计算机必须具备能够接入无线网的NIC才能保证连接到网络。笔记本电脑如果没有内置的 NIC,可以通过ExpressCard或CardBus、压缩闪存以及USB方式插一块 NIC 以后再连网。ExpressCard,笔记本电脑中的卡型扩展设备。由制定PC卡标准的 PCMCIA ( Per-sonal Computer Memory Cardlnternational Association,PC机内存卡国际联合会)统一规格。目前大多数的笔记本已经将这个接口淘汰掉了,推荐使用USB来外接网卡。

中继器

中继器是OSI模型的第一层,物理层上边延长网络的设备。由电缆传过来的电信号或者光信号经由中继器的波形调整和放大再传给另一个电缆。

一般情况下,中继器的两端连接的是相同的通信媒介,但有的中继器可以完成不同媒介之间的转接工作。例如,可以在同轴电缆与光缆之间调整信号。然而,在这种情况下,中继器也只是单纯负责信号在0和1比特流之间的替换,并不负责判断数据是否有错误。同时,它只负责将电信号转化为光信号,因此不能在传输速度不同的媒介之间转发。 通过中继器而进行的网络延长,其距离也并非可以无限扩大。 例如一个 10Mbps 的以太网最多可以用4个中继器分段连接,而一个100Mbps 的以太网则最多只能连两个中继器。 有些中继器可以提供多个端口服务。这种中继器被称作中继集线器或集线器。因此,集线器"也可以看作是多口中继器,每个端口都可以成为一个中继器。

网桥、二层交换机

网桥是在OSI模型的第二层——数据链路层面上连接两个设备的。

它能够识别数据链路层中的数据帧,并将数据存储在临时内存中,再重新生成信号作为一个全新的帧转发给线连接的另一个网段,由于能存储这些数据,网桥能连接传输速率完全不同的数据链路。并且不限制连接网段的个数。

数据链路层的数据帧中有一个数据位叫做FCS,用以校验数据是否发送到正确的目的地。网桥通过检查这个域中的值,将那些损坏的数据丢弃,从而避免发送给其他的网段,此外,网桥还能通过地址自学习机制和过滤功能控制网络流量。

这类功能是OSI参考模型的第二层(数据链路层)所具有的功能,这里所说的地址是指MAC地址、硬件地址、物理地址以及适配器地址,也就是网络上针对NIC分配的具体地址。如下图所示,主机A与主机B之间进行通信时,只针对主机A发送数据帧即可。网桥会根据地址自学机制来判断是否需要转发数据帧。

\