电路交换和分组交换
在电路交换网络中,沿着端系统通信路径,为端系统之间通信所提供的资源(缓存、链路传输速率)在通信会话期间会被预留。
在分组交换网络中,这些资源则不会被预留,会话的报文按需使用这些资源,这将导致可能不得不等待(即排队)接入通信线路。
并非所有的电信网络都能够被明确地归类为电路交换网络或分组交换网络。
电路交换
在上图中,每台主机(例如PC和工作站)都与一台交换机直接相连。当两台主机要通信时,该网络在两台主机之间创建一条专用的端到端连接(end-to-end connection)。因此,主机A为了向主机B发送报文,该网络必须在两条链路之一上先预留一条电路。假设每条链路具有n条电路,每条链路由端到端连接使用,该连接在连接期间获得该链路带宽的1/n部分。
电路交换网络中的多路复用
- 链路中的电路可通过频分多路复用(Frequency-Division Multiplexing, FDM)实现。
对于FDM,链路的频谱由跨越链路创建的所有连接所共享。特别是,该链路在连接期间为每条连接专用一个频段。在电话网络中,这个频段通常具有4kHz(即每秒4000赫兹或4000周)。该频段的宽度被称为带宽(bandwidth)。 - 也可通过时分多路复用(Time-Division Multiplexing, TDM)实现。对于一条TDM链路,时间被划分为固定区间的帧,并且每帧又被划分为固定数量的时隙。当网络跨越一条链路创建一条连接时,该网络在每个帧中为该连接指定一个时隙,在每个帧中具有4个时隙。一条电路的传输速率等于一个时隙中的比特数乘以该帧的速率。例如,如果链路每秒传输8000个帧,每个帧由8个比特组成,则一条电路的传输速率是64kbps。
TDM相较于FDM优点为,当FDM中有频段未被使用时,会相应影响传输的速率。
分组交换
各种应用程序在完成其任务时要交换报文(message)。报文能够包含协议设计者需要的任何东西。
报文可以执行一种控制功能(握手例子中的“你好”报文,或能够包含数据(电子邮件数据、JPEG图像或MP3音频文件)。
在现代计算机网络中,源主机将长报文划分为较小的数据块,并称之为分组(packet)。在源和目的地之间,这些分组中的每个都通过通信链路和分组交换机(packet switch)传送。交换机主要有两类:路由器和链路层交换机。分组以该链路的最大传输速率在通信链路上传输。
多数分组交换机在链路的输入端使用存储转发传输(store-and-forward transmission)机制:在交换机能够开始向输出链路传输该分组的一个比特之前,必须接收到整个分组。
分组交换与电路交换对比:统计多路复用
分组交换总是具有与电路交换相同的性能,并且用户数量是所支持的数量的3倍多也是如此。
电路交换不考虑要求而预先分配传输链路的使用,这使得已分配但不需要的链路时间未被利用。另一方面,分组交换使用按需的方式分配链路。链路的传输能力将只在所有的其分组要在链路上传输的用户中,逐组地被共享。这样的按需共享资源有时被称为资源的统计多路复用(statistical multiplexing)。
ISP和因特网主干
在公共因特网中,坐落在因特网边缘的接入网络通过分层的ISP层次结构与因特网的其他部分相连
分组交换网中的时延、丢包和吞吐量
分组交换网中的时延概述
时延的类型
- 节点处理时延(nodal processing delay)
检查分组首部和决定将该分组导向何处所需要的时间是处理时延的一部分,处理时延也包括其他因素。在这种节点处理之后,路由器将该分组引向通往路由器B之前的队列。 - 排队时延(queuing delay)
在队列中,当分组在链路上等待传输时,它经受排队时延。
一个特定分组的排队时延将取决于先期到达的、正在排队等待向链路传输的分组的数量。如果该队列是空的,并且当前没有其他分组在传输,则该分组的排队时延是0。另一方面,如果流量很大,并且许多其他分组也在等待传输,该排队时延将很大。 - 传输时延(transmission delay)
假定分组以先到先服务方式传输,仅当所有已经到达的分组被传输后,才能传输我们的分组。
用$L$比特表示分组的长度,用$R$bps表示从路由器A到路由器B的链路传输速率传输时延(又称为储存转发时延)是$L/R$。
假定两台主机中间有$Q$条链路,它必须储存转发$Q$次,因此总时延为$QL/R$。 - 传播时延(proagation delay)
一旦一个比特被推向链路,该比特需要向路由器B传播。从该链路的起点到路由器B传播所需要的时间是传播时延,该传播速率取决于该链路的物理媒体(即光纤、双绞铜线等)。
如果$d$是路由器A和路由器B之间的距离,$s$是传播速率,传播时延等于两台路由器之间的距离除以传播速率,即传播时延是$d/s$。
若传输时延大于传播时延,则会出现一个分组中的前几个比特到达了一台路由器,而该分组中还有余下的比特仍在前面的路由器中等待传输。
如果令分别表示处理时延、排队时延、传输试验和传播时延,则节点的总延时由下式给定:
排队时延
与其他三项时延不同的是,排队时延对不同的分组是不同的。例如,如果10个分组同时到达空队列,传输的第一个分组没有排队时延,而传输的最后一个分组将经受相对大的排队时延(这时它要等待其他九个分组被传输)。
$a$表示分组到达队列的平均速率($a$的单位是每秒分组,即pkt/s),$R$是传输速率,即比特从队列中推出的速率(以bps为单位),假定所有分组都是由$L$比特组成的,则比特到达队列的平均速率是$La$bps。最后,假定该队列非常大,因此它基本能容纳无限数量的比特,比率$La/R$被称为流量强度(traffic intensity)。
- 如果$La/R > 1$,则比特到达队列的平均速率超过从该队列传输出去的速率。在这种情况下,队列的增加将趋于无界,并且排队时延将趋于无限大,因此,设计系统时流量强度不能大于1
- 考虑$La/R <= 1$时
- 如果分组周期性到达,每个分组将到达一个空队列中,因此不会有排队时延。
- 如果分组以突发形式到达而不是周期性到达,则有可能有很大的平均排队时延。
丢包
排在一条链路前的队列只有有限的容量,所以流量强度接近于1时排队时延也不会趋向于无穷大,相反,到达的分组将会发现一个满的队列。由于没有地方存储这个分组,路由器将丢弃(drop)该分组,即该分组将会丢失(lost)。
节点的性能常常不仅要根据时延来度量,而且要根据分组丢失的概率来度量。
计算机网络中的吞吐量
为了定义吞吐量,考虑从主机A到主机B通过计算机网络传送一个大文件。
- 瞬时吞吐量(instantaneous throughput)是主机B接收到该文件的速率(以bps计)。
- 平均吞吐量(average throughput):若主机B接收到所有$F$比特用了$T$秒,则文件传送的平均吞吐量是$f/t$bps。
考虑计算机网络中的几个关于吞吐量的例子:
令$R_s$表示服务器与路由器之间的链路速率;$R_c$表示路由器与客户机之间的链路速率。对于这种简单的两链路网络,其吞吐量是min{$R_c,R_s$},也就是说是瓶颈链路(bottleneck link)的传输速率。在确定了吞吐量后,我们现在近似地得到从服务器到客户机传输一个$F$比特的大文件所需要的时间是$F$/min{$R_c,R_s$}。得到的表达式是近似的是因为没有考虑分组层次和协议的问题。
服务器以接入速率$R_s$与网络相连,客户机以接入速率$R_c$与网络相连,现在假定计算机网络核心中的所有链路具有非常高的传输速率,远远超过$R_s$和$R_c$。在这个例子中,因为计算机网络的核心就像一个宽大的管子。所以比特从源向目的地流动速率还是$R_s$和$R_c$中的较小者,即min{$R_s,R_c$}。目前,因特网中对吞吐量的限制因素通常是接入网。
- 若有10个服务器和10个客户机与计算机网络核心相连。假设这条链路的传输速率为$R$,再假定所有服务器接入链路的速率都是$R_s$,所有客户机接入链路的速率都是$R_c$。
- 如果公共链路的速率$R$很大,比$R_s$和$R_c$大100倍,则每个下载的吞吐量仍是min{$R_s,R_c$}。因为公共链路对10个下载平分其传输速率,假设平分完后的速率小于$R_s$和$R_c$,则吞吐量取决于平分后公共链路传输速率。
协议层次和他们的服务模型
分层的体系结构
利用分层的体系结构,我们可以讨论一个定义良好的、大而复杂的系统的特定部分。这种简化本身由于提供模块化而具有很高的价值,这使得由层所提供的服务的实现易于改变。
只要该层对其上面的层提供相同的服务,并且使用来自下面层次的相同服务,当某层的实现变化时,该系统的其余部分就可以保持不变。
对于大而复杂且需要不断更新的系统,改变服务的实现而不影响该系统其他部分的能力是分层的另一个重要优点。
协议分层
为了给网络协议的设计者提供一个结构,网络设计者以分层(layer)的方式组织协议及实现这些协议的网络硬件和软件。每层通过在该层中执行某些动作,或直接下层的服务,来提供他的服务。
各层的所有协议综合起来被称为协议栈(protocol stack)。因特网的协议栈由5个层次组成:物理层、链路层、网络层、运输层和应用层。
- 应用层
应用层是网络应用程序及其应用层协议存留的地方。
应用层协议分布在多个端系统上,一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组。我们将这种位于应用层的信息称为报文(message)。 - 运输层
运输层提供了在应用程序端点之间传送应用层报文的服务。
TCP向他的应用程序提供了面向连接的服务。这种服务包括了应用层报文向目的地确保传输和流量控制。TCP也将长报文划分为短报文,并提供拥塞机制,因此当网络拥塞时,源抑制其传输速率。
UPD协议香它的应用程序提供无连接服务。
在本书中,我们将运输层称为报文段(segment) - 网络层
因特网的网络层负责将称为数据报(datagram)的网络层分组从一台主机移动到另一台主机。 - 链路层
为了将分组从一个节点(主机或路由器)移动到数据上的下一个节点,网络层必须依靠链路层的服务。特别是在每个节点,网络层将数据报下传给链路层,链路层沿着路径将数据报传递给 下一个节点。在该下个节点,链路层将数据报上传给网络层。
链路层提供的服务取决于应用于该链路的特定链路层协议。
链路层分组被称为帧(frame)。 - 物理层
物理层的任务是将该帧中的一个一个比特从一个节点移动到下一个节点。该层中的协议仍是链路相关的,并且进一步与链路(例如,双铜绞线、单模光纤)的实际运输媒体相关。 - ISO模型
因特网协议栈并不是唯一的协议栈,国际标准化组织(ISO)提出计算机网络应组织为大约七层,称为开放系统互连(OSI)。OST参考模型的七层是:应用层、表示层、会话层、运输层、网络层、链路层和物理层。
表示层的作用是使通信的应用程序能够解释交换数据的含义,它所提供的服务包括数据压缩、数据加密以及数据描述。
会话层提供了数据交换的定界和同步功能,包括建立检查点和恢复方案的方法。
报文、报文段、数据报和帧
在发送主机,应用层报文(application-layer message)(图中的M)被传送给运输层。
在最简单的情况下,运输层收取报文并附上附加信息(即运输层首部信息,图中的$H_t$),该首部将被接收端的运输层使用。应用层报文和运输层首部信息共同构成了运输层报文段(transport-layer segment)。运输层报文段因此封装了应用层报文,
运输层则向网络层传递该报文段,网络层增加了如源和目的端系统地址等网络层首部信息(图中的$H_n$),形成了网络层数据报(network-layer datagram)。
该数据报接下来被传递给链路层,链路层当然也增加它自己的链路层首部信息并创建了链路层帧(link-layer frame)。
在每一层,分组具有两种类型的字段:首部字段和有效荷载字段(payload field)。有效荷载通常来则上一级的分组。这也说明了封装(encapsulation)这一重要概念。
攻击威胁下的网络
- 坏家伙能够经因特网将恶意软件放入你的计算机
设备与因特网相连,接受或发送的数据中包含好的东西和不好的东西,这些不好的东西统称为恶意软件(malware),他能够影响我们的设备。
受害主机还可能征召网络上数以千计的类似受害设备,它们被统称为僵尸网络(botnet)。
大多数恶意软件是自我复制(self-replicating)的:一旦它感染了一部主机,就会从那台主机进入更多的主机。
- 病毒(virus)是一种需要某种形式的用户交互来感染用户设备的恶意软件。
- 蠕虫(worm)是一种无需任何明显用户交互就能进入设备的恶意软件。
坏家伙能够攻击服务器和网络基础设施
拒绝服务(Denial-of-Service,DoS)攻击是一种宽泛类型的安全性威胁。DoS攻击使得合法用户不能使用网络、主机或其他基础设施部分。
大多数因特网DoS攻击属于下列三种:弱点攻击、带宽洪泛、连接洪泛。
攻击者还可使用僵尸网络产生分布式DoS(distributed DoS,DDoS)去攻击。坏家伙能够嗅探分组
分组嗅探器(packet sniffer)坏家伙能够伪装层你信任的人
一个不可信的接收方(比如说因特网上的一台路由器)接受了分组,用(虚假的)源地址伪装真实的源地址,进而执行某些嵌入在该分组中的命令(比如说修改它的转发表),将具有虚假源地址的分组注入因特网的能力被称为IP哄骗(IP spoofing),它只是一个用户能够冒充另一个用户的多种方式之一。坏家伙能够修改或删除报文