我们经常会听到互联网与计算机网络这两个名词,很多人以为互联网和计算机网络是一个东西,其实二者还是有区别的:
计算机网络(简称网络)由若干**结点(node)和连接这些结点的链路(link)**组成。
网络中的结点可以是计算机、集线器、交换机或路由器等。
不同的网络通过路由器互联起来,这就构成了一个范围更大的计算机网络,我们将这样的网络称为互联网(Internetwork或Internet),因此可以说互联网是**"网络的网络"**。
下图表示了计算机网络与互联网的关系:
互联网主要由两部分组成:
-
边缘部分
边缘部分由所有连接在互联网上的主机组成,这部分是用户直接使用的,用来进行通信(传送数据、视频、音频等)和资源共享。
-
核心部分
核心部分由大量网络和连接这些网络的路由器组成,这部分是为边缘部分提供服务的(提供连通性和交换)。
下图展示了互联网边缘部分和核心部分的关系:
处在互联网边缘部分的部分就是连接在互联网上的所有的主机,这些主机又称为端系统(end system)。
我们需要明确的一点是,我们通常所说的主机A和主机B通信,实质上指的是主机A上的某个进程和主机B上的另一个进程进行通信。
在网络边缘的端系统之间的通信可以分为两大类:
- 客户-服务器方式(C/S,Client/Server方式)
- 对等方式(P2P,Peer-to-Peer方式)
有时我们可能还会听到一种叫做浏览器-服务器方式(B/S,Browser/Server方式),这种方式实际上是C/S方式的一种特例。
客户指的是服务请求方,服务器指的是服务提供方,服务请求方和服务提供方都需要使用网络核心部分所提供的服务。
客户-服务器工作方式客户程序和服务器程序通常具有以下特点:
- 客户程序
- 被用户调用后运行,通信时主动向服务器发起通信(请求服务),因此客户程序必须知道服务器程序的地址
- 无需特殊硬件和很复杂的操作系统
- 服务器程序
- 专门用来提供服务的程序,可同时处理多个远程或本地客户的请求
- 系统启动后即自动调用并一直不断地运行着,被动等待并接收来自各地的客户的通信请求,服务器程序不需知道客户程序的地址
- 一般需要强大的硬件和高级的操作系统的支持
对等连接(P2P,2值to,即peer to peer)是指两台主机在通信时不区分哪一个是服务请求方哪一个是服务提供方。只要两台主机都运行了对等连接软件(P2P软件),他们就可以进行平等的、对等连接通信。示意图如下:
对等连接工作方式(P2P方式)对等连接工作方式可支持大量对等用户同时工作。
互联网的核心部分要向网络边缘中的大量主机提供连通性,使边缘部分中的任何一台主机都能够向其他主机通信。
在网络核心部分其特殊作用的是路由器(router),它是一种专用计算机(但不叫主机),是实现分组交换(packet switching)的关键构建,主要任务是转发收到的分组,这是网络核心部分最重要的功能。
为了高清分组交换的概念,我们先了解一下什么是电路交换。
在电话问世之初,人们就意识到,要让所有电话机都两两相连是不可能的,比如:
可以发现,当电话的数量多了之后,需要的电线数量就太多了,所以我们使用电话交换机的解决方案来实现多部电话的连接:
用交换机连接许多部电话而电话交换机的交换方式一直都是电路交换(circuit switching)。
从通信资源的分配角度来看,**交换(switching)**就是按照某种方式动态地分配传输线路的资源。
我们将必须经过建立连接、通话、释放连接三个步骤的交换方式成为电路交换。
电路交换的一个重要特点是,在通话的全部时间内,通话的两个用户始终占有端到端的通信资源:
电路交换的用户始终占用端到端的通信资源所以,电路交换这种方式显然不适用于计算机数据的传送。
分组交换主要采用存储转发技术,如下图所示:
以分组为基本单位在网络中传送通常我们把要发送的整块数据成为一个报文(message),在发送报文之前,先把较长的报文划分为一个个更小的等长数据段,然后在每一个数据段的前面加上一些由必要的控制信息组成的首部(header)后,就构成了一个分组,分组又称为**"包",而分组的首部也可称为包头**,分组是在互联网中传送的数据单元。
分组的首部包含了诸如目的地址和源地址等重要控制信息,所以分组才能在互联网中独立地选择传输路径,并被正确地交付到分组传输的终点。
主机和路由器功能的区别:
- 主机是用来为用户进行信息处理的
- 路由器是用来转发分组即进行分组交换的
-
电路交换
整个报文的比特流连续地从源点直达终点,好像在一个管道中传送
-
报文交换
整个报文先传送到相邻节点,全部存储下来后查找转发表,转发到下一个结点
-
分组交换
单个分组(整个报文的一部分)传送到相邻结点,存储下来之后查找转发表,转发到下一个结点。
若要连续传送大量的数据,且传送时间远大于建立时间,则电路交换的传输效率较快。
若要传送突发数据,可考虑使用报文交换和分组交换(因为二者不需要建立连接这个过程),同时分组交换比报文交换的时延小,也具有更好的灵活性。
广域网WAN(Wide Area Network),作用范围通常为几十到几千公里,因而有时也称远程网(long haul network),连接广域网各节点交换机的链路一般都是高速链路,具有较大的通信容量。
城域网MAN(Metropolitan Area NetWork),作用范围一般是一个城市。
局域网LAN(Local Area Network),地理上局限在叫嚣的范围(如1km左右)
个人局域网PAN(Personal Area Network),也称无线个人局域网WPAN(Wireless PAN),范围很小,大约在10m左右。
公用网(public Network),指电信公司出资建造的大型网络,"公用"的意思是所有愿意缴纳费用的人都可以使用这种网络,也称公众网。
专用网(private Network),一般是特殊单位建造的只对内部开放的专用网。
数据的传送速率,也成为数据率或比特率,单位是bit/s(或b/s,有时也称为bps即bit per second)。
计算机网络中的带宽指网络中某通道传送数据的能力,即单位时间内网络中某信道中所能通过的最高数据列表,单位是bit/s,即比特每秒。
单位时间内通过某个网络(或信道、接口)的实际的数据量。
值数据从网络的一端发送到另一端所需的时间,也成为延迟或者迟延。
网络中的时延是由以下几个不同的部分组成的:
主机或路由器发送数据帧所需要的事件,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的事件。 $$ 发送时延=\frac{数据帧长度(bit)}{发送速率(bit/s)} $$
电磁波在信道中传播一定距离需要花费的时间。 $$ 传播时延=\frac{信道长度(m)}{电磁波在信道上的传播速率(m/s)} $$ 发送时延发生在及其内部的发送器中,一般是发生在网络适配器中,与传输信道的长度(或信号传送的距离)没有任何关系。
传播时延发生在及其外部的传输信道媒体上,与信号的发送速率无关,信号传送的距离越远,传播时延就越大。
主机或路由器收到分组时进行处理的时间,比如分析分组的首部、从分组中提取数据部分等。
分组在经过网络传输时,要经过许多路由器,分组在进入路由器后会现在输入队列中排队等待处理,在路由器确定了转发接口后,还要在输出队列中排队等待,这就产生了排队时延。排队时延的长短取决于网络当时的通信量,当网络的通信量很大时会发生队列溢出,使分组丢失,相当于排队时延为无穷大。
$$ 总时延=发送时延+传播时延+处理时延+排队时延 $$ 各个时延的发生地点:
这是什么意思呢,看下图:
这是一个代表链路的圆柱形管道,管道的长度是连读的传播时延(注意,现在以时间 为单位来 来表示链路长度),而管道的界面剂是链路的带宽,因此时延带宽积就表示这个管道的体积,表示这样的链路可容纳多少个比特。
往返时间RTT(Round-Trip Time)是双向交互一次所需的时间。
利用率又分为信道利用率和网络利用率。
信道利用率:指出某信道有百分之几的事件是被利用(有数据通过)的。
网络利用率:整个网络信道利用率的甲醛平均值。
信道和网络的利用率过高会产生非常大的时延:
时延和利用率的关系这个原理就类似于高速路上车流量很大时,如果某一点发生堵塞,整个高速路就会产生非常大的时延。
网络分层的好处:
-
各层之间是独立的
某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口(即界面)锁提供的服务,由于每一层只实现一种相对独立的功能,因而可将一个难以处理的复杂问题分解为若干个较易处理的更小一些的问题,这样,整个问题的复杂度就降低了。
-
灵活性好
可以在保持接口不变的情况下修改某一层的内部,不会对其他层产生影响。
-
结构上可分割
各层可以采用不同的技术实现
-
易于实现和维护
-
能促进标准化工作
OSI七层概念清除、理论完整,但是复杂又不实用,TCP/IP四层中的网卡接口层没什么具体内容,所以一般采用折中的方式采用一种五层的体系结构:
计算机网络体系结构-
应用层
通过应用进程间的交互来完成特定网络应用。应用层的协议主要定义的是应用进程间通信和交互的规则。
常见的应用层协议有万维网应用协议HTTP、电子邮件SMTP等
应用层交互的数据单元称为报文(message)
-
运输层
运输层主要是向两台主机中进程间的通信提供通用的数据传输服务,通用即任意类型的进程,数据传输服务指应用进程利用该服务传送应用层报文。
运输层主要有两种协议:
- 传输控制协议TCP(Transmission Control Protocol):提供面向连接的、可靠的数据传输服务,数据传输的单位是报文段(segment)。
- 用户数据报协议UDP(User Datagram Protocol):提供面向无连接的、尽最大努力(best-effort)的数据传输服务(不保证数据传输的可靠性),数据传输单位是用户数据报。
-
网络层
网络层主要负责把运输层产生的报文段(TCP)或用户数据报(UDP)封装成分组或包进行传送。
在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,或简称为数据报。
-
数据链路层
简称链路层,主要负责将网络层交付下来的IP数据报封装成帧(framing),在两个相邻结点的链路上传送帧(frame)。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
-
物理层
物理层上传输的数据单位是比特,即如果发送方发送了1,接收方就应该收到1,如果发送方发送了0,接收方就应该收到0,所以物理层需要考虑用多大电压代表0、多大电压代表1,以及接收方如何识别发送放发出的比特。物理层还需要确定连接电缆的插头应该有多少根引脚以及各引脚应该如何连接。
注意:传递信息所利用的一些物理媒介,比如双绞线、同轴电缆等不在物理层协议范围之内,其应该在物理层之下,有人也将其称为第0层。