1.1 什么是因特网
- 1.描述因特网的具体构成,即构成因特网的基本硬件和软件组成
- 2.根据为分布式应用提供服务的联网基础设施描述因特网
1.1.1 具体构成描述
主机(host)或端系统(end system)
:便携机、智能手机、平板、电视、手表、眼镜、汽车等与互联网相连的设备
端系统
通过通信链路(communication link)
和分组交换机(packet switch)
连接到一起通信链路(communication link)
:可以由不同的物理媒体组成,不同的链路可以以不同的速率传输数据,链路的传输速率(transmission rate)
以比特/秒(bit/s,或bps)度量分组
:当一台端系统向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节,形成信息包称为分组分组交换机(packet switch)
:从它的一条入通信链路接收到达的分组,并从它的一条出通信链路转发该分组。两个最著名的类型:路由器(router)
和链路层交换机(link-layer switch)
。路径(route或path)
: 从发送端系统到接收端系统,一个分组所经历的一系列通信链路和分组交换机过因特网服务提供商(Internet Service Provider, ISP)
:每个ISP自身就是一个由多台分组交换机和多段通信链路组成的网络。各ISP为端系 统提供了各种不同类型的网络接入,包括如线缆调制解调器或DSL那样的住宅宽带接入、 高速局域网接入和移动无线接入。协议(protocol)
:端系统、分组交换机和其他因特网部件都要运行一系列协议,这些协议控 制因特网中信息的接收和发送。TCP(Transmission Control Protoclo,传输控制协议)
和IP(Internet Protocol,网际协议)
,是因特网中两个最为重要的协议。IP协议定义了在路由器和端系统之间发送和接收的分组格式。因特网的主要协议统称为TCP/IP
。因特网标准(Internet standard)
由因特网工程任务组(Internet Engineering Task Force, IETF)
研发,其标准文档称为请求评论(Request For Comment, RFC)
。
1.1.2 服务描述
重要的是,因特网应用程序运行在端系统上,即它们并不运行在网络核心中的分组交换机中。尽管分组交换机能够加速端系统之间的数据交换,但它们并不在意作为数据的源或宿的应用程序。
- 与因特网相连的端系统提供了一个套接字接口( socket interface),该接口规定了运行在一个端系统上的程序请求因特网基础设施向运行在另一个端系统上的特定目的地程序交付数据的方式。因特网套接字接口是一套发送程序必须遵循的规则集合,因此因特网能够将数据交付给目的地。
1.1.3 什么是协议
- 在因特网中,涉及两个或多个远程通信实体的所有活动都受协议的制约。
协议(protocol)
:定义了在两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送和/或接收一条报文或其他事件所采取的动作。
1.2 网络边缘
端系统或主机(host)
:通常把与因特网相连的计算机和其他设备称为端系统,如图1-3所示,因为它们位于因特网的边缘,故而被称为端系统。端系统包括:- 桌面计算机:桌面PC、Mac和Linux设备
- 服务器:Web和电子邮件服务器
- 移动计算机:便携机、智能手机和平板电脑
主机=端系统
:客户端(client)
:桌面PC、移动PC和智能手机等服务器(server)
:是更为强大的机器,用于存储和发布Web页面、流视频、中继电子邮件等数据中心(data center)
:今天,大部分提供搜索结果、电子邮件、Web页面和视频的服务器都属于大型数据中心
1.2.1 接入网
接入网
:指将端系统物理连接到其边缘路由器(edge router)
的网络。边缘路由器是端系统到任何其他远程端系统的路径上的第一台路由器。
- 几种类型的接入链路和使用接入网的几种环境
- 1.家庭接入:数字用户线(DSL Digital Subscriber Line)、电缆、FTTH、拨号和卫星
-
流程:如图1-5所示,每个用户的DSL调制解调器使用现有的电话线与位于电话公司的本地中心局(CO)中的数字用户线接入复用器(DSLAM)交换数据。家庭的DSL调制解调器得到数字数据后将其转换为高频音,以通过电话线传输给本地中心局;来自许多家庭的模拟信号在DSLAM处被转换回数字形式。
-
家庭电话线同时承载了数据和传统的电话信号,它们用不同的频率进行编码
-
分配器把到达家庭的数据信号和电话信号分隔开,并将数据信号转发给DSL调制解调器
-
电缆因特网接入(cable Internet access)
:利用了有线电视公司现有的有线电视基础设施,住宅从提供有线电视的公司获得了电缆因特网接入 -
如图1-6所示,光缆将电缆头端连接到地区枢纽,从这里使用传统的同轴电缆到达各家各户和公寓
-
光纤到户(Fiber To The Home, FTTH)
:从本地中心局直接到家庭提供了一条光纤路径 -
从中心局岀来的每根光纤实际上由许多家庭共享,直到相对接近这些家庭的位置,该光纤才分成每户一根光纤。这种分配有两种有竞争性的光纤分布体系结构:
主动光纤网络(Active Optical Network, AON)
和被动光纤网络(Passive Optical Network, PON)
。 -
图1-7显示了使用PON分布体系结构的FTTH。每个家庭具有一个
光纤网络端接器(Optical Network Terminator, ONT)
,它由专门的光纤连接到邻近的分配器(splitter) 。该分配器把一些家庭(通常少于100个)集结到一根共享的光纤,该光纤再连接到本地电话和公司的中心局中的光纤线路端接器(Optical Line Terminator, OLT) 。该OLT提供了光信号和电信号之间的转换,经过本地电话公司路由器与因特网相连。
- 2.企业(和家庭)接入:以太网和WiFi
- 如图1-8中所示,以太网用户使用双绞铜线与一台以太网交换机相连。以太网交换机或这样相连的交换机网络,则再与更大的因特网相连。
- 图1-9显示了典型的家庭网络。这个家庭网络组成如下:一台漫游的便携机和一台有线PC;—个与无线PC和家中其他无线设备通信的基站(无线接入点);一个提供与因特网宽带接入的电缆调制解调器;一台互联了基站及带有电缆调制解调器的固定PC的路由器。
- 3.广域无线接入:
3G
和LTE(Long-Term Evolution)
- 与WiFi不同的是,一个用户仅需要位于基站的数万米(而不是几十米)范围内,就可以通过蜂窝网提供商运营的基站来发送和接收分组,用来在移动中发信息、在社交网络中分享照片、观看视频和放音乐。
- 1.家庭接入:数字用户线(DSL Digital Subscriber Line)、电缆、FTTH、拨号和卫星
1.2.2 物理媒体
- 物理媒体分成两种类型:
导引型媒体(guided media)
和非导引型媒体(unguided media)
- 导引型媒体:光缆、双绞铜线或同轴电缆
- 非导引型媒体:无线局域网或数字卫星频道
- 1.双绞铜线
- 2.同轴电缆
- 3.光纤
- 4.陆地无线电信道
- 5.卫星无线电信道
1.3 网络核心
- 通过网络链路和交换机移动数据有两种all 基本方法:
电路交换(circuit switching)
和分组交换(packet switching)
。
1.3.1 分组交换
- 1.存储转发传输
存储转发传输(store-and-forward transmission)
:指在交换机能够开始向输岀链路传输该分组的第一个比特之前,必须接收到整个分组。- 在图1・11所示的特定时刻,源已经传输了分组1的一部分,分组1的前沿已经到达了路由器。因为该路由器应用了存储转发机制,所以此时它还不能传输已经接收的比特,而是必须先缓存(即“存储”)该分组的比特。仅当路由器已经接收完了该分组的所有比特后,它才能开始向出链路传输(即“转发”)该分组。
- 现在我们来计算从源开始发送第一个分组到目的地接收到所有三个分组所需的时间。与前面一样,在时刻L/R,路由器开始转发第一个分组。而在时刻L/R源也开始发送第二个分组,因为它已经完成了第一个分组的完整发送。因此,在时刻2L/R,目的地已经收到第一个分组并且路由器已经收到第二个分组。类似地,在时刻3L/R目的地已经收到前两个分组并且路由器已经收到第三个分组。最后,在时刻4L/R,目的地已经收到所有3个分组!
- 我们现在来考虑下列一般情况:通过由N条速率均为R的链路组成的路径(所以,在源和目的地之间有N-1台路由器),从源到目的地发送一个分组。应用如上相同的逻辑,我们看到端到端时延是:
- 2.排队时延和分组丢失
- 每台分组交换机有多条链路与之相连。对于每条相连的链路,该分组交换机具有一个
输出缓存
(output buffer,也称为输出队列
(output queue)),它用于存储路由器准备发往那条链路的分组。 排队时延(queuing delay)
:如果到达的分组需要传输到某条链路,但发现该链路正忙于传输其他分组,该到达分组必须在输出缓存中等待。分组丢失(丢包)(packet loss)
:因为缓存空间的大小是有限的,一个到达的分组可能发现该缓存已被其他等待传输的分组完全充满了。在此情况下,到达的分组或已经排队的分组之一将被丢弃。
- 每台分组交换机有多条链路与之相连。对于每条相连的链路,该分组交换机具有一个
- 3.转发表和路由选择协议
转发表(forwarding table)
:路由器用于将目的地址(或目的地址的一部分)映射成为输岀链路。- 在因特网中,每个端系统具有一个称为IP地址的地址。当源主机要向目的端系统发送一个分组时,源在该分组的首部包含了目的地的IP地址。当一个分组到达网络中的路由器时,路由器检查该分组的目的地址的一部分,并向一台相邻路由器转发该分组。
路由选择协议(routing protocol)
:用于自动地设置这些转发表
1.3.2 电路交换
- 图1-13显示了一个电路交换网络。在这个网络中,用4条链路互联了 4台电路交换机。这些链路中的每条都有4条电路,因此每条链路能够支持4条并行的连接。每台主机(例如PC和工作站)都与一台交换机直接相连。当两台主机要通信时,该网络在两台主机之间创建一条专用的
端到端连接(end-to-end connection)
因此,主机A为了向主机B发送报文,网络必须在两条链路的每条上先预留一条电路。 - 1.电路交换网络中的复用
- 链路中的电路是通过
频分复用(Frequency- Division Multiplexing, FDM )
或时分复用(Time-Division Multiplexing, TDM)
来实现的。 - 对于FDM,链路的频谱由跨越链路创建的所有连接共享。特别是,在连接期间链路为每条连接专用一个频段。
- 对于一条TDM链路,时间被划分为固定期间的帧,并且每个帧又被划分为固定数量的时隙。当网络跨越一条链路创建一条连接时.网络在每个帧中为该连接指定一个时隙。这些时隙专门由该连接单独使用,一个时隙(在每个帧内)可用于传输该连接的数据。
- 链路中的电路是通过
- 2.分组交换与电路交换的对比
- 电路交换不考虑需求,而预先分配了传输链路的使用,这使得已分配而并不需要的链路时间未被利用。另一方面,分组交换按需分配链路使用。链路传输能力将在所有需要在链路上传输分组的用户之间逐分组地被共享。
- 虽然分组交换和电路交换在今天的电信网络中都是普遍采用的方式,但趋势无疑是朝着分组交换方向发展。
1.3.3 网络的网络
Pop(Point of Presence)
:一个POP只是提供商网络中的一台或多台路由器(在相同位置)群组,其中客户ISP能够与提供商ISP连接。多宿(multi-home)
:可以与两个或更多提供商ISP连接- 位于相同等级结构层次的邻近一对ISP能够对等(peer),也就是说,能够直接将它们的网络连到一起,使它们之间的所有流量经直接连接而不是通过上游的中间ISP传输。当两个ISP对等时,通常不进行结算,即任一个ISP不向其对等付费。
因特网交换点(Internet Exchange Point, IXP)
:IXP是一个汇合点,多个ISP能够在这里一起对等- 网络结构4——由接入ISP、区域ISP、第一层ISP、PoP、多宿、对等和IXP组成。
内容提供商网络(content provider network )
:例如Google- 如图1-15所示,谷歌专用网络通过与较低层ISP对等(无结算),尝试“绕过”因特网的较高层,采用的方式可以是直接与它们连接,或者在IXP处与它们连接。然而,因为许多接入ISP仍然仅能通过第一层网络的传输到达,所以谷歌网络也外第一层ISP连接,并就与这些ISP交换的流量向它们付费。通过创建自己的网络,内容提供商不仅减少了向顶层ISP支付的费用,而且对其服务最终如何交付给端用户有了更多的控制。
1.4 分组交换网中的时延、丢包和吞吐量
- 理想情况:我们希望因特网服务能够在任意两个端系统之间随心所欲地瞬间移动数据而没有任何数据丢失
- 实际情况:计算机网络必定要限制在端系统之间的吞吐量(每秒能够传送的数据量),在端系统之间引入时延,而且实际上也会丢失分组
1.4.1 分组交换网中的时延概述
- 当分组从一个节点(主机或路由器)沿着这条路径到后继节点(主机或路由器),该分组在沿途的每个节点经受了几种不同类型的时延。这些时延最为重要的是
节点处理时延(nodal processing delay)
、排队时延(queuing delay)
、传输时延(transmission delay)
和传播时延(propagation delay)
,这些时延总体累加起来是节点总时延(total nodal delay)
- 我们来探讨一下图1-16环境中的这些时延。作为源和目的地之间的端到端路由的一部分,一个分组从上游节点通过路由器A向路由器B发送。我们的目标是在路由器A刻画出节点时延。路由器A具有通往路由器B的出链路。该链路前面有一个队列(也称为缓存)。当分组从上游节点到达路由器A时,路由器A检查该分组的首部以决定它的适当出链路,并将该分组导向该链路。
- 1.处理时延:
-
- 检查分组首部和决定将该分组导向何处所需要的时间是处理时延的一部分
- 2.排队时延
-
- 在队列中,当分组在链路上等待传输时,它经受排队时延。一个特定分组的排队时延长度将取决于先期到达的正在排队等待向链路传输的分组数量。
-
- 到达分组期待发现的分组数量是到达该队列的流量的强度和性质的函数。
- 3.传输时延
-
- 分组以先到先服务方式传输,这在分组交换网中是常见的方式。仅当所有已经到达的分组被传输后,才能传输刚到达的分组。
-
- 用L比特表示该分组的长度,用R bps(即b/s)表示从路由器A到路由器B的链路传输速率。传输时延是L/R。这是将分组的所有比特推向链路(即传输,或者说发射)所需要的时间。
- 4.传播时延
-
- 一旦一个比特被推向链路,该比特需要向路由器B传播。从该链路的起点到路由器B传播所需要的时间是传播时延
-
- 该比特以该链路的传播速率传播。该传播速率取决于该链路的物理媒体(即光纤、双绞铜线等)
-
- 传播时延等于两台路由器之间的距离除以传播速率。即传播时延是d/s其中d是路由器A和路由器B之间的距离,s是该链路的传播速率。
- 5.传输时延和传播时延的比较
-
- 传输时延是路由器推出分组所需要的时间,它是分组长度和链路传输速率的函数,而与两台路由器之间的距离无关。
-
- 传播时延是一个比特从一台路由器传播到另一台路由器所需要的时间,它是两台路由器之间距离的函数,而与分组长度或链路传输速率无关。
-
1.4.2 排队时延和丢包
- 与传播时延、传输时延和处理时延不同的是,排队时延对不同的分组可能是不同的。
- 例如,如果10个分组同时到达空队列,传输的第一个分组没有排队时延,而传输的最后一个分组将经受相对大的排队时延(这时它要等待其他9个分组被传输)。
- 因此,当表征排队时延时,人们通常使用统计量来度量,如平均排队时延、排队时延的方差和排队时延超过某些特定值的概率。
- 排队时延的大小很大程度取决于流量到达该队列的速率、链路的传输速率和到达流量的性质,即流量是周期性到达还是以突发形式到达。
- 下面引入一些标记:
- a:表示分组到达队列的平均速率(单位是分组/秒,即pkt/s)
- R:传输速率,即从队列中推出比特的速率(单位是bps或b/s)
- L:分组的长度
- 则比特到达队列的平均速率是La bps
- 假定该队列非常大,因此它基本能容纳无限数量的比特
流量强度(traffic intensity)
:它在估计排队时延的范围方面经常起着重要的作用。如果La/R>l,则比特到达队列的平均速率超过从该队列传输岀去的速率。在这种不幸的情况下,该队列趋向于无限增加,并且排队时延将趋向无穷大!因此,流量工程中的一条金科玉律是:设计系统时流量强度不能大于1。- 现考虑La/R≤1的情况:这时,到达流量的性质影响排队时延。通常,到达队列的过程是随机的,即到达并不遵循任何模式,分组之间的时间间隔是随机的
- 平均排队时延与流量强度的定性关系如图1-18所示。
- 当流量强度接近于0,则几乎没有分组到达并且到达间隔很大,那么到达的分组将不可能在队列中发现别的分组。因此,平均排队时延将接近0。
- 当流量强度接近1时,当到达速率超过传输能力(由于分组到达速率的波动)时将存在时间间隔,在这些时段中将形成队列
- 当到达速率小于传输能力时,队列的长度将缩短。随着流量强度接近1,平均排队长度变得越来越长。
- 图1-18的一个重要方面是这样一个事实:随着流量强度接近于1,平均排队时延迅速增加。该强度的少量增加将导致时延大比例增加
- 丢包:在现实中,一条链路前的队列只有有限的容量,随着流量强度接近1,排队时延并不真正趋向无穷大。相反,到达的分组将发现一个满的队列。由于没有地方存储这个分组,路由器将
丢弃(drop)
该分组,即该分组将会丢失(lost)
1.4.3 端到端时延
- 假定在源主机和目的主机之间有N-1台路由器
- 假设该网络此时是无拥塞的(因此排队时延是微不足道的)
- 在每台路由器和源主机上的处理时延是 d p r o c d_{proc} dproc
- 每台路由器和源主机的输出速率是R bps
- 每条链路的传播时延是 d p r o p d_{prop} dprop
- 分组长度为L
- 节点时延累加起来,得到端到端时延: d e n d − e n d = N ( d p r o c + d t r a n s + d p r o p ) d_{end-end} = N(d_{proc} + d_{trans} + d_{prop}) dend−end=N(dproc+dtrans+dprop)
- d t r a n s = L / R d_{trans} = L/R dtrans=L/R
1.4.4 计算机网络中的吞吐量
- 考虑从主机A到主机B跨越计算机网络传送一个大文件
-
- 在任何时间瞬间的
瞬时吞吐量(instantaneous throughput)
是主机B接收到该文件的速率(以bps计)
- 在任何时间瞬间的
-
- 如果该文件由F比特组成,主机B接收到所有F比特用去T秒,则文件传送的
平均吞吐量(average throughput)
是F/T bps
- 如果该文件由F比特组成,主机B接收到所有F比特用去T秒,则文件传送的
-
- 图1-19a 显示了服务器和客户这两个端系统,它们由两条通信链路和一台路由器相连
-
- R c R_c Rc:表示路由器与客户之间的链路速率
-
- R s R_s Rs:示服务器与路由器之间的链路速率
-
- 假定在整个网络中只有从该服务器到客户的比特在传送。在这种理想的情况下,我们要问该服务器到客户的吞吐量是多少?
-
- 吞吐量为 m i n { R s , R c } min\{R_s,R_c\} min{Rs,Rc}
- -即吞吐量是
瓶颈链路(bottleneck link)
的传输速率 -
- 图1-19b此时显示了一个在服务器和客户之间具有N条链路的网络,这N条链路的传输速率分别是 R 1 , R 2 , … , R N R_1,R_2,\dots,R_N R1,R2,…,RN,文件传输吞吐量是: m i n { R 1 , R 2 , … , R N } min\{R_1,R_2,\dots,R_N\} min{R1,R2,…,RN}
-
-
- 图1-19和图1-20中的例子说明吞吐量取决于数据流过的链路的传输速率。我们看到当没有其他干扰流量时,其吞吐量能够近似为沿着源和目的地之间路径的最小传输速率。图1-20b中的例子更一般地说明了吞吐量不仅取决于沿着路径的传输速率,而且取决于干扰流量。特别是,如果许多其他的数据流也通过这条链路流动,一条具有高传输速率的链路仍然可能成为文件传输的瓶颈链路。
1.5 协议层次及其服务模型
1.5.1 分层的体系结构
利用分层的体系结构,我们可以讨论一个大而复杂系统的定义良好的特定部分。这种简化本身由于提供模块化而具有很高价值,这使某层所提供的服务实现易于改变。只要该层对其上面的层提供相同的服务,并且使用来自下面层次的相同服务,当某层的实现变化时,该系统的其余部分保持不变。对于大而复杂且需要不断更新的系统,改变服务的实现而不影响该系统其他组件是分层的另一个重要优点。
1.协议分层
- 为了给网络协议的设计提供一个结构,网络设计者以
分层(layer)
的方式组织协议以及实现这些协议的网络硬件和软件。 - 我们再次关注某层向它的上一层提供的
服务(service)
,即所谓一层的服务模型(service model)
。 - 一个协议层能够用软件、硬件或两者的结合来实现
- 各层的所有协议被称为
协议栈(protocol stack)
- 如图1-23所示,因特网的协议栈由5个层次组成:物理层、链路层、网络层、运输层和应用层
- 本书采用
自顶向下方法(top-down approach)
- (1)应用层:应用层是网络应用程序及它们的应用层协议存留的地方
- 应用层协议分布在多个端系统上,而一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组。我们把这种位于应用层的信息分组称为
报文(message)
。 - (2)运输层:因特网的运输层在应用程序端点之间传送应用层报文。
- 在因特网中,有两种运输协议,即TCP和UDP,利用其中的任一个都能运输应用层报文。
- TCP向它的应用程序提供了面向连接的服务。这种服务包括了应用层报文向目的地的确保传递和流量控制(即发送方/接收方速率匹配)。TCP也将长报文划分为短报文,并提供拥塞控制机制,因此当网络拥塞时,源抑制其传输速率。
- UDP协议向它的应用程序提供无连接服务。这是一种不提供不必要服务的服务,没有可靠性,没有流量控制,也没有拥塞控制。在本书中,我们把运输层的分组称为
报文段(segment)
- (3)网络层:因特网的网络层负责将称为数据报(datagram)的网络层分组从一台主机移动到另一台主机。
- 源主机中的因特网运输层协议(TCP或UDP)向网络层递交运输层报文段和目的地址
- 网络层包括著名的网际协议IP,该协议定义了在数据报中的各个字段以及端系统和路由器如何作用于这些字段
- 网络层也包括决定路由的路由选择协议,它根据该路由将数据报从源传输到目的地
- (4)链路层:因特网的网络层通过源和目的地之间的一系列路由器路由数据报。
- 为了将分组从一个节点(主机或路由器)移动到路径上的下一个节点,网络层必须依靠该链路层的服务
- 在每个节点,网络层将数据报下传给链路层,链路层沿着路径将数据报传递给下一个节点。在该下一个节点,链路层将数据报上传给网络层。
- 在本书中,我们把链路层分组称为
帧(frame)
- 由链路层提供的服务取决于应用于该链路的特定链路层协议(包括以太网、WiFi和电缆接入网的DOCSIS协议)
- (5)物理层:物理层的任务是将该帧中的一个个比特从一个节点移动到下一个节点
- 这层中的协议仍然是链路相关的,并且进一步与该链路(例如,双绞铜线、单模光纤)的实际传输媒体相关
2. OSI模型
- 图1-23b中的OSI参考模型的7层是:应用层、表示层、会话层、运输层、网络层、数据链路层和物理层。
- 考虑OSI参考模型中附加的两个层,即表示层和会话层
- 表示层的作用是使通信的应用程序能够解释交换数据的含义,包括数据压缩和数据加密(它们是自解释的)以及数据描
- 会话层提供了数据交换的定界和同步功能,包括了建立检查点和恢复方案的方法
1.5.2 封装
- 图1-24显示了这样一条物理路径:数据从发送端系统的协议栈向下,沿着中间的链路层交换机和路由器的协议栈上上下下,然后向上到达接收端系统的协议栈
1.6 面对攻击的网络
1.7 计算机网络和因特网的历史
这两小节请感兴趣的读者自行阅读