计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

计算机网络和因特网

什么是因特网

具体构成描述

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

因特网(internet)是一个世界范围的计算机网络,互联了数十亿计算设备(比如PC、手机、电视等),这些设备被称为主机(host)或端系统(end system),它们通过通信链路(communication link)和分组交换机(packet switch)连接到一起。

通信链路包括同轴电缆、铜线、光纤、无线电频谱,不同类型的通信链路传输速率(transmission rate)不同,以比特/秒(bit/s或bps)度量。

当一台端系统向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节,由此形成的信息包就是分组(packet),这些分组通过网络发送到目的端系统。

分组交换机从它的一条入通信链路接收到达的分组,并从它的一条出通信链路转发该分组,当前最著名的两种分组交换机分别为路由器(router)和链路层交换机(link-layer switch),其中链路层交换机通常用于接入网中,而路由器通常用于网络核心中。

从发送端系统到接收端系统,一个分组所经历的一系列通信链路和分组交换机统称为该网络的路径(route或path)。

端系统通过因特网服务提供商(Internet Service Provider,ISP)接入因特网,比如本地电缆、电话公司那样的住宅区ISP、公司ISP、大学ISP,在机场等公共场合提供WiFi接入的ISP,智能手机和其他设备提供移动接入的蜂窝数据ISP。每个ISP自身就是一个由多台分组交换机和多段通信链路组成的网络,提供了各种不同类型的网络接入。

在因特网中端系统彼此互联,因此为端系统提供接入的ISP也需要互联,较低层的ISP通过国家、国际的较高层ISP互联,每个ISP都是独立管理的,运行着IP协议,遵从一定的命名和地址规则。

端系统、分组交换机和其他因特网部件需要运行一系列协议(protocol),这些协议控制因特网中信息的发送和接收,例如传输控制协议(Transmission Control Protocol,TCP)和网际协议(Internet Protocol,IP)。

服务描述

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

什么是协议

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

网络边缘

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

接入网

边缘路由器(edge router)是端系统到任何其他远程端系统的路径上的第一台路由器。接入网指将端系统物理连接到其边缘路由器的网络。如下图,加粗的线代表接入链路。

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

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

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

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

DSL利用电话公司现有的本地电话基础设施(也就是电话线,即双绞铜线),通过DSL调制解调器将得到的数字数据转换为高频音,通过电话线传输到本地中心局(CO),然后在用户线接入复用器(DSLAM)中被转换回数字形式。

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

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

电缆因特网接入利用了有线电视公司现有的有线电视基础设施(电缆),光缆将电缆头端连接到地区枢纽,从这里使用传统的同轴电缆到达各家各户。因为该系统中应用了光纤和同轴电缆,因此经常被称为混合光纤同轴(Hybrid Fiber Coax,HFC)系统。

与DSL类似,电缆调制解调器将数据转换为模拟信号,通过电缆传输到电缆头端中的电缆调制解调器端接系统(Cable Modem Termination System,CMTS)中,再由CMTS将其转换回数字形式。

电缆因特网接入的一个重要特征是共享广播媒体,如果几个用户同时下载数据,那么实际下载速率会大大低于电缆总计下载速率,但是用户很少会在完全相同的时刻请求网页。

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

FTTH指的是从本地中心局对家庭直接提供一条光纤路径,提供每秒千兆比特范围的因特网接入速率。一般从中心局出来的每根光纤由多个家庭共享,当相对接近这些家庭的位置时,才会分成每户一根光纤。

这种光纤分布体系结构有两种:主动光纤网络(Active Optical Network,AON)和被动光纤网络(Passive Optical Network,PON),AON本质上是交换因特网,PON结构如下图:

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

PON结构中每个家庭有一个光纤网络端接器(Optical Network Terminator,ONT),由专门的光纤连接到临近的光纤分配器(splitter),该分配器将多个家庭集结到一根共享的光纤上,该光纤再连接到本地电话和公司的中心局中的光纤线路端接器(Optical Line Terminator,OLT),该OLT提供了光信号和电信号之间的转换,经过本地电话公司路由器与因特网相连。

拨号和卫星

在无法提供DSL、电缆、FTTH的地方(比如乡村环境),能够使用卫星链路将住宅以超过1Mbps的速率与因特网相连。

