【计算机网络】
点击上方“程序员大白”,选择“星标”公众号
重磅干货,第一时间送达
哈哈,景禹回来了,前段时间在复习考试,未能坚持写作,实属抱歉!鉴于此,给正在上大学的你或者工作的你,一点儿小建议,可能带有个人的偏见,还望斟酌之后采纳或者拒绝。
上大学的时候,有的是时间,别听周围的人说什么考证无用论,当你工作的时候,你会发现一纸证书卡住了你升级的脖子。建议考一下软考相关的证书,以考促学,巩固自己的计算机相关基础知识。 之前没考,又能如何?人生的路很长,持续性学习才是王道,现在行动起来,一样可以提升自己。
关于考证相关的资讯可以私信我。
基本概念
开放系统(Open System): 这一概念远远超出计算机网络的范畴,其强调与外界相关联性,对计算机网络而言,则表示 连接到因特网并准备与其他设备进行通信的系统。
关闭系统(Closed System): 是独立于外界环境,不受外界环境影响也不影响外界环境的系统;对计算网络而言,表示那些 未连接到因特网且不与其他设备进行通信的系统 。
什么是主机(Host)或端系统(end system)?
在前一篇文章中,我简略地称计算机就是一个主机(Host),这是有局限性的,正确的理解是:所有的上网设备均可以视为主机,比如手机,pad,投影仪、电视机、智能手环等等均可以视为主机,而计算机只是最典型的一个主机,我们的大部分实验也都是在计算机上的做的。
对于任意一台主机,都会有一个主机名与之关联,按键 Windows + R
,输入 cmd
打开命令行窗口(这都是常规操作,以后就不赘述了),输入 hostname
就可以看到你的主机名称(期待你们能黑了我的主机,我告诉你的主机名称奥!):
什么是协议(Protocol)?
计算机网络中的数据交换必须遵守事先约定好的规则,而这些规则明确规定了所交换的数据的格式以及有关的同步问题(同步含有时序的意思)。网络协议 (network protocol),简称为协议,是为进行网络中的数据交换而建立的 规则、标准 或 约定。 这种协议与我们日常生活中提到的各种协议很相似,比如大家找到了工作,公司一般除了和大家签 3 方协议,这个协议你和公司都必须遵守,这样才算有效,此外公司还会跟你签一个两方(补充协议),同样双方都应该遵守,任何一方违背协议,都要付出代价(比如违约金),对计算网络协议而言,如果通信双方有任何一方不遵守协议,意味着他们将无法通信。
对于学习计算机网络,其实你搞懂了每一个协议,你也就基本搞懂了计算机网络。日后会给大家分享到 TCP, IP,UDP,ARP,DHCP,FTP,SMTP 等等协议!
什么是 ISP ?
ISP 就是 因特网服务提供商(Internet Service Provided),就是大家熟知的中国电信、中国网通和中国移动等等(不限于这三个,还有企业 ISP、校园 ISP),不胜枚举,ISP 的作用就是将主机接入因特网当中。
计算机网络的组成
这部分虽然上次写过,但是我觉得不够完善,所以大部分内容做了修改!
边缘部分
处在互联网边缘的部分就是连接在互联网上的所有的主机或端系统 (end system)。端系统在功能上可能有很大的差别,小的端系统可以是一台普通个人电脑,具有上网功能的智能手机,甚至是一个很小的网络摄像头;大的端系统则可以是一台非常昂贵的大型计算机;端系统的拥有者可以是个人,也可以是单位(如学校、企业、政府机关等),当然也可以是某个 ISP。
“主机 A 和主机 B 进行通信” 实际上是指:“运行在主机 A 上的某个程序和运行在主机 B 上的另一个程序进行通信”。即“主机 A 的某个进程和主机 B 上的另一个进程进行通信”。 简称为“计算机之间通信”。端系统之间的通信方式通常可划分为两大类:客户服务器(CS)方式 和 对等方式 。
客户服务器方式
客户-服务器方式,即Client/Server 方式,简称 C/S 方式。
图 1-1 客户服务器(C/S)方式
上图为客户 A 向 服务器 B 发出请求服务,服务器 B 向客户 A 提供服务的过程,其中:
客户 (client) 和服务器 (server) 都是指通信中所涉及的两个应用进程。 客户--服务器方式所描述的是进程之间服务和被服务的关系。 客户是服务的请求方,服务器是服务的提供方。 服务请求方和服务提供方都要使用网络核心部分所提供的服务。
客户软件的特点:
被用户调用后运行,在打算通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址。 不需要特殊的硬件和很复杂的操作系统。
服务器软件的特点:
一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。 系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址。 一般需要强大的硬件和高级的操作系统支持。
客户与服务器的通信关系建立后,通信可以是双向的,客户和服务器都可发送和接收数据。
对等方式
对等方式即 Peer-to-Peer 方式,简称 P2P 方式,其可以定义为:网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源通过网络提供服务和内容,能被其它对等节点(Peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源、服务和内容的提供者(Server),又是资源、服务和内容的获取者(Client)。
对等连接是指两个主机在通信时并不区分哪一个是服务请求方还是服务提供方。 只要两个主机都运行了对等连接软件 (P2P 软件) ,它们就可以进行平等的、对等连接通信。 双方都可以下载对方已经存储在硬盘中的共享文档。 对等连接方式从本质上看仍然是使用客户服务器方式,只是对等连接中的每一个主机既是客户又是服务器。
图1-2 对等连接方式
如图 1-2 所示,主机 C 请求 D 的服务时,C 是客户,D 是服务器。但如果 C 又同时向 F提供服务,那么 C 又同时起着服务器的作用。对等连接工作方式可支持大量对等用户(如上百万个)同时工作。 著名的 P2P 下载,比如电驴、迅雷下载的基本原理就是如此。
核心部分
网络核心部分是互联网中最复杂的部分。网络中的核心部分要向网络边缘中的大量主机提供连通性,使边缘部分中的任何一个主机都能够向其他主机通信(即传送或接收各种形式的数据)。在网络核心部分起特殊作用的是路由器 (router)。
路由器是实现分组交换 (packet switching) 的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。为了理解分组交换,首先了解电路交换的基本概念。
电路交换
如上图,2 部电话机只需要用 1 对电线直接连接就能够互相通话。
而当有5 部电话机两两直接相连,需 10 对电线。依次类推,N 部电话机两两直接相连,需 对电线。这种直接连接方法所需要的电线对的数量与电话机数量的平方( )成正比。
但是使用 交换机 之后,情况就会大有改观,当电话机的数量增多时,使用交换机就可完成全网的交换任务,如上图所示,电话线的数量与电话机成线性关系。
每一部电话都直接连接到交换机上,而交换机使用交换的方法,让电话用户彼此之间可以很方便地通信。所采用的交换方式就是电路交换 (circuit switching)。
在这里,“交换”(switching)的含义就是转接 —— 把一条电话线转接到另一条电话线,使它们连通起来。从通信资源的分配角度来看,“交换”就是按照某种方式动态地分配传输线路的资源。
电路交换必定是面向连接的。
如上图所示,通话在 A 和 D 之间进行时,用户 A 和 D 始终占用端到端的通信资源,此时如果 B 要打给 D时,就只能等 A 和 D 之间释放连接(挂电话)。
电路交换分为三个阶段:
建立连接:建立一条专用的物理通路,以保证双方通话时所需的通信资源在通信时不会被其他用户占用; 通信:主叫和被叫双方就能互相通电话; 释放连接:释放刚才使用的这条专用的物理通路(释放刚才占用的所有通信资源)。
电路交换适用于数据量很大的实时性传输。为了保证传输速度,核心路由器之间也采用电路交换。
分组交换
分组交换则采用存储转发技术。
一、在发送端,先把较长的报文划分成较短的、固定长度的数据段。
二、每一个数据段前面添加上首部构成分组(packet) ,假定当前左边为前面。
三、分组交换网以“分组”作为数据传输单元。依次把各分组发送到接收端(假定接收端在左边)。
四、接收端收到分组后剥去首部还原成报文。
最后,在接收端把收到的数据恢复成为原来的报文。
分组交换的首部的作用:
每一个分组的首部都含有地址(诸如目的地址和源地址)等控制信息。 分组交换网中的结点交换机根据收到的分组首部中的地址信息,把分组转发到下一个结点交换机。每个分组在互联网中独立地选择传输路径。 用这样的存储转发方式,最后分组就能到达最终目的地。
路由器处理分组的过程有三步:
把收到的分组先放入缓存(暂时存储);(路由器 A、C、E 暂存分组) 查找转发表,找出到某个目的地址应从哪个端口转发;(路由器查找转发表) 把分组送到适当的端口转发出去。(将分组转发出去,依次为 )
其中,主机是为用户进行信息处理的,并向网络发送分组,从网络接收分组。路由器对分组进行存储转发,最后把分组交付目的主机。
报文交换
报文交换 (message switching)就是将整个报文直接存储转发。报文交换的时延较长,从几分钟到几小时不等。现在报文交换已经很少有人使用了。
三种交换方式的比较
若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快。
报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率。
由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性。
计算机网络的分类
一、按照网络的作用范围进行分类:
广域网 WAN (Wide Area Network):作用范围通常为几十到几千公里。 城域网 MAN (Metropolitan Area Network):作用距离约为 5 ~ 50 公里。 局域网 LAN (Local Area Network) :局限在较小的范围(如 1 公里左右)。 个人区域网 PAN (Personal Area Network) :范围很小,大约在 10 米左右。
若中央处理机之间的距离非常近(如仅1米的数量级甚至更小些),则一般就称之为多处理机系统,而不称它为计算机网络。
二、按照网络的使用者进行分类:
公用网 (public network) :按规定交纳费用的人都可以使用的网络。因此也可称为公众网。 专用网 (private network) :为特殊业务工作的需要而建造的网络。
公用网和专用网都可以提供多种服务。如传送的是计算机数据,则分别是公用计算机网络和专用计算机网络。
三、用来把用户接入到互联网的网络:
接入网 AN (Access Network),它又称为本地接入网或居民接入网。接入网是一类比较特殊的计算机网络,用于将用户接入互联网。接入网本身既不属于互联网的核心部分,也不属于互联网的边缘部分。接入网是从某个用户端系统到互联网中的第一个路由器(也称为边缘路由器)之间的一种网络。
从覆盖的范围看,很多接入网还是属于局域网。
从作用上看,接入网只是起到让用户能够与互联网连接的“桥梁”作用。
计算机网络的性能指标
计算机网络的性能一般是指它的几个重要的性能指标,主要包括:
一、速率
速率(rate):连接到计算机网络上的主机在数字信道上传输数据位数的速率,也称为数据率 (data rate)或比特率 (bit rate)。单位是 b/s,Kb/s,Mb/s,Gb/s。
速率一般说的一个接收端到一个发送端的传输速率,比如 A 到 B的传输速率为 1000b/s。
二、带宽
数据通信领域,数字信道所能传送的最高传输速率,单位是 b/s,Kb/s,Mb/s,Gb/s。比如网卡的最高传输速率为 100M/s,也就说带宽为 100M/s,但是其实际传输速率可能就是 10M/s。在时间轴上信号的宽度随带宽的增大而变窄。
三、吞吐量
吞吐量 (throughput) 表示在单位时间内通过某个网络(或信道、接口)的数据量。吞吐量更经常地用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。吞吐量受网络的带宽或网络的额定速率的限制。
如上图所示,计算机 A 的操作者同时在看电影、浏览网页和向FTP服务器上传文件,A 计算机的吞吐量就是单位时间内上传和下载速率的总和,即 3 + 6 + 15 = 24 M/s
四、时延
时延 (delay 或 latency) 是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。有时也称为延迟或迟延。网络中的时延由以下几个不同的部分组成:(1) 发送时延
也称为传输时延。发送数据时,数据帧从结点进入到传输媒体所需要的时间。也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。
(2) 传播时延
电磁波在信道中需要传播一定的距离而花费的时间。发送时延与传播时延有本质上的不同。信号发送速率和信号在信道上的传播速率是完全不同的概念。
(3) 处理时延
主机或路由器在收到分组时,为处理分组(例如分析首部、提取数据、差错检验或查找路由)所花费的时间。
(4) 排队时延
分组在路由器输入输出队列中排队等待处理所经历的时延。排队时延的长短往往取决于网络中当时的通信量。
数据在网络中经历的总时延就是发送时延、传播时延、处理时延和排队时延之和。必须注意,在总时延中,究竟是哪一种时延占主导地位,必须具体分析。
如上图所示,四种时延产生的位置不同,处理时延和排队时延产生在结点内部,在发送器中产生发送时延,而在链路上传播的时候产生传播时延。
发送时延(即传输时延)与传播时延的区别:
以行驶在高速公路上的3辆车的车队(类比数据帧的长度为 3 bit),发送时延(传输时延)就是收费站(发送器)处理每一辆车的时间的累计,假设收费站处理每一辆车的时间为 1s,则处理完3辆车的累计时间为 3s(发送速率为 1b/s,数据帧的长度为 3 bit, .
信道长度可以类比两个收费站之间的高速公路,信号在信道上的传输速率则可以类比汽车的行驶速度。设信道长度为 100Km,信号在信道上的传播速率为 10Km/s,则 .
五、时延带宽积
链路的时延带宽积又称为以比特为单位的链路长度。
在数据通信领域,带宽表示数字信道所能传送的最高传输速率,设图中的信道的带宽为 10 b/s,传播时延为 3 s,那么 ,即此信道的时延带宽积为 30 比特。
如上图所示,第 1 秒内,信道内的比特容量为 10 比特,等到第 2 秒的时候,信道内的比特容量为 20,第 3 秒的比特容量为 30。简单理解时延带宽积就是信道内所能容纳的比特数量,将带宽可以理解为信道切面的面积,而传播时延就是信道长度(柱体的高度),面积和高度的乘积就是体积,也就是时延带宽积。
六、往返时间 RTT
互联网上的信息不仅仅单方向传输,而是双向交互的。因此,有时很需要知道双向交互一次所需的时间。
往返时间表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时间。
在互联网中,往返时间还包括各中间结点的处理时延、排队时延以及转发数据时的发送时延。
当使用卫星通信时,往返时间 RTT 相对较长,是很重要的一个性能指标。
往返时间可以通过 ping
命令进行查看:
比如 ping 广域网 www.baidu.com ,往返时间为 10 ms:
ping 服务器位于美国的 www.nasa.com ,往返时间达到了 400 多毫秒:
七、利用率
利用率分为信道利用率和网络利用率。信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。
网络利用率则是全网络的信道利用率的加权平均值。信道利用率并非越高越好。当某信道的利用率增大时,该信道引起的时延也就迅速增加。
时延与网络利用率的关系:
根据排队论的理论,当某信道的利用率增大时,该信道引起的时延也就迅速增加。
若令 表示网络空闲时的时延,D 表示网络当前的时延,则在适当的假定条件下,可以用下面的简单公式表示 D 和 之间的关系,其中 U 是网络的利用率,数值在 0 到 1 之间。:
由图可知,当网络的利用率达到了 1 ,即 100%,时延迅速增加至无穷大。
举一个简单的例子,比如一条公路上最多可以容纳 6 辆车,当 6 辆车同时进入这条公路,公路的利用率是 100% ,但是此时车是没法跑起来的(时延迅速增加);而同一时间端只有 3 辆车在这条公路上时,信道利用率为 50%,虽然很小,但是时延也很小,车可以顺畅通行。
see you next time
推荐阅读
关于程序员大白
程序员大白是一群哈工大,东北大学,西湖大学和上海交通大学的硕士博士运营维护的号,大家乐于分享高质量文章,喜欢总结知识,欢迎关注[程序员大白],大家一起学习进步!