计算机网络 计算机网络的概述
本文最后更新于:2022年4月22日 上午
计算机网络的基本概念
熟知的几种网络
电信网络
早期是向用户提供电话,电报以及传真服务的有线电视
有线电视很明显是向用户传输电视节目计算机网络
计算机网络主要侧重于用户在计算机中之间传送数据
互连网 与 互联网
理解 互连网
与 互联网
互连网 (internet)
: 是一个通用名词,泛指任意使用不同协议将局部范围内的计算机连接掐里的网络称之为互连网互联网 (Internet)
: 是一个专用名词,是值全球最大的,开放的,由众多网络相互连接而成的特定的计算机网络,采用 TCP/IP 协议 作为通信的规则
互联网标准化工作
标准化工作对一项技术的发展有着至关重要的影响,
制定的过早可能会由于还未发展到成熟阶段,陈旧的标准可能会限制产品的技术水平,最终不得不重新制定标准
制定的太晚的话,技术的发展可能会五站可循,各家产品制造出来后互不兼容
互联网的标准很大的特点是面向公众,互联网的 所有 RFC 都可以从互联网上下载下来,我们每个人都可以针对某个文档发表自己的意见
正式标准的阶段
- 草案 6 个月
- 建议标准
- 互联网标准 可以获得一个 编号 STD ,一个标准可以有多个 RFC
互联网边缘部分的连接方式
1.客户端-服务器方式 C/S 服务
这种方式是互联网是最多的
客户端 - 服务端
简单的描述就是 客户端发送请求 -> 服务端做出响应
2.对等方式 p2p 方式
简单的讲就是指两台主机在通信时没有明显的区分哪一台是服务端,哪一天是客户端,只要两台主机都运行了对等链接软件(P2P 软件),它们就可以进行平等的,对等的连接通信,两台主机都能够互相下载对方的共享文件
从本质上来看,对等连接仍然可以看到 客户端-服务端的方式,只是对等链接中,每一台主机都可以是客户端,又可以是服务器
比较典型的例子就是文件下载,我为人人,人人为我的方式
互联网的核心部分
电路交换
电话机就是典型的 电路交换两台电话建立连接需要经过 建立连接(占用通信资源) -> 通话(一直占用通信资源) -> 释放连接(归还通信资源)
不同电话通信一对一的线 -> 交换机(通先前需要建立连接) 会存在占线当两端的电话一接通,就会建立一条专用的物理通路,这条连接保证了双方通话所需的通信资源,而这些资源在双方通信时不会被其他用户占用,通话完挂机后,交换机才会释放这条专用的物理通路
老式交换机的是需要人工转接,我们有时候在电视中看到的 90 年代背景的电视剧中就会出现人工转接的情况,而且长途通话需要通过多个交换机来转接
如果发送大量的连续的数据,使用电路交换比较快,但是电路交换不适合计算机通信
分组交换 计算机通讯使用的是 分组交换
在分组交换中,数据(通常一整块数据我们会称为
报文
)会被分割成一个个等长的分组(数据段, 也被称为包) ,然后给这些分组加上一些必要的控制信息(header)
,这样就构成了一个分组(packet)
这个
header
是极极其重要的,正是因为加上了header,才能保证每个分组能够在互联网中独立的选择传输的路径,正确的被传输到分组传输的终点
分组会发送到就近的路由中 该路由会暂时先存储(这一步路由器是存在内存中而不是硬盘中,所有交换速率是较快的),
然后会先检查其首部(header)
, 按照首部中的目标地址,接着查找转发表,找个合适的接口转发,交个下一个路由器,这样一步一步(这个过程中有时候回经过十几个不同的路由器),采用存储转发的方式,最终到达目标主机中,其中当某个路由器 接受到的信息量过大的时候,它会同时匹配其它的路由帮助转发
采用 分组交换 不需要 建立连接 - 释放连接 的过程,而且在传送数据时,是不需要占用这个端到另一个端的整个通信资源的,只有在分组在发送到这个路由器的时候,这个链路才是被占用的,在不被占用的时候,这个路由器也是可以为其它分组来提供存储转发的服务的
在网络的中心部分 路由之间的连接是采用 高速链路连接的,数据的
发送速度
是极快的, 只有边缘主机和路由核心部分的这块采用的低速链路连接的这一步为了保障数据的可靠传输型,当网络中的某些结点或者链路出现故障时,互联网还做了专门的措施,这一块可以后面再讨论
其中最主要明确:
分组交换最主要使用的是存储转发
路由器:最主要是做转发分组的优点:
高效:
在传输过程中动态分配传输带宽,对通信链路是逐段占用的,而不是整个端占用灵活:
为每个分组独立的选择最合适的转发路由迅速:
以分组为单位,不需要先建立连接,就可以向其它主机发送分组可靠:
保证可靠的网络协议,分布式多路由的分组交换网
缺点:
- 在各个路由器中存储转发的过程中需要排队
- 各个分组必须携带控制信息也会造成一定的开销
- 报文交换
以前的电报通信用的就是 报文交换 ,报文交换的时延较长,现在使用的较少了
![](/2021/03/21/network/%E6%A6%82%E8%BF%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E6%A6%82%E8%BF%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%A0%B8%E5%BF%83%E9%83%A8%E5%88%86%E7%9A%84%E4%B8%89%E7%A7%8D%E4%BA%A4%E6%8D%A2.png)
计算机网络的定义
计算机网络的精确定义并未统一
当前对于计算机网络较好的定义是这样的:计算机网络主要是由一些通用的,可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支撑广泛的和日益增长的应用
根据这个定义:
- 计算机网络所连接的硬件并不一定是计算机,包括智能手机等,
- 计算机网络并非专门用来传输数据,而是能够支持很多种应用(包括今后可能出现的各种应用)
计算机网络的类别
按照作用范围分类
广域网 WAN:
作用范围是几十到几千公里,主要是通过长距离运送不同主句发送的数据(例如:跨国家)城域网 MAN:
作用范围是 5 ~ 50 km,通常作用于城市,可以跨域几个街区,甚至整个城市局域网 LAN:
地理作用范围较小 1km 左右,一般是计算机或者工作照通过高速通信线路相连,如果有多个互连的局域网连接在一起,(例如:学校,企业,这样的网络我们称为 校园网 或 企业网)个人局域网 PAN:
作用范围很小 10m 左右,指在个人工作的地方把属于个人的电子设备用无线连接起来的网络
按照网络的使用者来分类
- 公用网 (public network) 指电信公司建造的大型网络,所有愿意按照电信公司规定缴纳费用的人都可以使用这种网络
- 专用网(private network) 是为某些特殊的业务工作建立的专用网络,例如(军队,银行,铁路,电力)等,均有自己系统的专用网
计算机网络的性能
计算机网络的性能特征一般是指 计算机网络中的几个性能指标,但除了这几个性能指标,一些非性能指标也会对计算机网络的性能产生影响
计算机网络的性能指标
速率
带宽
时延
发送时延
指 数据的头部从开始发送到将整个尾部完全发送完的时间传播时延
指 从 数据的尾部 开始 到 数据的尾部完整的进入到 路由器的缓存中的时间处理时延
指 路由器 在检查 分组 头部信息,检查路由表,分配合适接口的这段时间排队时延
指 数据 进入 路由器缓存中的排队时间,以及路由器处理完后在准备发送时的排队时间
时延带宽积
往返时间
例如 客户端从发送数据到 服务端, 服务端收到后给客户端返回确认收到信息的时间利用率
- 信道利用率
信道利用率是指 单位时间内,有百分之几的时间是有被利用的(有数据通过)
该值越低越好,如果该值过高,就类似于生活中堵车的场景,行车的时间就会变长 - 网络利用率
网络利用率是指,全网络的 信道利用率 的加权平均值
信道利用率 和 网络利用率 变高了会增加网络的时延
网络利用率达到 50%,网络的时延就会翻倍,当达到 100%,网络的时延就相当于是无穷大所以一些拥有主干网的 isp 都会控制 通道利用率不超过 50% 超过了就会准备扩容,增加线路的带宽
- 信道利用率
计算机网络的非性能指标
- 费用
- 质量
- 标准化
- 可靠性
- 可扩展性和可升级性
- 易于管理和维护
计算机网络的体系架构
计算机网络体系架构的形成
计算机网络是个非常复杂的系统,可以设想一下,要想使网络中的两台计算机互相发送文件,除了建立一条两台计算机的线路,我们可能还需要考虑如下
(1) 发起通信的计算机必须将数据通信的通路进行激活(activate)。所谓“激活”就是要发出一些信令,保证要传送的计算机数据能在这条通路上正确发送和接收。
(2) 要告诉网络如何识别接收数据的计算机。
(3) 发起通信的计算机必须查明对方计算机是否已开机,并且与网络连接正常。
(4) 发起通信的计算机中的应用程序必须弄清楚,在对方计算机中的文件管理程序是否已做好接收文件和存储文件的准备工作。
(5) 若计算机的文件格式不兼容,则至少其中一台计算机应完成格式转换功能。
(6) 对出现的各种差错和意外事故,如数据传送错误、重复或丢失,网络中某个结点交换机出现故障等,应当有可靠的措施保证对方计算机最终能够收到正确的文件。
由此可见,计算机网络通信的必须高度高度协调才行,而高度协调是极其复杂的,为了设计出这样的计算机网络,就有了 分层 的概念被提出,分层 可以使庞大而复杂的问题,转换成若干个局部问题。
1974 年,美国 IBM 公司宣布了系统网络体系架构 SNA(System Network Architecture),这个著名的网络体系架构就是按照分层的架构设计的,现在用 IBM 大型架构建的项目仍是使用 SNA,不久后,其它公司相继提出了不同名称的网络体系架构。
这种情况出现后,采用相同公司生成的设备能够很轻松的互连成网,这很容易形成垄断,而因为不同公司使用的体系架构不同,很显然,是不能够相互连接的。
而为了解决这个问题,国际标准化网络组织 ISO 在 1977 年成立的专门的机构研究该问题,他们提出了一个试图使全世界计算机可以互相连网的标准架构,即著名的 开放系统互连基本参考模型 OSI/RM (Open System Interconnection Refercence Model),简称 OSI
,只要遵循这个标准,就可以和世界上其它任何同样遵循该标准的网络设备进行通信,OSI
只是一个抽象的概念。
在 1983 年形成了正式的 开放系统互连基本参考模型的正式文件,即著名的 OIS 7498
国际标准,也就是所谓的 OSI 模型七层协议的体系架构
OSI
试图达到一种理想的状态,即全球的计算机都遵循这个统一标准,这样所有的计算机都都可以互连且进行数据交换,在 20 世纪 80 年代,很多大公司甚至一些国家的政府机构都纷纷表示支持 OSI
, 但是到了 20 世纪 90 年代,虽然 整套的 OSI
国际标准都已经制定出来了,但是基于 TPC/IP
协议的互联网已经抢先获得了成功,此时几乎已经找不到生产符合 OSI
国际标准的设备了。
因此,人们获得了一个结论,即 OSI
只获得了一些理论的研究成果,但在市场方面却事与愿违的失败了,现今规模最大的,覆盖全球的,基于 TCP/IP
协议的互联网并未使用 OSI
标准, OSI
模型失败的几个原因如下
OSI
专家缺少经验,在完成OSI
标准时缺乏商业驱动力OSI
标准制定的时间过长OSI
标准太过于复杂,而且运行效率低OSI
标准层次划分过多,有些功能在不同层中重复使用
一般而言,网络设备和技术只有符合有关国际标准才能大范围获得工程上的应用,但是现在情况却反过来了,得到最广泛应用的并不是 法律上的国际标准 OSI
,基于 TCP/IP
协议的互联网成为了 事实上的国际标准
在过去指定标准得组织往往以一些专家,学者为主,但现在很多公司纷纷加入了各种标准化组织,使得技术标准具有浓厚的商业气息,一个新标准的出现,往往并不意味其技术水平是最先进的,有时候还有有一些其他市场背景
协议与划分层次
在计算机中要有条不紊的进行数据交换,必须要遵循一些规则,这些规则 明确了所交换数据的格式以及同步交换的问题,这里指的同步不是狭义上的同步,而是广义上的同步,同步含有时序的意思,这些为网络中的数据交换而制定的规则或者标准称为 网络协议(network protocol),网络协议也可以称为协议,网络协议由以下几个部分组成
- 语法:即数据与控制信息的结构或格式
- 语义:即需要发出何种控制信息,完成何种动作以及做出何种相应
- 同步:即事件实现顺序的详细说明
协议是计算机网络中必不可少的一部分,如果我们想让两台计算机通信,比如下载文件,那肯定必不可少协议。
但是,如果我们是操作个人电脑上的文件,是不需要任何网络协议的
对于非常复杂的计算机网络协议,其结构应该是层次化的,假定我们要在主机 1 中通过通信网络传送文件,这是一项比较复杂的工作,我们可以将主要工作分为以下几类
第一类工作与传送文件直接相关,列如,发送端的文件传输应用与接收端的文件管理程序已经做好接收文件和存储文件的准备,如果两台计算中的文件格式不一致,则必须有一台计算机完成文件格式的转换,这两项工作可以用一个 文件传送模块 来完成。这样子,两台主机可将文件传送模块作为最高的一层
![](/2021/03/21/network/%E6%A6%82%E8%BF%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E6%A6%82%E8%BF%B0/%E5%88%92%E5%88%86%E5%B1%82%E6%AC%A1%E7%9A%84%E4%B8%BE%E4%BE%8B.png)
因为我们刚刚提到了层次化,所以我们是不希望把所有的工作全部放在 文件传送模块 完成的,我们可以再设立一个 通信服务模块,用来保证文件和文件传输命令可靠的在两个系统文件中传输,也就是说,让位于上方的 文件传送模块 使用 下方的 通信服务模块提供的服务,
同理,如果我我们上方不是 文件传送模块,而是 电子邮件传送模块,它仍然可以使用 通信服务模块 提供的服务来完成可靠的传输
同样道理,我们可以再构造一个 网络接入模块,让这个模块负责做与网络接口细节相关的工作,并未上层提供服务,使上层的 通信服务模块能够完成可靠通信服务
从上述简单的例子中,我们可以看到分层可以带来很多的好处
- 各层之间是独立的
- 灵活性好
- 结构上可分隔开
- 易于实现和维护
- 能促进标准化工作
- 差错控制
- 流量控制
- 分段与重装
- 复用和分用
- 连接建立和释放
当然,必不可少的也会带来一些缺点
- 降低效率
- 一些功能会在不同层中重复出现
体系结构是抽象的,而实现是具体的,是真正运行在计算机硬件和软件
五层协议的网络结构
OSI 七层协议体系结构的概念和请求,概念也完整,但它既复杂又不实用,TCP/IP 体系架构则不同,它一共分为四层,包含应用层,传输层,网络层,网络结构层,网络结构层这一层没有具体的内容,因此我们学习计算机网络的时候,通常会采取折中的方式,即综合 OSI 和 TCP/IP 协议的优点,采用只有五层协议的体系架构,这样更能把概念了解的更清楚
![](/2021/03/21/network/%E6%A6%82%E8%BF%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E6%A6%82%E8%BF%B0/%E4%BA%94%E5%B1%82%E7%BD%91%E7%BB%9C%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84.png)
应用层:
应用层是体系结构中的最高层,它主要完成 计算机进程中的交互 ,对于不同的引用应该需要有不同的协议,例如域名系统 DNS,支持万维网应用的 HTTP 协议,电子邮件的 SMTP 协议
传输介质我们称为 报文传输层(运输层):
主要任务是负责为 两台主机进程中的通信 提供 通用的数据传输 服务,所以 传输层并不针对某个特定的网络应用,而是可以为多种应用提供服务
由于一台主机可以开启多个进程,所以 运输层 提供了复用和分用
,复用就是可以多个进程同时使用下面运输层的服务,分用和复用相反,在接收方会把收到的信息分别交给上面引用层对应的进程
传输层主要使用以下两种协议:传输控制协议 TCP(Transmission Control Protocol):
提供面向连接的,可靠的数据报传输服务,其数据传输的单位是报文段用户数据报协议 UDP(User Datagram Protocol):
提供无连接的,尽最大努力 的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报
网络层:
网络层负责为分组交换的不同主机提供通信服务,在发送数据时,网络层将运输层产生的报文段或用户数据封装成分组或包来进行传送
在 TCP/IP 体系中,由于网络层使用 IP 协议,因此分组也叫作 IP 数据报 ,或者简称数据报
网络层的另外一个主要任务,就是要选择合适的路由,使源主机运输层传下来的分组,能够在网络中的路由查找到主机数据链路层:
两台主机在数据传输的时候,总是在一段一段的链路上传送的,这就需要专门的链路层协议,在两个相邻结点中传输数据时,数据链路层会把从网络层交下来的 IP 数据包组装成帧,然后在两个相邻的结点传送帧
接收数据的时候,数据链路层可以知道一个比特是从哪个帧开始和哪个帧结束,这样,在数据接受的时候,就可以从中提取数据部分,上交给网络层
控制信息还可以使接收端检测所收到的信息是否有差错,如果发现有问题,数据链路层就直接丢弃这个包了,避免继续发给网络层而浪费网络资源,如果需要改正数据在数据链路层出现的差错(也就是说,数据链路层不仅要查错,还要纠错),那就需要采用可靠的传输协议来纠正出现的差错,这种方法会使数据链路层协议复杂些物理层
物理层的传输介质是比特,一串 0 或 1 的数字,例如,发送方发送 1 时,接收方应该正确的接收到 1。所以物理层需要考虑该使用多少的电压表示 “1” 或 “0”,以及接收方该如何接收发送方发送的比特
注意: 传递信息所利用的一些物理媒体,如双绞线,同轴电缆,光缆,无线通道等,并不在物理层协议之内而是在物理层的下面,因此,也有人把物理层下面的物理媒体层当作第 0 层
在互联网使用的各种协议中,最著名的就是 TCP 和 IP 两个协议。但是,人民常提到的 TCP/IP 协议并不一定单指 TCP 和 IP 这两个具体的协议,而往往是表示互联网所使用的整个 TCP/IP 协议族
![](/2021/03/21/network/%E6%A6%82%E8%BF%B0/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E6%A6%82%E8%BF%B0/%E6%95%B0%E6%8D%AE%E5%9C%A8%E5%90%84%E5%B1%82%E4%B9%8B%E9%97%B4%E7%9A%84%E4%BC%A0%E9%80%92%E8%BF%87%E7%A8%8B.png)
协议、实体、服务和服务访问点
实体:这一抽象名词可以表示 任何可发送或接收信息的硬件或软件进程,
协议:是控制两个对等实体(或多个实体),进行通信的规则的集合
- 协议的语法方面 规定了交换信息的格式
- 协议的语义方面 规定了发送者和接受者所要完成的操作,比如,在某种情况下,数据必须重传或者丢弃
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。一定要弄清楚,协议和服务在概念上是很不一样的。首先,协议的实现保证了能够向上一层提供服务。使用本层服务的实体只能看见服务而无法看见下面的协议。也就是说,下面的协议对上面的实体是透明的。
其次,协议是“水平的”,
即协议是控制对等实体之间通信的规则。但服务是“垂直的”,
即服务是由下层向上层通过层间接口提供的。另外,并非在一个层内完成的全部功能都称为服务。只有那些能够被高一层实体“看得见”的功能才能称之为“服务”。上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令在OSI中称为服务原语。服务访问点:
在同一系统中相邻两层的实体进行交互(即交换信息)的地方,通常称为服务访问点SAP (Service Access Point)。服务访问点SAP是一个抽象的概念,它实际上就是一个逻辑接口,有点像邮政信箱(可以把邮件放入信箱和从信箱中取走邮件),但这种层间接口和两个设备之间的硬件接口(并行的或串行的)并不一样。OSI把层与层之间交换的数据的单位称为服务数据单元SDU (Service Data Unit),它可以与PDU不一样。例如,可以是多个SDU合成为一个PDU,也可以是一个SDU划分为几个PDU.这样,在任何相邻两层之间的关系可概括为图1-20所示的那样。这里要注意的是,第n层的两个“实体(n)”之间通过“协议(n)”进行通信,而第n+ 1层的两个“实体(n + 1)”之间则通过另外的“协议(n + 1)”进行通信(每一层都使用不同的协议)。第n层向上面的第n+ 1层所提供的服务实际上已包括了在它以下各层所提供的服务。第n层的实体对第n+1层的实体就相当于一个服务提供者。在服务提供者的上一层的实体又称为“服务用户”,因为它使用下层服务提供者所提供的服务。
TCP/IP 的体系结构
前面说了,TCP/IP 的体系架构比较简单,只有四层
目前互联网应用有些是已经是直接使用 IP 层,甚至直接使用最下面的网络接口层
还有一种方式,就是分层次画出具体的协议来表示 TCP/IP 协议,它的特点是上下两头大,而中间小,应用层和网络接口层都有很多协议,而中间的 iP 层很小,上层的所有协议都汇聚到一个 IP 协议中,这种很想沙漏 TCP/IP 协议可以为各式各样的应用提供服务,同时 TCP/IP 协议允许 IP 协议在各式各样的网络构成的互联网上运行。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议,转载请注明出处。