第一章 计算机网络和因特网
这一章简述了计算机网络的一些概念和基础知识,比如说什么是协议、OSI(Open System Interconnection 开放式系统互联)参考模型等。看完这一章后对计算机网络有一个大体的了解,对之后的深入学习有所帮助。
因特网
因特网具体构成
公共因特网:特定的计算机网络。因特网是一个世界范围的计算机网络,它包含了许多设备,如传统的桌面PC、Linux工作站的服务器,今天有许多“新物品“加入,如智能手机、平板电脑、电视等。所有的这些设备都被称为主机(host)
或端系统(end system)
。
端系统通过通信链路(communication link)
和分组交换机(packet switch)
连接,链路的传输速率以比特/秒(bit/s)度量,当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段
,并为每段加上首部字节
,由此形成的信息包用计算机网络的术语来说称为分组(packet)
。
交换机:两种最著名的类型是路由器(router)
和链路层交换机(link-layer switch)
。它们朝着最终目的地转发分组。
从发送端系统到接受端系统,一个分组所经历的一系列通信链路和分组交互机称为通过该网络的路径(route或path)
。
端系统通过因特尔服务提供商(Internet Service Provider, ISP)
接入因特网。比如本地电缆或电话公司那样的住宅区ISP、公司ISP等,以及为智能手机和其他设备提供移动接入的蜂窝数据ISP。每个ISP自身就是一个由多台分组交换机和多段通信链路组成的网络。ISP运行着IP协议,遵从一定的命名和地址规则。
端系统、分组交换机和其他因特网不见都要运行一些列协议(protocol)
。TCP(Transmission Control Protocol, 传输控制协议
)和IP(Internet Protocol, 网际协议)
是因特网中两个最为重要的协议。
什么是协议
《计算机网络 自顶向下方法》P5 用人类活动进行类比,清晰明确。
协议定义了在两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送和/或接受一条豹纹或其他时间所采取的动作。
网络边缘
通常把与因特网相连的计算机和其他设备称为端系统。因为它们位于因特网的边缘,故而被称为端系统。包括桌面计算机、服务器和移动计算机。
端系统也成为主机(host)
,主机又被进一步分为两类:客户(client)
和服务器(server)
。Web页面和视频的服务都属于大型数据中心(data center)
。
接入网
接入网:指将端系统物理连接到其边缘路由器(edge router)
的网络。边缘路由器是端系统到任何其他远程端系统的路径上的第一台路由器。
宽带住宅接入有两种最流行的类型:数字用户线(Digital Subscriber Line, DSL)
和电缆。DSL利用电话公司现有的本地电话基础设施,而电缆因特网接入(cable Internet access)
利用了有线电视公司现有的有线电视基础设施。
新兴技术:光纤到户。
企业(和家庭)接入:以太网和WiFi
广域无线接入:3G和LTE
物理媒体:《计算机网络 自上而下方法》P13 - P15
网络核心
分组交换
在各种网络应用中,端系统彼此交换报文(message)
。为了从源端系统向目的端系统发送报文,源将长报文划分为较小的数据块,称之为分组(packet)
。每个分组都通过通信链路和分组交换机以等于该链路最大传输速率
的速度传输通过通信链路。如果某源端系统或分组交换机经过一条链路发送一个L比特的分组,链路的传输速率为R比特/秒,则传输该分组的时间为L/R秒。
存储转发传输
存储转发传输是指在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接受到整个分组。路由器接受到分组的一部分时,缓存分组的比特,当路由器接受完了该分组的所有比特后,才能开始转发该分组。
在时刻L/R,路由器开始转发第一个分组。而在时刻L/R源也开始发送第二个番组,因为它已经完成了第一个分组的完整发送。因此,在时刻2L/R,目的地已经接收到第一个分组并且路由器已经收到第二个分组。
通过由N条速率均为R的链路组成的路径,端到端时延是:d = N * L/R
排队时延和分组丢失
分组交换机具有一个输出缓存(output buffer, 也称为输出队列(output queue))
,它用于储存路由器准备发往那条链路的分组。如果到达的分组需要传输到某条链路,但发现该链路正忙于传输其他分组,该到达分组必须在输出缓存中等待。除了存储转发时延意外,分组还要承受输出缓存的排队时延(queuing delay)
。
一个到达的分组可能发现该缓存已被其他等待传输的分组完全充满了,将出现分组丢失(丢包)(packet loss)
,到达的分组或已经排队的分组之一将被丢弃。
转发表和路由选择协议
在因特网中,每个端系统具有一个称为IP地址的地址。当源主机要向目的端系统发送一个分组时,源在该分组的首部包含了目的地的IP地址。每台路由器具有一个转发表(forwarding table)
,用于将目的地址映射称为输出链路。
因特网具有一些特殊的路由选择协议(routing protocol)
,用于自动地设置这些转发表。
电路交换
通过网络链路和交换机移动数据有两种基本方法:电路交换(circuit switching)
和分组交换(packet switching)
。
电路交换:以传统的电话网络为例子,在发送方能够发送信息之前,该网络必须在发送方和接收方之间建立一条连接。这是一个名副其实
的连接,因为此时沿着发送方和接收方之间路径上的交换机都将为该链接维护连接状态。用电话的术语来说,该连接被称为一条电路(circuit)
。
电路交换网络在两台主机之间创建一条专用的端到端连接(end-to-end connection)
。
两个分组使用同一条链路将会出现阻塞情况,较晚的分组进入缓存,产生时延。
电路交换网络中的复用
频分复用(FDM)
或时分复用(TDM)
频段宽度称为带宽(band-width)
。
这部分内容在《计算机网络 自顶向下方法》P20,讲得很详细
分组交换与电路交换的对比
分组交换的性能优于电路交换:1.它提供了比电路交换更好的带宽共享;2.它比电路交换更简单、更有效,实现成本更低。3.分组交换按需分配链路使用,链路传输能力将在所有需要在链路上传输分组的用户之间逐分组地被共享。
网络的网络
网络结构1:单一的全球传输ISP互联所有接入ISP。接入ISP被认为是客户(customer)
,全球传输ISP被认为是提供商(provider)
。
网络结构2:两层等级结构,全球传输提供商位于顶层,而接入ISP位于底层。在任何给定的区域,可能有一个区域ISP(regional ISP)
,每个区域ISP与第一层ISP(tier-1 ISP)
连接。第一层ISP类似于我们假象的全球传输ISP。
另外还有多个竞争的第一层ISP。较小的区域ISP与较大的区域ISP相连,还有省级ISP与国家级ISP,因此又有了网络结构3。
网络结构3:增加了存在点(Point of Presence, PoP)
、多宿
、对等
和因特网交换点
。PoP存在于等级结构的所有层次,但底层(接入ISP)等级除外。任何ISP(除了第一层ISP)可以选择多宿(multi-home)
,既可以与两个区域ISP多宿,也可以与一个第一层ISP多宿。当一个ISP多宿时,即使它的提供商之一出现故障,他仍然能够继续发送和接收分组。
位于相同等级结构层次的邻近一对ISP能够对等(peer)
,能够直接将它们的网络连到一起,使它们之间的所有流量经直接连接而不是通过上游的中间ISP传输。
第三方公司可以创建一个因特网交换点(Internet Exchange Point, IXP)
。IXP是一个汇合点,多个ISP能够在这里一起对等。
网络结构4:由接入ISP、区域ISP、第一层ISP、PoP、多宿、对等和IXP组成的生态系统。
网络结构5:描述了现在的因特网,通过在网络结构4顶部增加内容提供商网络(content provider network)
构建而成。
分组交换网中的时延、丢包和吞吐量(重点)
这一节推荐从《计算机网络 自顶向下方法》P24也开始看
吞吐量
:每秒能够传送的数据量
分组交换网中的时延概述
分组从主机(源)出发,经过一系列路由器传输,到达另一台主机(目的地)。当分组从一个节点(主机或路由器)沿着这条路径到后继节点,该分组在沿途的每个节点经受了几种不同类型的时延。最重要的是节点处理时延(nodal processing delay)
、排队时延(queuing delay)
、传输时延(transmission delay)
和传播时延(propagation delay)
,这些时延总体累加起来是节点总时延(total nodal delay)
。
时延的类型
1.处理时延:检查分组首部和决定该分组导向何处所需要的时间、检查比特级别的差错所需要的时间。
2.排队时延:在队列中,该分组在链路上等待传输时,它经受排队时延。
3.传输时延:假定分组已先到先服务方式传输,仅当所有已经到达的分组被传输后,才能传输刚到达的分组。用L比特表示该分组的长度,用R bps(b/s)表示从路由器A到路由器B的链路传输速率。传输时延是L/R。这是将所有分组的比特推向链路所需要的时间。
4.传播时延:一旦一个比特被推向链路被推向链路,该比特需要向路由器B传播。从该链路的起点到路由器B传播所需要的时间是传播时延。
节点总时延 = 处理时延 + 排队时延 + 传输时延 + 传播时延
排队时延和丢包
排队时延很大程度取决于流量到达该队列的速率、链路的传输速率和到达流量的性质,即流量是周期性到达还是以突发形式到达。
令a
表示分组到达队列的平均速率(分组/s, pkt/s),R
是传输速率(bps/s),假定所有分组都是由L
比特组成,则比特到达队列的平均速率是La
bps。假定该队列能容纳无限数量的比特。比率La/R
被称为流量强度(traffic intensity)
。如果La/R > 1,则比特到达队列的平均速率超过从该队列传输出去的速率,在这种情况下该队列趋向于无限增加,排队时延将趋向于无穷大。
设计系统时流量强度不能大于1
La/R <= 1时,到达流量的性质影响排队时延。如果分组时周期性到达,即每L/R秒到达一个分组,则没有排队时延。如果分组以突发形式到达,则可能会有很大的平均排队时延。
丢包
上述讨论假设队列能容纳无穷多分组,但是事实上排队容量是有限的,随着流量强度接近1,排队时延并不真正趋向无穷大。相反,到达的分组将发现一个满的队列。由于没有地方存储这个分组,路由器将丢弃(drop)
该分组,即该分组将会丢失(lost)
。
端到端时延
端到端时延 = N(传播时延 + 传输时延 + 处理时延)
计算机网络中的吞吐量
《计算机网络 自顶向下方法》P30 例子讲得很细致
协议层次及其服务模型(重要)
分层的体系结构
利用分层的体系结构,我们可以讨论一个大而复杂系统的定义良好的特定部分。
协议分层
网络设计者以分层(layer)
的方式组织协议以及实现这些协议的网络硬件和软件。各层的所有协议被称为协议栈(protocol stack)
。因特网的协议栈有五个层次组成:物理层、链路层、网络层、运输层和应用层。采用自顶向下方法我们首先处理应用层,然后向下进行处理。
1.应用层
应用层时网络应用程序及它们的应用层协议存留的地方。因特网的应用层包括许多协议,例如HTTP(提供了Web文档的请求和传送)
、SMTP(提供了电子邮件报文的传输)
和FTP(提供两个端系统之间的文件传送)
。
应用层协议分布在多个端系统上,而一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组,称为报文(message)
。
2.运输层
因特网的运输层在应用程序端点之间传送应用层报文。两种传输协议:TCP
和UDP
。TCP提供面向连接服务,确保传递和流量控制,它将长报文划分为短报文,并提供拥塞控制机制。UDP提供无连接服务,没有可靠性、流量控制、拥塞控制。运输层的分组称为报文段(segment)
。
3.网络层
网络层负责将称为数据报(datagram)
的网络层分组从一台主机移动到另一台主机。网络层包括著名的网际协议IP
。所有具有网络层的因特网组件必须运行IP。因特网还具有许多路由选择协议。通常把网络层简单地称为IP层。
4.链路层
为了将分组从一个节点(主机或路由器)移动到路径上的下一个节点,网络层必须依靠该链路层的服务。由链路层提供的服务取决于应用于该链路的特定链路层协议。链路层的例子包括以太网、WiFi和电缆接入网的DOCSIS协议。我们把链路层分组称为帧(frame)
。
5.物理层
物理层的任务将链路层分组(帧)中的一个个比特从一个节点移动到下一个节点。在这层中的协议仍然是链路链路相关的,并且进一步于该链路(例如,双绞铜线、单模光纤)的实际传输媒体有关。
OSI模型
七层模型:应用层、表示层、会话层、运输层、网络层、链路层、物理层。
封装
封装(encapsulation)
:在发送主机端,一个应用层报文(application-layer message)
被传送给运输层,运输层收取到报文并附上运输层首部信息,该首部将被接受端的运输层使用。应用层报文和运输层首部信息一起构成运输层报文端(transport-layer segment)
。运输层报文因此封装了应用层报文。运输层向网络层传递该报文段,网络层增加了如源和目的端系统地址等网络层首部信息,生成了网络层数据报(network-layer datagram)
。该数据报接下来被传递给链路层,链路层增加它自己的链路层首部信息并声称链路层帧(link-layer frame)
。我们看到在每一层,一个分组具有两种类型字段:首部字段和有效载荷字段(payload field)
。有效载荷字段通常是来自上一层的分组。
面对攻击的网络
病毒、蠕虫、僵尸网络等
弱点攻击、带宽洪泛、连接洪泛
嗅探分组、IP哄骗