我们以另外一种视角来看互联网
我们可以将互联网分为核心和边缘部分。
边缘部分是连接在互联网上的所有计算机,我们所浏览到互联网上的各种资源实际上都是来自于边缘部分。这些计算机也被称为端(终端,末端,互联网的末端)。
而核心部分则是用于正确的传递来自于边缘部分的各种各样的数据,为边缘部分的主机提供连通性。
边缘部分是通过互联网的核心部分进行通信的,而边缘部分的端之间的通信有两种方式
- 客户-服务器方式
- 对等方式(P2P)
如上图所示,1为客户端,2为服务端。1为客户端,我们所接触到的大部分设备都是客户端。2有专门的程序用于提供服务。
3,4,5,6则是运行了P2P程序的计算机,运行该类程序的计算机,每一台计算机既是客户端,也是服务端,他可以向其他计算机发起请求,也可以处理来自其他计算机的服务请求,是对等的。如迅雷,百度网盘这类程序都有相关的进程,开启P2P之后,你当你需要下载资源时,你可以从其他同样开启P2P且具有你所需要的文件的计算机处获取。当其他计算机需要下载资源时,你的计算机上又恰好有时,可以从你的计算机 上获取该文件。
核心部分则是由路由器等中介设备构成。中介的作用是传送数据,协调来自各个计算机的数据,并将其转发正确的地方。这其中很重要的一个技术就是分组交换技术。
为了了解分组交换技术,先看看最早应用在电话机上的电路交换技术。
电路交换
从通信资源的分配角度看,交换就是按照某种方式动态的分配传输线路
当A和B通信时,经历了3个步骤
- 建立连接
- 通信,使用通信资源
- 释放连接
电路交换建立的是端到端的通信连接,整个通信过程,相关的通信资源都会被占用,如下图所示
建立A-F的通信时,有三条通路可以选择,A-B-E-F,A-B-C-E-F,A-B-D-E-F。三条通路。正式建立通信后,其中一条通路会在通信时被占用,而不可分配给其他需要使用线路的设备使用。如果在A-F建立通信之前,B-E,B-C-E,B-D-E三条通路均被站用,那么A-F的通信请求就会被搁置,直到某一条通信完成,通信线路被释放,A-F才能建立通信。
这是早期电话线路的交换方式。
但是如果把这种方式放在计算机的数据传输上,线路的传输效率是很低的。因为计算机的数据传输是突发性的,通信线路用来传送数据的时间占比是极低的。如果两台计算机使用QQ这个进程进行通信,使用电路交换的方式来传输数据。试想这么一个情况,A,B互发消息,A发消息过去给B,随后B接收到消息,打字,回复消息。这个阅读消息打字回复消息的时间是远比A发送的消息传送到B处花费的时间要大的。
因此使用电路交换的方式是不经济的一种方法。因此催生出来了新的分组交换的方式。
不过在介绍分组交换之前,还是先来介绍一下他的前身,报文交换
报文交换
报文交换是电报中采用的通信方式。报文指的是数据块,该数据块除了原本要传输的数据以外,还会封装一层报文消息,指明消息的来源去向等必要信息,报文交换以报文为单位进行传输。
同样使用上图的四个节点A-B-E-F,A直接发送报文数据到B,B将报文存储下来,根据报文的报文信息,寻找下一个传送目标,找到之后,B将报文传输给E,同样的步骤,E再将报文传输给F。至此报文传输完毕。
这种传输方式不会一直占用通信线路,当B将报文传送给E之后,B到E的这条通信线路不会被占用。可以继续处理来自其他方向的报文,增加了线路的利用率
分组交换
分组交换采用存储转发技术。
但是在报文交换的基础上,将报文切分为更小的固定长度的数据段如1024bit,并且在每一段上添加必要的信息。每次将单个分组传输到相邻节点,存储下来之后根据转发表传送到下一节点。
假设报文P切分为四个段。在A-B-E-F的数据传输过程如下:
- A-B传输段,B存储段
- A-B传输段,B-E传输段,B存储段,E存储段
- A-B传输段,B-E传输段,E-F传输段,B存储段,E存储段,F接收到段
- A-B传输段,B-E传输段,E-F传输段,B存储段,E存储段,F接收到段
- B-E传输段,E-F传输段,E存储段,F接收到段
- E-F传输段,F接收到段,数据传输完成
以图形的方式展示以上三种传输方式
电路交换占用资源,而报文交换有较大 的延迟,分组交换则很好的解决了这两个问题