计算机网络(一)

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

1. 什么是因特网

1.1 具体构成描述

因特网是一个世界范围的计算机网络,将端系统通过通信链路和分组交换机连接到一起,接入因特网并通过特定的协议传输数据。

我们使用的接入网络的设备称为主机(host)端系统(end system)

端系统通过 通信链路(communication link)分组交换机(packet switch) 连接到一起。

端系统通过 因特网服务提供商(Internet Service Provider, ISP) 接入因特网。

每个ISP是由一个多台分组交换机和多段通信链路组成的网络。因特网就是将端系统彼此互联,因此为端系统提供接入的ISP也必须互联。较低层的ISP通过国家的、国际的较高层ISP(如 Level 3 Communications、AT&T、Sprint和NTT)互联起来。较高层ISP是由通过高速光纤链路互联的高速路由器组成的。无论是较高一层还是较低层的ISP网络,它们每个都是独立管理的,运行着IP协议,遵从一定的命名和地址规则。

端系统、分组交换机和其他因特网部件都要运行一系列的协议(protocol),这些协议控制因特网中信息的接收和发送。

TCP(Transmission Control Protocol,传输控制协议)IP(Internet Protocol,网络协议) 是因特网中最为重要的协议。统称为TCP/IP

IP协议定义了在路由器和端系统之间发送和接收的分组格式。

1.2 服务描述

分布式应用程序: 涉及多个和相互交换数据的端系统。

运行在一个端系统上的应用程序怎样才能指示因特网向运行在另一个端系统上的软件发送数据呢?

与因特网相连的端系统提供了一个套接字接口(socket interface),该接口规定了运行在一个端系统上的程序请求因特网基础设施向运行在另一个端系统上的特定目的地程序交付数据的方式。

1.3 协议

协议(protocol) 定义了

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

2. 网络边缘

端系统: 与因特网相连的计算机和其他设备称为端系统。

端系统     \iff 主机(host)

主机分为客户端(client)服务器(server)

  • 客户端通常是桌面PC、移动PC和智能手机等
  • 服务器通常是更为强大的机器,用于存储和发布Web页面、流视频、中继电子邮件等。

2.1 接入网

接入网: 将端系统物理连接到其边缘(edge router)的网络。

边缘路由器: 端系统到任何其他远程端系统的路径上的第一台路由器。

1)家庭接入:DSL、电缆、FTTH、拨号和卫星

  • 数字用户线(Digital Subscriber Line,DSL)

DSL利用电话公司现有的本地电话基础设施,

在用户一侧,一个分配器把到达家庭的数据信号和电话信号分隔开,并将数据信号转发给DSL调制解调器;

在电话公司一层,在本地中心距中,DSLAM把数据和电话信号分隔开,并将数据送往因特网。

由于上行速度和下行速度不同,所以这种接入被称为是不对称的。

  • 电缆因特网接入(cable Internet access)

利用有线电视公司现有的有线电视基础设施。住宅从提供有限电视的公司获得了电缆因特网接入。

接入不对称,下行信道分配的传输速率通常比上行信道的高。

重要特征:共享广播媒体

电缆因特网接入需要特殊的调制解调器,称为电缆调制解调器(cable modem)。通常是一个外部设备,通过一个以太网端口连接到家庭PC。在电缆头端,电缆调制解调器端接系统,将来自许多下行家庭中的电缆调制解调器发送的模拟信号转回数字形式。

电缆调制解调器将混合光纤同轴(Hybrid Fiber Coax,HFC)网络划分为上行和下行两个信道。

  • 光纤到户(Fiber To The Home,FTTH)

从本地中心局直接到家庭提供了一条光纤路径

  • 拨号与卫星

无法提供上述服务的地方,使用卫星链路或者传统电话线的拨号接入。

缺点: 延迟很大

2)企业(和家庭)接入:以太网和WIFI

以太网:

以太网用户使用双绞铜线与一台以太网交换机相连,以太网交换机或这样相连的交换机网络,再与更大的因特网相连。

无线LAN,即WIFI:

无线用户从(到)一个接入点发送(接收)分组,该接入点与企业网连接(很有可能用了有线以太网),企业网再与有线因特网相连。

3)广域无线接入:蜂窝网

蜂窝网:

与WIFI的不同是,一个用户仅需要位于基站的数万米(而不是几十米)范围内即可。

