第1章 计算机网络和因特网

因特网

因特网是世界范围的计算机网络,参与因特网互联的计算设备称为主机端系统,端系统通过通信链路分组交换机连接到一起。对不同的通信链路有着不同的度量值,其中一个比较重要的是链路的传输速率
当一台端系统像另一端系统发送数据时,发送端会把数据分段并分别加上首部字节,再由接收端整合,这些分段形成的数据包被称为分组 pack
在通信链路中又很多种各具特色的分组交换机,今天最常见的是路由器链路层交换机,前者通常用于网络核心,而后者通常用于接入网。
端系统通过因特网服务提供商 ISP接入因特网,每个 ISP 自身就是一个由多台分组交换机和多段通信链路组成的网络,较低层的 ISP 由更高层的 ISP 互连起来。
端系统、分组交换机和其它因特网部件都要运行一系列协议,用于控制因特网种信息的接收和发送。因特网标准用于定义和规范这些协议,其标准文档被称为请求评论 RFC。协议定义了通信实体之间交换报文的格式和顺序,以及应该采取的动作。
若从“为应用程序提供服务的基础设施”这一角度描述因特网,称涉及多个相互交换数据的端系统的程序为分布式应用程序,而与因特网相连的端系统为应用程序提供了套接字接口,规定了不同端系统上数据交付的法则。

网络边缘

端系统又称主机,有时也进一步分为客户 client服务器 server 两类。

接入网

接入网指的是将端系统物理连接到其边缘服务器的网络,边缘路由器是端系统到其他任何远程端系统路径上的第一台路由器。在家庭接入中,最常用的是数字用户线 DSL 和电缆。
当使用 DSL 时,用户的本地电话公司就是其 ISP。用户的 DSL 调制解调器使用现有电话线(即双绞铜线)与电话公司交换数据。由于电话线同时承载了数据和传统电话信号,故需采用不同频率进行编码,从高到低分别有高速下行信道(50kHz至1MHz)、中速上行信道(4kHZ至50kHz)和普通双向电话信道(0至4kHz)。DSL 标准定义了多个传输速率,通常上下行是不对称的,但实际速率可能由于运营商的限制、距离、双绞线的规格和电气干扰程度而有所不同。
电缆因特网接入利用的是有线电视公司已有的基础设施,这一系统应用了光纤和同轴线缆,所以又称混合光纤同轴 HFC 系统。其需要一个电缆调制解调器来转换模拟信号和数字信号,上下行通常也是不对称的,并且由于商业因素和媒介损耗可能不一定能达到最大速率。
一种更高速的新兴技术是光纤到户,即直接提供本地中心局到家庭的光纤路径,速率更快。另外还有卫星链路和传统电话线拨号接入两种方式,分别用于一些特殊场景。
现代网络更多地采用局域网 LAN将端系统连接到边缘路由器,目前最流行的局域网技术是以太网。而对于无线 LAN 的情况则通常采用基于 IEEE 802.11技术的无线 LAN 接入,也称 WiFi。
广域无线接入也有 3G 和 LTE 等技术,这一技术允许用户位于基站数万米距离内几个通信。

物理媒介

信息从源到目的地传输时,需要跨越若干物理媒介,这些物理媒介可以简单地分为导引型媒介非导引型媒介,前者电波沿着固体媒介前行(如光缆、双绞铜线、同轴电缆),后者则是电波在空气或外层空间中传播(如无线局域网,数字卫星频道)。物理链路的实际成本与其它网络成本相比通常是较小的。
最便宜且最常用的是双绞铜线,由两根绝缘的铜线组成,每根大约 1mm 粗,以规则的螺旋排列。这两根线被绞合起来以减少邻近类似双绞线的电气干扰,多根双绞线捆扎在一起形成电缆,并在外面再覆盖一层保护性防护层。无屏蔽双绞线常用于局域网和住宅因特网接入。
同轴电缆也是由两个铜导体组成,但是同心的而不是并行的,能够以更高的速率传输,在电视系统中相当普遍。在电缆电视和电缆因特网接入中,发射设备将数字信号调制到某个特定频段,产生模拟信号发送到一个或多个接收方。许多端系统能直接与电缆相连,每个端系统都能接收由其它端系统发送的内容。
光纤能够引导光脉冲,能支持极高的比特速率,不受电磁干扰,衰减低且难窃听。这些特性使得光纤称为长途导引型传输媒介,特别是跨海链路。但其设备成本也要更高。
无线电信道承载电磁频谱中的信号,不需要安装物理线路,能提供远距离信号传输能力。其具体特性依赖于传播环境和信号传输的距离,包括短距离(如蓝牙)、局域距离(如无线 LAN 技术)、广域距离(如蜂窝接入技术)和卫星无线电信道。

网络核心