使用传统电话线的拨号接入与DSL基于相同的模式,家庭的调制解调器经过电话线连接到ISP的调制解调器,但是拨号接入的速率只有56kbps。

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

以太网

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

在公司、大学和越来越多的家庭环境中,使用局域网(LAN)将端系统连接到边缘路由器,以太网是目前为止最流行的局域网接入技术。

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

使用以太网接入,用户通常以100Mbps或1Gbps速率接入以太网交换机,而服务器可能具有1Gbps甚至10Gbps的接入速率。

WiFi

WiFi是无线LAN接入技术,一个无线LAN用户通常必须位于接入点几十米范围内。

广域无线接入:3G和LTE

手机等设备应用了与蜂窝移动电话相同的无线基础设施,通过蜂窝网提供商运营的基站来发送和接收分组,与WiFi不同的是,一个用户仅需要位于基站的数万米范围内。

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

3G是第三代无线技术,提供了超过1Mbps的速率;4G是第四代无线技术。

LTE源于3G技术,能够取得超过10Mbps的速率。

物理媒体

对于每个发射器到接收器(比如一个路由器到另一个路由器),通过跨越一种物理媒体(physical medium)传播电磁波或光脉冲来发送比特。

物理媒体分为以下两类:

  • 导引型媒体(guided media):电波沿着固体媒体前行,如光缆、双绞铜线或同轴电缆;
  • 非导引型媒体(unguided media):电波在空气或外层空间中传播,例如无线局域网或数字卫星频道。

网络核心

网络核心由互联因特网端系统的分组交换机和链路构成的网状网络,如下图加粗线所勾画出的部分。

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

通过网络链路和交换机移动数据的两种基本方法:电路交换(circuit switching)和分组交换(packet switching)。

分组交换

如果某源端系统或分组交换机经过一条链路发送一个 L L L比特的分组,链路传输的速率为 R R R比特/秒,则传输该分组的时间为 L / R L/R L/R秒。

存储转发传输

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

存储转发传输(store-and-forward transmission)是指在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收到整个分组。

通过由 N N N条速率均为 R R R的链路组成的路径(也就是说路径中有 N − 1 N-1 N1台路由器),发送一个分组时延为: d 端 到 端 = N L R d_{端到端}=N\frac{L}{R} d=NRL

(本行结论待验证)实际上,有多个分组连续发送时,路由器会在完全接收到一个分组后立刻发送给下一个接收端,因此,发送 P P P个分组的时延为: d 端 到 端 = N ( N + P − 1 ) L R d_{端到端}=N\frac{(N+P-1)L}{R} d=NR(N+P1)L

排队时延和分组丢失

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

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

当一个分组到达时,如果输出缓存中有其他分组,则会进行等待,会产生排队时延(queuing delay)。如果输出缓存已满,则会将到达的分组或缓存中的某个分组丢弃,出现分组丢失(丢包)(packet loss)现象。

转发表和路由选择协议

在因特网中,每个端系统具有一个成为IP地址的地址。当源主机要向目的端系统发送一个分组时,源在该分组的首部包含了该目的地的IP地址。

每台路由器具有一个转发表(forwarding table),用于将目的地址映射成输出链路。当某分组到达一台路由器时,路由器检查该地址,并用这个目的地址搜索器转发表,以发现适当的出链路。路由器则将分组导向该出链路。

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

电路交换

发送方发送数据前,网络必须在发送方和接收方之间建立一条连接,该连接被称为一条电路(circuit)。

如下图,4条链路互联了4台交换机,每条链路中有4条电路,如果两台临近交换机之间每条链路具有1Mbps传输速率,则每个端到端电路交换链接获得250kbps专用的传输速率。

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

电路交换网络中的复用

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

对于FDM,链路的频谱由跨越链路创建的所有连接共享。特别是,在连接期间链路为每条连接专用一个频段。在电话网络中,这个频段的宽度通常为4kHz(即每秒4000周期)。毫无疑问,该频段的宽度成为带宽(band-width)。调频无线电台也适用FDM来共享88MHz~108MHz的频谱,其中每个电台被分配一个特定的频段。

对于TDM,时间被划分为固定期间的帧,并且每个帧又被划分为固定数量的时隙。当网络跨越一条链路创建一条连接时,网络在每个帧中为该连接指定一个时隙。这些时隙专门由该连接单独使用,一个时隙(在每个帧内)可用于传输该连接的数据。

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