2.2 物理媒介

  • 导引型媒介(guided media)

    电波沿着固体媒介前行

    • 如光纤、双绞铜线或同轴电缆
  • 非导引型媒介(unguided media)

    电波在空气或外层空间中传播

    • 如在无线局域网或数字卫星频道中

3. 网络核心

网络核心: 即由互联因特网端系统的分组交换机和链路构成的网状结构。

3.1 分组交换

在各种网络应用中,端系统彼此交换报文

报文 可以执行一种控制功能,也可以包含数据。

分组(packet): 源将长报文划分为较小的数据块。

在源和目的地之间,每个分组都通过 通信链路分组交换机(packet switch) 传送。

交换机主要有两类:路由器(router)链路层交换机(link-layer switch)

分组的目的:使分组以该链路的最大传输速率通过通信链路。

1. 存储转发传输

多数分组交换机在链路的输入端使用 存储转发传输(store-and-forward transmission) 机制。

如下图:一条路由器通常有多条繁忙的链路,因为它的任务就是把一个入分组交换到一条出链路。

上图中,源已经传输了分组1的一部分,分组1的前沿已经到达了路由器,但是此时路由器还不能传输已经接收的比特,而是必须先缓存(即”存储“)该分组的比特。仅当路由器已经接收完了该分组的所有比特后,它才能开始向输出链路传输(即“转发”)该分组。

下面计算从源开始发送分组到目的地接收到整个分组所经过的时间

设链路的传输速率为 R,报文分组的大小为 L。

忽略传播时延——分组以光速跨越线路所需要的时间。

  • 传输一个分组

源在0时刻开始传输,在时刻 L/R 秒,路由器刚好接收到整个分组,此时路由器开始向出链路传输分组;在时刻 2L/R 秒,整个分组已经被目的地接收。

  • 传输三个分组

4L/R 秒时刻,目的地接收到所有三个分组。

  • 传输 P 个分组

(P+1)L/R 秒时刻,目的地接收到所有 P 个分组。

一般情况: 通过由 N 条速率均为 R 的链路组成的路径(源和目的地之间有 N-1 台路由器),从源到目的地发送一个分组,端到端的时延是

d端到端=NLRd_{端到端}=N \frac{L}{R}

此时如果传输 P 个分组所需的时间是,分组1经过一次完整的链路传输后被目的地接收,接收到分组1后,其余分组紧随其后,不断从最后一个路由器转发到目的地

T=t分组1+t其余分组=d端到端+(P1)LRT = t_{分组1}+t_{其余分组} = d_{端到端} + (P-1)\frac{L}{R}

2. 排队时延和分组丢失

每台分组交换机有多条链路与之相连。对于每条相连的链路,该分组交换机具有一个输出缓存(output buffer,也称为输出队列(output queue)),它用于存储路由器准备发往那条链路的分组。

如果到达的分组需要发送的链路正在发送其他分组,则该分组必须在输出缓存中等待。因此,除了存储转发时延外,分组还要承受输出缓存的 排队时延(queuing delay) 。这些时延的变换程度取决于网络的拥塞程度。

因为缓存的大小有限,所以一个分组达到时,发现该缓存已经被其他等待传输的分组完全占据了。此时将出现 分组丢失(丢包)(packet loss) ,到达的分组或已经排队的分组之一将被丢弃。

如果分组在链路输出缓存中排队,在该路由器中将出现拥塞

3. 转发表和路由选择协议

在因特网中,每个端系统都有一个 IP地址 。每台路由器具有一个 转发表(forwarding table),用于将目的地址(或目的地址的一部分)映射成为输出链路。当某分组到达一台路由器时,路由器检查该地址,并用这个目的地址搜索其转发表,以发现适当的出链路。路由器则将该分组导向该出链路。

因特网具有一些特殊的 路由选择协议(routing protocol) ,用于自动的设置这些转发表。

例如,一个路由选择协议可以决定从每台路由器到达每个目的地的最短路径,并使用这些最短路径结果来配置路由器中的转发表。

3.2 电路交换

通过网络链路和交换机移动数据有两种基本方法:

  1. 电路交换(circuit switching): 预留了端系统间沿路径通信所需要的资源(缓存,链路传输速率)。
  2. 分组交换(packet switching): 资源不预留,需要排队等待接入通信线路。