网络核心:即由互联网端系统的分组交换机和链路构成的网状网络。
通过网络和交换机移动数据有两种基本方式:分组交换和电路交换。前者在端系统通信期间不会预留沿路径需要的各类资源(包括缓存,链路传输速率等),而后者会保留。

分组交换

端系统彼此交换报文 message以完成应用功能,报文一般被设计成所需求的控制功能或数据。
当源向目的发送一个报文时,源会将长报文划分为较小的数据块,称为分组 packet,而分组通过通信链路和分组交换机进行传送。
存储转发传输:多数分组交换机在链路的输入端采取存储转发传输的机制,即在交换机能够向输出链路传输该分组的第一个比特前,必须已经接收到了完整的分组。在这一部分中,会有一个存储转发时延。
排队时延和分组丢失:对于输出,分组交换机也有输出缓存,因为到达输出口的分组可能需要等待链路上其它分组传输完毕。这会带来排队时延。同时,缓存的大小是有限的,当缓存已满且又到来了新的分组时,根据决策新的分组或已经在排队的分组之一将会被丢弃,称为丢包
转发表和路由选择协议:在因特网中,每个端系统具有一个 IP 地址,且每个分组中都会在首部包含目的地的 IP 地址。而在路由器中有一个转发表将目的地址与输出链路联系起来。当分组到达交换机时,路由器会检查其首部并对照自己的转发表,选择合适的输出链路。而转发表是通过一些路由选择协议来自动设置和跟踪的。

电路交换

传统的电话网络就是电路交换网络的典型例子。通信的两方会建立名副其实的链接,即通信路径上的每台交换机都会为该链接维护连接状态。
在电话的术语中,这样的链接称为电路,而在网络中,有对应的专用端到端连接
链路中的电路通过频分复用 FDM时分复用 TDM来实现。对于 FDM,链路的频谱由跨越链路创建的所有连接共享,且链路为每条连接维护专用的频段,其宽度称为带宽。对于 TDM,时间被划分为固定长度的帧,每个帧又被划分为固定数量的时隙,每个连接会被指定一个专有时隙用于传输该连接的数据。

对比

在行为上,电路交换不考虑需求,预先分配了传输链路的使用,这可能使得已分配而并不需要的链路资源未被利用;而分组交换按需分配链路使用,其传输能力为所有需要在链路上传输数据的用户以分组的方式共享。
分组交换比电路交换能更好地进行带宽共享,且更简单、更有效,实现成本更低。但同时,分组交换不适合实时服务(如电话或视频会议)。

网络的网络

今天的因特网已经发展为一个非常复杂的结构,为便于理解这一复杂结构,下面从一个简单的模型开始,逐步描述现代因特网模型。
网络结构1:单一的全球传输 ISP 互联所有的接入 ISP。
网络结构2:多个全球传输 ISP 和数十万接入 ISP。这些全球传输 ISP 之间必须是互联的。这是一种两层的等级结构,全球传输提供商位于顶层,而接入 ISP 位于底层。
网络结构3:分层的结构,每层都有互相竞争的区域 ISP。这一划分可能与地理区域划分有关,上下层 ISP 之间互联,同时还有顶层的全球 ISP 互联。
网络结构4:我们引入存在点 PoP多宿对等因特网交换点 IXP的概念。PoP 是提供商网络中的一台或多台地理位置相同的路由器群组,其中客户 ISP 能和 供应商 ISP 连接。多宿则指的是一个接入 ISP 可以与两个或更多的供应商 ISP 连接。对等指的是相同等级的 ISP 直接相连,使得它们之间的流量不需要经过上层 ISP 就可以直接互相转发。IXP 则是指多个 ISP 对等的汇合点。
网络结构5:在网络结构 4 的顶部添加内容提供网络,这一类的例子包括谷歌的内容提供网络,其数据中心经过专有的 TCP/IP 网络互联,该网络跨越全球且独立于公共因特网,同时谷歌专用网络与较低层的 ISP 对等来绕过因特网的较高层提供服务,不过由于某些 ISP 仅能通过第一层 ISP 连接,专有网络也与第一层 ISP 连接。

分组交换网中的时延、丢包和吞吐量

下面的讨论均建立在分组交换网络上。

时延

主要包括:节点处理时延,排队时延,传输时延和传播时延。这些数量加起来就是节点总时延。
考虑这样一个简单模型,分组从上游节点通过路由器 A 向路由器 B 发送。路由器 A 具有通向路由器 B 的输出链路,且这个链路拥有一个队列缓存。

  • 处理时延:包括路由器检查分组首部和进行分组输出到何处的决策的时间,也包括其他一些如检查比特级别差错需要的时间。通常是微秒或更低的数量级。
  • 排队时延:分组在链路上等待传输的时间,与流量和正在排队的分组数量有关。通常是毫秒到微秒数量级。
  • 传输时延:将分组的所有比特推向链路所需要的时间,取决于路由器的发送速率。通常是毫秒到微秒数量级。
  • 传播时延:分组在链路中由 A 出发到达 B 的速率,取决于链路的物理媒介性质和两个路由器之间的物理距离。

