什么是因特网

​ 什么是因特网?回答这个问题有两种方式:其一,我们能够描述因特网的具体构成,即构成因特网的基本硬件和软件组件;其二,我们能够根据为分布式应用提供服务的联网基础设施来描述因特网。

具体构成描述

​ 因特网是一个世界范围的计算机网络,即它是一个互联网了遍及全世界数十亿计算设备的网络。在不久前,这些计算设备多数是传统的桌面PC、Linux工作站以及所谓的服务器。然而,越来越多的非传统的因特网“物品”正在与因特网相连。在许多非传统设备连接到因特网的情况下,计算机网络(computer network) 这个术语开始听起来有些过时了。用因特网术语来说,所有这些设备都称为主机(host) 或端系统(end system)。

​ 端系统通过通信链路(communication link) 和分组交换机(packet switch) 连接到一起。在1.2节中, 我们将介绍许多类型的通信链路,它们由不同类型的物理媒介组成。这些物理媒介包括同轴电缆、铜线、光纤和无线电频谱。不同的链路能够以不同的速率传输数据,链路的传输速率(transmission rate)以比特/秒(bit/s,或bps)度量。当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字段。由此形成的信息包用计算机网络的术语来说称为分组(packet)。这些分组通过网络发送到目的端系统,在那里被装配成初始数据。

​ 分组交换机从它的一条入通信链路接收到达的分组,并从它的一条出通信链路转发该分组。市面上流行着各种类型、各具特色的分组交换机,但在当今的因特网中,两种最著名的类型是路由器(router)和链路层交换机(link-layer switch)。这两种类型的交换机朝着最终的目的地转发分组。链路层交换机通常用于接入网中,而路由器通常用于网络核心中。从发送端系统到接收端系统,一个分组所经历的一系列通信链路和分组交换机称为通过该网络的路径(route或pack)。

​ 端系统通过因特网服务提供商(Internet Service Provider, ISP)接入因特网,包括如本地电缆或电话公司那样的住宅区ISP、公司ISP、大学ISP,在机场、旅馆、咖啡店和其他公共场所提供的WIFI接入的ISP,以及智能手机和其他设备提供移动接入的蜂窝数据ISP。每个ISP自身就是一个由多台分组交换机和多段通信链路组成的网络。各ISP为端系统提供了各种不同类型的网络接入,包括线缆调制解调器或DSL那样的住宅宽带接入、高速局域网接入和移动无线网。ISP也为内容提供者提供因特网接入服务,将Web站点和视频服务器直接连入因特网。因特网就是将端系统彼此互联,因此为端系统提供接入的ISP也必须互联。较低层的ISP通过国家的、国际的较高层ISP(如Level 3 Communications、AT&T、Sprint和NTT)互联起来。较高层ISP是由通过高速光纤链路互联的高速路由器组成的。无论是较高层还是较低层ISP网络,它们每个都是独立管理的,运行着IP协议,遵从一定的命令和地址规则。

​ 端系统、分组交换机和其他因特网部件都要运行一些列协议(protocol),这些协议控制因特网中信息的接收和发送。TCP(Transmission Control Protocol, 传输控制协议)和IP(Internet Protocol, 网际协议)是因特网中两个最为重要的协议。IP协议定义了在路由器和端系统之间发送和接收的分组格式。因特网的主要协议统称为TCP/IP。

​ 鉴于因特网协议的重要性,每个人就各个协议及其作用取得一致认识是很重要的,这样人们就能够创造协同工作的系统和产品。这正是标准发挥作用的地方。因特网标准(Internet standard)由因特网工程任务组(Internet Engineering Task Force, IETF)[IETF2016]研发。IETF的标准文档称为请求评论(Request For Comment, RFC)。RFC最初只是普通的请求评论,目的是解决因特网先驱者面临的网络和协议问题[Allman 2011]。RFC文档往往是技术性很强并相当详细的。它们定义了TCP、IP、HTTP(Web)和SMTP(用于电子邮件)等协议。

服务描述

​ 前面的讨论已经辨识了构成因特网的许多部件。但是我们也能从一个完全不同的角度,即从为应用程序提供服务的基础设施的角度来描述因特网。除了诸如电子邮件和Web冲浪等传统应用外,因特网应用还包括移动智能手机和平板电脑应用程序,其中包括即时讯息、与实时道路流量信息的映射、来自的音乐流、电脑和电视流、在线社交网络、视频会议、多人游戏以及基于位置的推荐系统。因为这些应用程序涉及多个相互交换数据的端系统,故它们被称为分布式应用程序(distributed application)。最重要的是,因特网应用程序运行在端系统之上,即它们并不运行在网络核心中的分组交换机中。尽管分组交换机能够加速端系统之间的数据交换,但它们并不在意作为数据的源或宿的应用程序。

​ 与因特网相连的端系统提供了一个套接字接口(socket interface),该接口规定了运行在一个端系统上的程序请求因特网基础设施向运行在另一个端系统上的特定目的地程序交付数据的方式。因特网套接字接口是一套发送程序必须遵循的规则集合,因此因特网能够将数据交付给目的地。此时,我们做一个简单的类比,在本书中我们将经常使用这个类比。假定Alice使用邮政服务向Bob发送一封信。当然,Alice不能只是写了这封信(相关数据)然后把该信封丢进一个邮局的邮政服务信箱中。因此,该邮政服务有自己的“邮政服务接口”或一套规则,这是Alice必须遵循的,这样邮政服务才能将她的信件交付给Bob。同理,因特网也有一个发送数据的程序必须遵守的套接字接口,是因特网向接收数据的程序交付数据。

​ 当然,邮政服务向顾客提供了多种服务,如特快专递、挂号、普通服务等。同样,因特网向应用程序提供了多种服务。当你研发一种因特网应用程序时,也必须为你的应用程序选择其中的一种因特网服务。

​ 这里给出了因特网的两种描述方法:一种是根据它的硬件和软件组件来描述,另一种是根据基础设施向分布式应用程序提供的服务来描述。

什么是协议

​ 网络协议类似于人类协议,除了交换报文和采取动作的实体是某些设备(可以是计算机、智能手机、平板电脑、路由器或其他具有网络能力的设备)的硬件或软件组件。在因特网中,涉及两个或多个远程通信实体的所有活动都受协议的制约。例如,在两台物理上连接的计算机中,硬件实现的协议控制了在两块网络接口卡间的“线上”的比特流;在端系统中,拥塞控制协议控制了在发送方和接收方之间传输的分组发送的速率;路由器中的协议决定了分组从源到目的地的路径。

​ 以一个熟悉的计算机网络协议为例,考虑当你向一个Web服务器发出的请求时所发生的情况。首先,你的计算机将向该Web服务器发送一条连接请求的报文,并等待回答。该Web服务器将最终能接收到连接请求报文,并返回一条连接响应报文。得知请求该Web文档正常以后,计算机则在一条GET报文中发送要从这台Web服务器上取回的网页名字。最后,Web服务器向计算机返回该Web网页(文件)。

​ 协议(protocol)定义了在两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送和/或接收一条报文或其他事件所采取的动作。

​ 因特网广泛地使用了协议。不同的协议用于完成不同的通信任务。

Donate comment here