1. 电路交换网络中的复用

链路中的电路是通过 频分复用(Frequency-Division Multiplexing,FDM)时分复用(Time-Division Multiplexing,TDM) 来实现的。

FDM,频带被划分,连接期间,每条链路为每条连接专用一个频带。该频带的宽度称为带宽。

TDM,时间被换分为固定期间的帧,每个帧又划分为固定数量的时隙,每个帧中为连接指定一个时隙。

对于 TDM 一条电路的传输速率等于帧速率乘以一个时隙中的比特数量。例如,如果链路每秒传输 8000 个帧,每个时隙由 8 个比特组成,则每条电路的传输速率是 64kbps 。

2. 分组交换与电路交换的对比

分组交换

  • 提前预定链路,链路使用更合理
  • 不适合实时服务(例如,电话和视频会议),因为它的端到端时延是可变和不可预测的(主要是因为排队时延的变动和不可预测所致)

电路交换

  • 比电路交换更好的带宽共享
  • 比电路交换更简单、更有效、实现成本更低

虽然分组交换和电路交换在今天的电信网络中都是普遍采用的方式,但趋势无疑是朝着分组交换方向发展。

3.3 网络的网络

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

计算机网络必定要限制在端系统之间的吞吐量(每秒钟能够传送的数据量),在端系统之间引入时延,而且实际上也会丢失分组。

4.1 分组交换网络中的时延概念

时延的类型:

(1)节点处理时延(nodal processing delay):

​ 检查分组首部和决定将该分组导向何处所需的时间,以及检测比特级别的差错所需要的时间。

(2)排队时延(queuing delay):

​ 在队列中,分组在链路上等待传输的时间。

(3)传输时延(transmission delay):

​ 用 L 比特表示该分组的长度,用 R bps(即 b/s)表示从路由器 A 到路由器 B 的链路传输速率。例如,对于一条 10 Mbps 的以太网链路,速率 R=10MbpsR = 10 Mbps

​ 传输时延是 L/RL/R

(4)传播时延(propagation delay):

​ 一旦一个比特被推向链路,该比特需要向路由器 B 传播。从该链路的起点到达路由器 B 传播所需要的时间是传播时延。

​ 该比特以该链路的传播速率传播。该传播速率取决于该链路的物理媒介(即光纤、双绞铜线等),其速率范围是 21082*10^8 ~ 3108m/s3*10^8 m/s ,这等于或间接等于光速。

传输时延和传播时延的比较

  • 传输时延:路由器推出分组所需要的时间,是分组长度和链路传输速率的函数,而与两台路由器之间的距离无关。
  • 传播时延:一个比特从一台路由器到传播到另一台路由器所需的时间,是两台路由器之间距离的函数,而与分组的长度或链路传输速率无关。

节点的总时延公式

节点总时延=处理时延+排队时延+传输时延+传播时延节点总时延 = 处理时延 + 排队时延 + 传输时延 + 传播时延

dnodal=dproc+dqueue+dtrans+dpropd_{nodal}=d_{proc}+d_{queue}+d_{trans}+d_{prop}

4.2 排队时延和丢包

排队时延

dproc+dtrans+dpropd_{proc} + d_{trans} + d_{prop} 不同,排队时延对不同的分组可能是不同的。

例如,如果 10 个分组同时到达空队列,传输的第一个分组没有排队时延,而传输的最后一个分组将经受相对大的排队时延(这时它要等待其他 9 个分组被传输)。因此人们通常使用统计量来度量排队时延(如方差或某特定概率值)。

aa 表示分组到达队列的平均速率(分组/s,即 pkt/s)。

RR 是传输速率,即从队列中推出比特的速率(以 bps 即 b/s 为单位)。

LL 表示是所有分组都是由 LL 比特组成的。

La bpsLa \space bps 表示比特到达队列的平均速率。

La/RLa/R 表示流量强度

设计系统时流量强度不能大于 1 。

丢包

因为排队容量是有限的,随着流量强度接近 1 ,排队时延并不真正趋向无穷大。相反,到达的分组将发现一个满的队列。

由于没有地方存储这个分组,路由器将 丢弃(drop) 该分组,即该分组会 丢失(lost)

4.3 端到端时延