分组交换和电路交换的对比

  • 分组交换:带宽可共享,但时延可变而不可预测;
  • 电路交换:预留电路,但存在静默期浪费资源。

网络的网络

  • 网络结构1:用单一的全球传输ISP连接所有接入ISP;
  • 网络结构2:用多个互联的全球传输ISP连接所有接入ISP;
  • 网络结构3:分层连接ISP,多个互联的全球传输ISP为第一层ISP,根据区域逐层向下接入(比如中国,国家与第一层ISP连接,省级ISP与*ISP连接,市级ISP与省级ISP连接);
  • 网络结构4:在网络结构3的基础上,增加PoP、多宿、对等和IXP
    • 存在点(Point of Presence,PoP):PoP是提供商网络中的一台或多台路由器群组,客户要与提供商ISP连接,可以将它的路由器连接到PoP中的一台路由器上;
    • 多宿(multi-home):多宿是指可以与两个或更多提供商ISP连接,当一个提供商ISP故障还可以保证正常发送和接收分组;
    • 对等(peer):相同等级结构层次的临近一对ISP对等,也就是能够直接进行连接,使它们之间的所有流量经直接连接而不是通过上游的中间ISP传输;
    • 因特网交换点(Internet Exchange Point,IXP):IXP是一个汇合点,多个ISP能够在这里一起对等。
  • 网络结构5:在网络结构4顶部增加内容提供商网络(content provider network),其与低层的ISP对等,其他ISP可以直接与它们相连或者通过IXP与它们相连。

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

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

分组交换网中的时延概述

  • 节点处理时延(nodal processing delay):检查分组首部和决定将该分组导向何处所需要的时间是处理时延的一部分。高速路由器的处理时延通常是微妙或更低的数量级;
  • 排队时延(queuing delay):在队列中,当分组在链路上等待传输时,经受排队时延。当队列为空时,排队时延为0;
  • 传输时延(transmission delay):传输时延是将所有分组的比特推向链路所需要的时间(并不是到达下一个路由器的时间),对于一条速率为 R = 10 M b p s R=10Mbps R=10Mbps的链路,长度为 L L L的分组,传输时延是 L / R L/R L/R(注意这里的 R R R并不是路由器之间的传输速率)。
  • 传播时延(propagation delay):从链路的起点(即从起始路由器推出分组后)到终点路由器的传播所需要的时间是传播时延。传播速率取决于该链路的物理媒体(双绞铜线、光纤等),其速率范围是 2 ∗ 1 0 8 2*10^8 2108~ 3 ∗ 1 0 8 m / s 3*10^8m/s 3108m/s,也就是等于或小于光速。根据两台路由器之间的距离可以得出传播时延。

排队时延和丢包

排队时延

a a a表示分组到达队列的平均速率( a a a的单位是分组/秒,即pkt/s),传输速率是 R R R,每个分组的长度都为 L L L比特,则比特到达队列的平均速率是 L a La Labps。

假设队列非常大,能无限容纳比特,比率 L a / R La/R La/R成为流量强度(traffic intensity)。

如果流量强度大于 1 1 1,则比特到达队列的平均速率超过从该队列传输出去的速率,这时,队列趋于无限增加,排队时延将无穷大,因此,流量工程中设计系统时,流量强度不能大于 1 1 1

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

丢包

排队的容量是有限的,随着流量强度接近1,到达的分组将发现一个满的队列。由于没有地方存储这个分组,路由器将丢弃(drop)该分组,即该分组将会丢失(lost)。

端到端时延

端系统、应用程序和其他时延

除了处理时延、传输时延和传播时延,端系统中海油一些其他重要时延。

  • 希望向共享媒体传输分组的短系统可能有意地延迟它的传输,把这作为它与其他端系统共享媒体的协议的一部分;
  • 媒体分组化时延,出现在IP语音(VoIP)应用中。在VoIP中,发送方在向因特网传递分组之前必须首先用编码的数字化语音填充一个分组。这种填充一个分组的时间成为分组化时延,它可能较大,并能够影响用户噶收到的VoIP呼叫质量。

计算机网络中的吞吐量

从主机A到主机B跨越计算机网络传送一个大文件,在任何时间瞬间的瞬时吞吐量(instantaneous throughput)是主机B接收到该文件的速率(以bps计)。