对于排队时延,若设 表示分组到达队列的平均速率, 是传输速率, 是包大小,那么 称为流量强度。当这个值大于 1 时,比特到达队列的平均速度大于传输出去的速率,这意味着排队时延将趋向无穷大;而当流量强度小于等于 1 时,具体的排队时延与到达流量的性质有关:若周期性到达,则几乎没有排队时延;而若是突发地到达,则可能会有很大的平均排队时延。

丢包

与排队有关。任何链路的排队缓存都是有限的,当队列满的时候,自然就会出现丢包。分组丢失的比例随着流量强度的增加而增加。

吞吐量

假设这样一个场景:主机 A 跨越计算机网络向主机 B 发送一个大文件。瞬时吞吐量指主机 B 在某一时间瞬间收到文件的速率,对应也有平均吞吐量
首先可以认识到的是,若网络上仅有这一个数据链路,那么吞吐量就仅与整条网络上链路速率最低的部分有关,即是瓶颈链路的传输速率。而当有其它流量干扰时,网络吞吐率还与干扰流量的性质、网络传输的决策有关。

协议层次及其服务模型

因特网极其复杂,故在网络的组织和维护过程中,人们进行了许多抽象来方便管理,其中两个重要的概念是分层协议封装

分层协议

网络设计者用分层的形式组织网络硬件和软件,在这种架构中,每一层向其上面一层提供服务,每一层可以是软件、硬件或两者结合来实现的。
协议分层具有概念化和结构化的优点。模块化使得更新系统组件更为容易。但同时,分层模型也可能带来冗余层的缺点。
我们将各层的所有协议统一起来称为协议栈,现代因特网的协议栈分为 5 层,自上而下分别是:应用层,运输层,网络层,链路层,物理层。

  • 应用层:应用层维护网络应用程序以及与它们有关的应用层协议。常见的应用层协议有 HTTP, SMTP, FTP 和 DNS。应用层分组称为报文 message
  • 运输层:在应用程序端点之间传送报文,因特网中有两种运输层协议TCP 和 UDP,前者提供了面向连接的服务,包括确保传输、流量控制和拥塞控制协议,后者提供无连接服务。运输层分组称为报文段 segment
  • 网络层:将数据报 datagram从一台主机移动到另一台主机,这一层中包括网际协议 IP,还包括一些路由选择协议。
  • 链路层:将分组从一个节点移动到路径上的下一个节点,链路层提供的服务取决于应用于该链路的特定链路层协议。链路层分组称为帧 frame
  • 物理层:将帧中的每一个比特从一个节点移动到下一个节点,与链路的实际传输媒介有关。

OSI 模型:开放系统互连模型,由国际标准化组织提出,包含 7 层:应用层,表示层,会话层,运输层,网络层,数据链路层和物理层。 表示层:使通信的应用程序能够解释交换数据的含义,包括数据压缩解压、数据描述(以解决在不同计算机中可能出现的表示/存储方式的不同)等。 会话层:提供数据交换的定界和同步功能,包括建立检查点和恢复方案的方法。 现代因特网并没有上述两个层,这些功能交由应用程序的开发者处理。

封装

数据在协议栈中,自上而下地经过每一层协议,每一层协议将上一层的全部数据封装进自己的有效载荷字段内,并在前面附上自己的首部信息,然后传给下一层。
由于不同协议对有效载荷字段的长度限制不同,封装可能还要能将大报文划分成多个小数据段来传送,并在合适的地方合并这些报文。

面对攻击的网络

网络安全主要讨论两个问题:对计算机网络的攻击是如何实施的,我们应该如何防御这种攻击或从设计层面免除这种攻击。
今天的多数恶意软件通常是自我复制的。根据是否需要某种形式的用户交互分为病毒和蠕虫两种。

拒绝服务攻击 DoS使网络不能由合法用户使用,后来发展为更难以防范和检测的分布式 DoS (DDoS)。通常有以下几类:

  • 弱点攻击:向目标主机上某些应用发送特殊的报文,使其停止运行甚至崩溃。
  • 带宽洪泛:向目标主机发送大量分组,使得目标的接入链路拥堵,正常用户无法访问。
  • 连接洪泛:在目标主机创建大量半开或全开 TCP 链接,占用大量资源使得合法链接申请被拒绝。

分组嗅探器:接收网络中的所有副本,导致隐私泄露。
IP 哄骗:将具有虚假源地址的分组注入因特网。