假定在源主机和目的主机之间有 N1N-1 台路由器。假设该网络此时无拥塞(排队时延可以忽略不记),在每台路由器和源主机上的处理时延是 dprocd_{proc} ,每台路由器和源主机的输出速率是 R bpsR \space bps ,每条链路的传播时延是 dpropd_{prop} 。节点时延累加起来,得到端到端时延:

dendend=N(dproc+dtrans+dprop)d_{end-end}= N(d_{proc}+d_{trans}+d_{prop})

其中 dtrans=L/Rd_{trans}=L/R ,其中 LL 是分组长度。

4.4 计算机网络中的吞吐量

一个在服务器和客户之间具有 NN 条链路串联的网络。链路的传输速率分别是 R1,R2,...,RNR_1, R_2, ... , R_N 。服务器和客户之间路径的文件传输吞吐量,即 瓶颈链路 的速率是 min{R1,R2,...,RN}min\{R_1, R_2, ..., R_N\}

5. 协议层次及其服务模型

5.1 分层的体系结构

每个层次通过如下方式提供服务:

  1. 在该层中执行了某些动作
  2. 使用直接下层的服务

1. 协议分层

各层的所有协议被称为 协议栈(protocol stack)

因特网的协议栈由 5 个层次组成:物理层、链路层、网络层、运输层和应用层。

(1)应用层

  • 应用层是网络应用程序以及它们的应用层协议存留的地方。

  • 位于应用层的信息分组称为 报文(message)

  • 因特网的应用层包含许多协议,例如 HTTP (它提供了 Web 文档的请求和传送)、SMTP (它提供了电子邮件报文的传输)和 FTP (它提供了两个端系统之间的文件传送)。

    某些网络功能,如将 www.ietf.org 这样对人友好的端系统名字转换为 32 比特的网络地址,也是借助于特定的应用层协议即域名协议(DNS)完成的。

(2)运输层

  • 在应用程序端点之间传送应用层报文。

  • 运输层的分组称为 报文段(segment)

  • 两种运输协议

    • TCP

      这种服务包括了应用层报文向目的地确保传递和流量控制(即发送方/接收方速率匹配)。

      也可以将长报文划分为短报文,并提供拥塞控制机制,因此当网络拥塞时,源抑制其传输速率。

    • UDP

      UDP 协议向它的应用程序提供无连接服务。

      这是一种不提供不必要服务的服务,没有可靠性,没有流量控制,也没有拥塞控制。

(3)网络层

  • 网络层负责将数据报的网络分组从一台主机移动到另一台主机。
  • 网络层的分组称为 数据报(datagram)
  • 尽管网络层包括了网际协议和一些路由选择协议,但通常把它简单地称为 IP 层,这反映了 IP 是将因特网连接在一起的粘合剂这样的事实。

(4)链路层

  • 将分组从一个节点(主机或路由器)移动到路径上的下一个节点,网络层必须依靠该链路层的服务。

  • 链路层分组称为 帧(frame)

  • 链路层的例子包括以太网、WiFi 和电缆接入网的 DOCSIS 协议。因为数据报从源到目的地传送通常需要经过几条链路,一个数据报可能被一段链路上的以太网和下一段链路的 PPP 所处理。

(5)物理层

  • 将链路层的帧中的一个个比特从一个节点移动到下一个节点。
  • 该层中的协议仍是链路层相关的。

2. OSI 模型

20 世纪 70 年代后期,国际标准化组织(ISO)提出计算机网络围绕 7 层来组织,称为开放系统互连(OSI)模型。

OSI 参考模型中附加的两个层,即表示层和会话层。

  • 表示层 的作用是使通信的应用程序能够解释交换数据的含义。这些服务包括数据压缩和数据加密(它们是自解释的)以及数据描述(这使得应用程序不必担心在各台计算机中表示/存储的内部格式不同)。
  • 会话层 提供了数据交换的定界和同步功能,包括了建立检查点和恢复方案的方法。

因特网缺少了在 OSI 参考模型中建立的两个层次,如果一个应用程序需要这些服务之一,将会怎么样呢?

这留给应用程序开发者处理,应用程序开发者决定一个服务是否是重要的,如果该服务重要,应用程序开发者就应该在应用程序中构建该功能。

习题

Connection:表示是否为持续连接,close 表示交换报文后要关闭 TCP 连接