如果该文件由 F F F比特组成,文件B接收到所有 F F F比特用时 T T T秒,则文件传送的平均吞吐量(average throughput)是 F / T F/T F/Tbps。

如果中间经过多段链路,如下图,则文件传输的吞吐量是 m i n { R 1 , R 2 , . . . , R N } min\{R_{1},R_{2},...,R_{N}\} min{R1,R2,...,RN}。因特网核心一般配置高速率的链路,但是吞吐量依旧由最小速率的链路决定,因此,目前因特网对吞吐量的限制因素通常是接入网。

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

如下右侧图,一般公共链路的速率会设计的很大,如果设计过小则会成为传输瓶颈,同时,如果多个用户共同使用该链路,该链路会分摊速率,用户过多时也可能造成拥堵。

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

协议层次及其服务模型

分层的体系结构

网络设计者以分层(layer)的方式组织协议以及实现这些协议的网络硬件和软件。每层通过在盖层中执行某些动作或使用直接下层的服务来提供服务(service),即服务模型(service model)。一个协议层能够用软件、硬件或两者的结合来实现。

分层的优点:

  • 模块化使更新系统组件更为容易。

分层的潜在缺点:

  • 一层可能冗余较低层的功能。比如许多协议栈在基于每段链路和基于端到端两种情况下,都提供了差错恢复;
  • 某曾的功能可能需要仅在其他某曾才出现的信息(如时间戳值),违反了层次分离的目标。

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

因特网的协议栈

综合起来,各层的所有协议被称为协议栈(protocol stack)。因特网的协议栈由5个层次组成:物理层、链路层、网络层、运输层和应用层。

应用层

应用层是网络应用程序及他们的应用层协议存留的地方。应用层协议分布在多个端系统上,而一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组,这种位于应用层的信息分组成为报文(message)。如下是一些应用层协议:

  • HTTP:提供了Web文档的请求和传送;
  • SMTP:提供了电子邮件报文的传输;
  • FTP:提供两个端系统之间的文件传送;
  • DNS:域名系统,可以将类似www.ietf.org的域名转换为IP地址。
运输层

因特网的运输层在应用程序端点之间传送应用层报文。运输层的分组成为报文段(segment)。在因特网中,有两种运输协议:

  • TCP:TCP向它的应用程序提供了面向连接的服务,这种服务包括了应用层报文向目的地的确保传递和流量控制(即发送方/接收方速率匹配)。TCP也将长报文划分为短报文,并提供拥塞控制机制,因此当网络拥塞时,源抑制其传输速率;
  • UDP:UDP协议向它的应用程序控制无连接服务。这是一种不提供不必要服务的服务,没有可靠性,没有流量控制,也没有拥塞控制。
网络层

因特网的网络层负责将称为数据报(datagram)的网络层分组从一台主机移动到另一台主机。在一台源主机中的因特网运输层协议向网络层递交运输层报文段和目的地址。网络层包含如下协议:

  • IP:IP协议定义了在数据报中的各个字段以及端系统和路由器如何作用域这些字段。IP仅有一个,所有具有网络层的因特网组件必须运行IP;
  • 路由选择协议:根据该路由将数据报从源传输到目的地。尽管网络层包括了网际协议和一些路由选择协议,但通常把它简单地成为IP层。
链路层

网络层将数据报下传给链路层,链路层沿着路径将数据报传递给下一个节点,然后链路层将数据报再上传给网络层,链路层的分组成为帧(frame)。

链路层提供的服务取决于应用于该链路的特定链路层协议。例如,某些协议基于链路提供可靠传递,从传输节点跨越一条链路到接收节点。和TCP不同,TCP是端到端的可靠交付。

由于数据报从源目的地传送通常需要经过几条链路,一个数据报可能被沿途不同链路上的不同链路层协议处理,所以玩呢个楼层将受到来自每个不同链路层协议的不同服务。

物理层

虽然链路层的任务是将整个帧从一个网络元素移动到邻近的网络元素,而物理层的任务是将该帧中的一个个比特从一个节点移动到下一个节点。在物理层的协议也是链路相关的,并且进一步与该链路的实际传输媒体相关。

OSI模型

因特网协议栈并不是唯一的协议栈,还有开放系统互连(OSI)模型。

