概述
Wednesday, November 16, 2022
本文共5618字
12分钟阅读时长
⚠️本文是作者P3troL1er原创,首发于https://peterliuzhi.top/principle/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E6%A6%82%E8%BF%B0/。商业转载请联系作者获得授权,非商业转载请注明出处!
Lord, make me an instrument of thy peace. Where there is hatred, let me sow love.
— Francis of Assisi
什么是互联网
计算机网络(简称网络) 由若干结点和连接这些结点的链路组成
互联网是
- 数以亿计的计算设备连接在一起的网络
- 将各种网络(无数的异构网络)连接在一起的网络
网络把许多计算机连接在一起,而互联网则把许多网络通过路由器连接在一起。与网络相连的计算机常称为主机(host)或者终端系统(end system)
该如何发送/接收信息,就要用到协议
什么是协议
协议定义了消息格式、发送和接受消息的顺序、以及发出或收到指定消息之后所采取的行为。
边缘部分和核心部分
- 边缘部分 由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
- 核心部分 由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)
边缘部分-主机
我们说:“主机 A 和主机 B 进行通信”,实际上是指:“运行在主机 A 上的某个程序和运行在主机 B 上的另一个程序进通信”。由于“进程”就是“运行着的程序”,因此这也就是指:“主机 A 的某个进程和主机 B 上的另一个进程进行通信”,简称为“计算机之间通信”。
主机通信方式-C/S:客户-服务器方式
- 客户 (client) 和服务器 (server) 都是指通信中所涉及的两个应用进程。
- 客户 – 服务器方式所描述的是进程之间服务和被服务的关系。
- 客户是服务的请求方,服务器是服务的提供方。
- 客户和服务器间的通信,往往是需要经过互联网的核心部分的
客户程序:
- 被用户调用后运行,在通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址。
- 不需要特殊的硬件和很复杂的操作系统。
服务器程序:
- 是一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。
- 系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址。
- 一般需要有强大的硬件和高级的操作系统支持。
客户与服务器的通信关系建立后,通信可以是双向的,客户和服务器都可发送和接收数据。
客户和服务器本来都指的是计算机进程(软件),但在许多国外文献中,经常也把运行客户程序的机器称为 client(在这种情况下也可把 client 译为“客户机”),把运行服务器程序的机器称为 server。
主机通信方式-P2P:对等连接方式
- 对等连接 (peer-to-peer,简写为 P2P) 是指两个主机在通信时并不区分哪一个是服务请求方还是服务提供方。
- 只要两个主机都运行了对等连接软件 (P2P 软件) ,它们就可以进行平等的、对等连接通信。
- 可以减轻服务器压力,提高主机资源的利用率。
- 可能经过核心部分,也可能仅在边缘部分完成。
核心部分
- 互联网的核心部分由互联的路由器/交换机组成(interconnected routers)
- 网络中的核心部分要向网络边缘中的大量主机提供连通性,使边缘部分中的任何一个主机都能够向其他主机通信(即传送或接收各种形式的数据)。
- 在网络核心部分起特殊作用的是路由器 (router)。路由器是实现分组交换 (packet switching) 的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
主要的通信方式:电路交换(circuit switching)和分组交换(packet switching,用于互联网中)
电路交换
通过建立专用链路来实现通信。譬如打电话,将一个电话和其他所有电话都建立链路是不可能的。因此在打电话之前使
用电话交换机将这些电话连接起来,为两者建立专用链路。
这种必须经过“建立连接(占用通信资源)→ 通话(一直占用通信资源)→ 释放连接(归还通信资源)”三个步骤的交换方式称为电路交换。
优点:
- 资源专用,无共享,保证了性能和体验
- 传统电话网络中采用。
缺点:
电路交换是不适合互联网的,因为互联网具有突发性,通信量可能突然增大,导致我们很难去涉及电路的容量(若设计通信链路时按照峰值的数据量设计,则在平时通信链路的利用率很低)。
当使用电路交换来传送计算机数据时,其线路的传输效率往往很低。这是因为计算机数据是突发式地出现在传输线路上的,因此线路上真正用来传送数据的时间往往不到 10%甚至 1%。已被用户占用的通信线路资源在绝大部分时间里都是空闲的。
分组交换 Packet Switching
分组交换则采用存储转发技术
我们把要发送的整块数据称为一个报文(message),把较长的报文划分成为一个个更小的等长数据段,每一个数据段前面,加上一些由必要的控制信息组成的首部(header)后,就构成了一个分组(packet)。分组又称为“包”,而分组的首部也可称为“包头”。
因此,在分组交换中没有专用的链路,相当于把所有信息都切分并打包成一个个包,再同一发送给接收方
分组交换的过程:
位于网络边缘的主机和位于网络核心部分的路由器都是计算机,但它们的作用却很不一样。
主机是为用户进行信息处理的,并且可以和其他主机通过网络交换信息。
路由器则是用来转发分组的,即进行分组交换的。路由器收到一个分组,先暂时存储一下,检查其首部,查找转发表,按照首部中的目的地址,找到合适的接口转发出去,把分组交给下一个路由器。这样一步一步地(有时会经过几十个不同的路由器)以存储转发的方式,把分组交付最终的目的主机。
各路由器之间必须经常交换彼此掌握的路由信息,以便创建和动态维护路由器中的转发表,使得转发表能够在整个网络拓扑发生变化时及时更新。
分组交换的缺点:
- 分组在各路由器存储转发时需要排队,这就会造成一定的时延。分组交换并没有“专用”链路,因此可能发生拥塞
- 首部的开销
- 如果路由的缓存已满,则分组可能会被丢弃,信息可能会丢失,造成丢包
分组交换的优点:
三种交换方式比较
三种交换方式在数据传送阶段的主要特点:
- 电路交换—整个报文的比特流连续地从源点直达终点,好像在一个管道中传送。
- 报文交换—整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点。
- 分组交换—单个分组(这只是整个报文的一部分)传送到相邻结点,存储下来后查找转发表,转发到下一个结点
因为用户不是时刻在进行交互,所以分组交换可以更好地将计算机的资源利用起来
互联网的结构
端系统/主机,通过连接 access ISP(Internet Service Providers)接入互联网(小区、公司、或大学,都可视为 access ISP 的例子),Access ISP 也需要互相连接,由此任意的两个主机才可以互相发送分组,由此构成非常复杂的互联网 – network of networks
- 不可能将每一个 access net 都通过链路连接起来=》使用路由器交换,构建全球 ISP
- 但是可能会有不同公司构建 ISP,形成竞争=》使用网络交换节点 IXP 在 ISP 之间交互
- 同一个区域属于一层=》使用 regional net 区域网络将同一区域的请求一起上传
- 之后 Google 等网络服务供应商就可以在这个网络上构建自己的服务
互联网的性能
速率-比特 bit
- 比特(bit)是计算机中数据量的单位,也是信息论中使用的信息量的单位。
- 比特(bit)来源于 binary digit,意思是一个“二进制数字”,因此一个比特就是二进制数字中的一个 1 或 0。
- 速率是计算机网络中最重要的一个性能指标,指的是数据的传送速率,它也称为数据率 (data rate) 或比特率 (bit rate)。
- 速率的单位是 bit/s,或 kbit/s、Mbit/s、 Gbit/s 等。速率往往是指额定速率或标称速率,非实际运行速率。
承载能力-带宽
两种不同意义:
- “带宽”(bandwidth) 本来是指信号具有的频带宽度,其单位是赫(或千赫、兆赫、吉赫等)。
- 在计算机网络中,带宽用来表示网络中某通道传送数据的能力。表示在单位时间内网络中的某信道所能通过的“最高数据率”。单位是 bit/s,即 “比特每秒”。
在“带宽”的上述两种表述中,前者为频域称谓,而后者为时域称谓,其本质是相同的。也就是说,一条通信链路的“带宽”越宽,其所能传输的“最高数据率”也越高。
实际数据量-吞吐量
- 吞吐量 (throughput) 表示在单位时间内通过某个网络(或信道、接口)的数据量。
- 吞吐量更经常地用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。
- 吞吐量受网络的带宽或网络的额定速率的限制。
网络延迟-时延
时延 (delay 或 latency) 是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。有时也称为延迟或迟延。
网络中的时延由以下几个不同的部分组成:
- 发送时延(Transmission delay):主机或路由器发送数据帧所需要的时间
- 传播时延(Propagation delay):电磁波在信道中传播一定的距离需要花费的时间(1000 km 长的光纤线路产生的传播时延大约为 5 ms)
- 处理时延(Processing delay):主机或路由器在收到分组时要花费一定的时间进行处理
- 排队时延(Queueing delay)分组在经过网络传输时,要经过许多路由器。但分组在进入路由器后要先在输入队列中排队等待处理(当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大)
对于高速网络链路,我们提高的仅仅是数据的发送速率而不是比特在链路上的传播速率,提高链路带宽减小了数据的发送时延。传播速率由链路的物理介质决定,例如将铜导线换成光纤。
时延带宽积
链路的时延带宽积又称为以比特为单位的链路长度。
往返时间 RTT
往返时间 RTT (round-trip time) 表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时间。
互联网上的信息不仅仅单方向传输,而是双向交互的。因此,有时很需要知道双向交互一次所需的时间。
在互联网中,往返时间还包括各中间结点的处理时延、排队时延以及转发数据时的发送时延。
当使用卫星通信时,往返时间 RTT 相对较长,是很重要的一个性能指标。
利用率
分为信道利用率和网络利用率。
信道利用率指出某信道有百分之几的时间是被利用的(有数据通过),完全空闲的信道的利用率是零。
- 网络利用率则是全网络的信道利用率的加权平均值。
- 信道利用率并非越高越好。当某信道的利用率增大时,会导致分组排队,该信道引起的时延也就迅速增加。(当高速公路上的车流量很大时,由于在公路上的某些地方会出现堵塞,因此行车所需的时间就会变长)
令 D0 表示网络空闲时的时延,D 表示网络当前的时延,那么在适当的假定条件下,可以用下面的简单公式(1-5)来表示 D,D0 和利用率 U 之间的关系:
非性能指标
一些非性能特征也很重要。它们与前面介绍的性能指标有很大的关系。主要包括:
- 费用
- 可靠性
- 质量
- 可扩展性和可升级性
- 标准化
- 易于管理、可维护性
这些指标的重要性,不亚于性能评价指标。
分层模型
为什么要分层
对于复杂系统
- 分层模型容易理解,容易厘清复杂系统中不同部分的关系
- 分层模型也有利于维护和系统更新
- 改变某一层服务的内容和实现方式,对于其他层毫无影响,层与层之间互不干扰
- 仍以飞机飞行为例,改变安检口的登机规则对系统其他部分毫无影响
优点:
- 各层独立
- 灵活性好
- 结构可分割
- 易于实现和维护
- 能促进标准化
缺点:
计算机网络的分层模型
类似的,对于互联网,我们也采用分层模型。
- 应用层
- 应用层的任务是通过应用进程间的交互来完成特定网络应用
- 对于不同的网络应用需要有不同的应用层协议
- 传输层
- 运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务
- 并不针对某个特定网络应用,而是多种应用可以使用同一个运输层服务
- 主要使用传输控制协议 TCP (Transmission Control Protocol) 和 用户数据报协议 UDP (User Datagram Protocol)
- 网络层
- 网络层负责为分组交换网上的不同主机提供通信服务
- 把运输层产生的报文段或用户数据报封装成分组或包进行传送
- TCP/IP 体系中,由于网络层使用 IP 协议,因此分组也叫做 IP 数据报,或简称为数据报
- 链路层
- 两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议
- 数据链路层将网络层交下来的 IP 数据报组装成帧(framing),在两个相邻结点间的链路上传送帧(frame)。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)
- 物理层
- 在物理层上所传数据的单位是比特,物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特。物理层还要确定连接电缆的插头应当有多少根引脚以及各引脚应如何连接。
- 传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内而是在物理层协议的下面
在互联网所使用的各种协议中,最重要的和最著名的就是 TCP 和 IP 两个协议。现在人们经常提到的 TCP/IP 并不一定是单指 TCP 和 IP 这两个具体的协议,而往往是表示互联网所使用的整个 TCP/IP 协议族(protocol suite) >
OSI 参考模型把对等层次之间传送的数据单位称为该层的 协议数据单元 PDU (Protocol Data Unit) 。这个名词现已被许多非 OSI 标准采用。
每一层都要负责不同的任务,但每一层都会为数据加上首部或尾部,因此虽然独立灵活,但产生了额外的开销
多路复用和多路分解
TCP/IP 协议族在一些层使用多个协议,因此在发送时要将他们合并(封装),接收时要将他们分解
当发送时要为不同的协议使用不同的头部字段,这样在接收时就能分开分解
OSI 七层模型
一些概念
-
对等层次之间传送的数据单位称为该层的协议数据单元 PDU (Protocol Data Unit)。
-
任何两个同样的层次把数据(即数据单元加上控制信息)通过水平虚线(逻辑上的水平)直接传递给对方。这就是所谓的“对等层”(peer layers)之间的通信。
-
实体 (entity) 表示任何可发送或接收信息的硬件或软件进程
-
协议是控制两个对等实体进行通信的规则的集合。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务
-
要实现本层协议,还需要使用下层所提供的服务。(上层依赖下层)
-
协议必须把所有不利的条件事先都估计到,而不能假定一切都是正常的和非常理想的,必须非常仔细地检查这个协议能否应付各种异常情况
![[Pasted image 20220831220725.png]]
扫码阅读此文章
点击按钮复制分享信息
点击订阅