计算机网络与因特网
《计算机网络-自定向下方法》第1章主要内容:如何描述因特网、网络核心的主要工作、什么是ISP、如今因特网的网络结构、协议层次及其所提供的服务。
我们可以从两个方面来描述因特网:
- 一是从因特网的具体构成来描述,这包括组成因特网的硬件设备以及协调这些硬件设备工作的网络协议。
- 二是从服务角度来描述因特网,即为分布式应用提供服务的联网基础设施来描述因特网。分布式应用是指运行在各个端系统应用层上的应用程序,应用层之下的部分都被称为基础设施。由此产生了一个核心问题:应用程序应该如何使用基础设施提供的联网服务(答案是套接字接口)。
1 因特网的构成
按照所处的位置可以将因特网分为3个子系统:
- 网络边缘,主要由端系统构成,运行着各种应用程序。端系统就是主机,如PC、手机、服务器等。它由机器的硬件部分和运行在机器上的软件部分(包括操作系统和应用程序)组成。可以将主机分为两大类:客户和服务器。由此产生了应用程序的两个主流架构:客户/服务器模式(C/S)和对等体模式(P2P)。
- 网络核心,由路由器构成的网状网络,其核心功能就是对数据进行路由和转发,即在网络中将数据传递给目标主机。
- 接入网,是指将端系统连接到边缘路由器的网络,需要考虑的核心问题是如何将端系统和边缘路由器连接,如端系统是通过无线还有有线的方式接入边缘路由器。它更多需要考虑的是同轴电缆,双绞线、电磁波、光纤等物理媒介的选取,和信号的调制解调。
网络核心
网络核心并不维护数据的状态。网络核心所需考虑的问题是:
- 如何找到目标主机,即如何知道经过哪些线路可以到达目标主机;
- 如何将数据传递给目标主机,毕竟源主机和目标主机之间可能存在许多个路由器节点。
为解决第1个问题,人们设计出了一系列的路由算法和路由协议,这些将在后面章节介绍。为解决第2个问题人们设计出两种方案:电路交换和分组交换。
电路交换需要在两个主机之间维护一条专用的线路(这条专用的线路可以通过频分复用、时分复用等方式实现)。电路交换保证了通信的性能,但却造成了网络资源的浪费。
图1.1 电路交换
分组交换则是将数据分成一个个的分组,然后在节点之键不断的存储-转发。当一个节点在接收到数据时,并不会将它立马转发给下一个节点,而是先将这个数据保存,等接收到一个分组的完整数据之后在将其转发。分组交换不会占用线路,也不会造成资源的大量浪费,但却带来了分组丢失、传输延迟、分组重复等问题。但综合各自优缺点后,分组交换更加适合计算机之间的网络通信
2 因特网的网络结构 - 网络的网络
因特网经不断的演化,在综合利益的驱使下,ISP之间组成了一个松散的分层结构:
图1.2 ISP的互联
- ISP:因特网服务提供商。ISP是一个由多台分组交换机和多段通信链路构成的网络。我们可以将一些关系密切的网划分到一个ISP中,如校园ISP、公司ISP、住宅区ISP,它通过提供了网线、WIFI等接口,让主机可以上网冲浪。公司ISP、住宅区ISP等又都和提供商ISP连接(当然这需要交钱),这样住宅区的用户就可以获取公司提供的网络服务了。个人的理解是像住宅区ISP这些是由中国电信等运营商的网点维护的,也就是那些营业厅、充话费的地方。而校园ISP是他们自己搭建的,但是他们想要获取校园之外的网络服务就需要接入到更高层的ISP中。而这些更高层的ISP又是由中国电信等运营商及其下属机构运营维护的。同级ISP直接会相互连接,一方面是为了追求更快的通讯速度,另一方面是为了降低费用,同级ISP之间通讯不需要支付费用,但如果连接上一级ISP就需要支付费用。
- 接入ISP:主机是通过接入ISP连接到互联网的。图中一个接入ISP会和多个区域ISP相连接,这样即使一个区域ISP故障了,它们还是可以收发数据。。
- 区域ISP:有较大区域的ISP还有较小区域的ISP。例如,在中国,每个城市有接入ISP,它们与省级ISP连接,省级ISP又与国家级ISP连接,国家级ISP最终与第一层ISP连接。
- 第一层ISP:全球有十几个第一层ISP,很多时候两主机之间通信都不会经过第一层ISP。第一层ISP不用向任何人支付费用。
- 内容提供商:例如谷歌。图中的内容提供商没画好,像谷歌这种在全球建立了几十个数据中心的内容提供商,它们会把这些数据中心连接起来,建立一个高速的专用网络,所以图中的内容提供商部分应该画成一个专用网。
- IXP:第三方公司建立的IXP(因特网交换点)用于将内容提供商和ISP直接相连,让多个ISP在这里对等,一方面可以给用户提供更高的获取内容的速度,另一方面很多数据可以绕开高层的ISP了,减少支付费用。
3 协议层次
复杂的网络功能是通过层次化的方式实现的。上层通过接口使用下层提供的服务,通过分层将复杂模型分解。因特网协议栈从上到下分别为:应用层、传输层、网络层、数据链路层、物理层。
- 物理层:负责将帧中的数据一个比特一个比特的发送到下一个节点。
- 数据链路层:负责相邻节点之间的数据传输,传输的分组被称为帧。主要协议有以太网、WiFi等。
- 网络层:在链路层的基础上,提供主机到主机之间的数据传输(端到端的传输),传输的分组被称为数据报。
- 传输层:细化网络层的服务,负责进程到进程之间的数据传输,此外可以将网络层提供的不可靠的数据传输服务变为可靠的。传输的分组被称为报文段。有TCP、UDP协议。
- 应用层:包括应用程序及其使用的协议,如web浏览器和HTTP协议等,传输的分组被称为报文。主要协议有HTTP、DNS、SMTP,当然我们也可以制定自己的应用层协议。应用程序通过套接字接口使用基础设施提供的网络服务。
并不是所有网络节点都实现了这套完整层次。通常主机会实现所以层次;路由器只实现物理层、数据链路层、网络层;链路层交换机只实现物理层、数据链路层。
图2.1 协议栈的分装与解封装
参考
图1.1、图2.1截取自郑烇老师的课件,图1.2截取自《计算机网络-自顶向下方法》第7版。
[1] 《计算机网络-自顶向下方法》第7版
[2] 中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程