OSI模型包含7层:应用层、表示层、会话层、运输层、网络层、数据链路层和物理层。其中5个与因特网协议栈同名的层功能大致相同,以下大致介绍表示层和会话层:

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

封装

计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

如上图所示,每层会对上一层数据进行封装,封装后的分组具有两种类型的字段:首部字段和有效载荷字段(payload field)。

  • 应用层:在发送主机端,一个应用层报文(application-layer message) M M M被传送到运输层;
  • 运输层:在最简单的情况下,运输层收取到应用层报文,在其上附加首部信息 H t H_{t} Ht构成运输层报文段(transport-layer segment),传送到网络层。该首部将被接收端的运输层使用, H t H_{t} Ht通常包含如下信息:
    • 允许接收端运输层向上向适当的应用程序交付报文的信息;
    • 让接受方能够判断报文中的比特是否在途中已经被改变的差错测位信息。
  • 网络层:网络层接受运输层报文段,附加了如源和目的端系统地址等网络层首部信息 H n H_{n} Hn,生成网络层数据报(network-layer datagram)传送到链路层;
  • 链路层:链路层收到网络层数据报,在其上附加链路层首部信息生成链路层帧(link-layer frame)传送给物理层。

面对网络的攻击

坏家伙能够经因特网将有害程序放入你的计算机中

在从因特网获取数据时,可能伴随着恶意软件(malware),这些软件可能进入并感染我们的设备。

至今为止的多数恶意软件是自我复制(self-replicationg)的,一旦它感染了一台主机,就会从那台主机寻求进入因特网上的其他主机,从而形成新的感染主机。我们的受害主机可能成为数以千计的类似受害设备网络中的一员,它们被称为僵尸网络(botnet)。

恶意软件能够以病毒或蠕虫的形式扩散:

  • 病毒(virus)是一种需要某种形式的用户交互来感染用户设备的恶意软件;
  • 蠕虫(worm)是一种无须任何明显用户交互就能进入设备的恶意软件。

坏家伙能够攻击服务器和网络基础设施

另一种宽泛类型的安全性威胁成为拒绝服务攻击(Denial-of-Service(DoS) attack)。DoS攻击使得网络、主机或其他基础设施部分不能由合法用户使用。大多数因特网DoS攻击属于下列三种类型之一:

  • 弱点攻击:这涉及向一台目标主机上运行的易受攻击的应用程序或操作系统发送制作精细的报文。如果适当顺序的多个分组发送给一个易受攻击的应用程序或操作系统,该服务器可能停止运行,或者更糟糕的是主机可能崩溃;

  • 带宽洪泛:攻击者向目标主机发送大量的分组,分组数量之多使得目标的接入链路变得拥塞,使得合法的分组无法到达服务器。

    如果某服务器的接入速率是 R R Rbps,则攻击者将需要以大约 R R Rbps的速率来产生危害。如果 R R R非常大的话,单一攻击源可能无法产生足够大的流量来伤害该服务器。此外,如果从单一源发出所有流量的话,某上有路由器就鞥狗检测出该攻击并在改流量靠近服务器之前就将其阻挡下来。

    下图显示的是分布式DoS(Distributed DoS,DDoS)中,攻击者控制多个源,并让每个源向目标猛烈发送流量。使用这种方法,遍及所有受控源的聚合流量速率需要大约 R R R的能力来使该服务陷入瘫痪。DDoS攻击通常利用数以千计的受害主机组成的僵尸网络。

    计算机网络-自顶向下方法 读书笔记 第一章:计算机网络和因特网

  • 连接洪泛:攻击者在目标主机中创建大量的半开或全开TCP连接。该主机因这些伪造的连接而陷入困境,并停止接收合法的连接。

坏家伙能够嗅探分组

在无线传输设备的附近(也可以部署在有线环境中)放置一台被动的接收机,该接收机能得到传输的每个分组的副本。记录每个流经的分组副本的被动接收机成为分组嗅探器(packet sniffer)。

坏家伙能够伪装成你信任的人

生成具有任意源地址、分组内容和目的地址的分组,然后将这个人工制作的分组传输到因特网中,因特网将忠实地将该分组转发到目的地,这一切都极为容易。

将具有虚假源地址的分组注入因特网的能力成为IP哄骗(IP spoofing),而它只是一个用户能冒充另一个用户的许多方式的一种。