一、因特网
什么是因特网?对于该问题可以从两个角度回答:
一是从描述因特网的具体构成(基本硬件、软件组件) 来回答二是作为为分布式应用提供服务的联网基础设施来回答1. 具体构成
主机/端系统:所有连接到因特网的设备,包括传统的桌面PC、Linux工作站以及服务器等,以及非传统的智能手机、电脑、电视等通信链路和分组交换机:端系统之间通过通信链路和分组交换机彼此相连 通信链路:有不同的物理媒体构成,包括同轴电缆、铜线、光纤和无线电频谱传输速率:通信链路速率传输数据的速度,单位是比特/秒分组:实际传输数据时,发送端需要将数据分段,为每段加上首段字节,称为分组分组交换机:从入通信链路接收分组,转发到处通信链路 ,最典型的有路由器和链路交换机两种 链路层通常用于接入网中,而路由器通常用于网络核心中 从发送端到接收端,一个分组所经历的一些列通信链路和分组交换机称为通过该网络的路径 因特网服务提供商(ISP):端系统通过因特网服务提供商接入因特网 每个ISP自身就是一个由多台分组交换机和多段通信链路组成的网络ISP也是彼此互联,较低层的ISP通过国家的、国际的较高层ISP互联,较高层的ISP由高速光纤链路互联的高速路由器组成 协议:因特网中的部件(端系统、分组交换器和其他部件)之间的信息接收和发送由协议控制 协议定义了两个或者多个通信实体之间交换报文的格式和顺序,以及报文发送和/或接收到一条报文或其他事件所采取的动作 因特网标准:标准化各个协议以及其作用,由因特网工程任务组(IETF)研发,IETF的标准文档称为请求评论(RFC)2. 服务描述
分布式应用程序:涉及多个交换数据的端系统的应用程序,包括电子邮件、Web冲浪、即时通信、在线社交网络等, 分布式应用程序运行在端系统上,并不运行在网络核心的分组交换机中因特网是分布式应用程序的平台端系统上的应用程序通过因特网提供的套接字接口向运行在另一个端系统上的应用程序发送数据 套接字接口:一套发送程序必须遵循的规则集合,由此因特网能够将数据交付给目的地。二、网络边缘
1. 端系统
如前所述,端系统,也即主机,是所有连接到因特网的设备。
主机也被进一步划分为客户和服务器
客户:通常是桌面PC、移动PC和智能手机等服务器:通常是更为强大的及其,用于存储和发布Web页面、刘视屏、中继电子邮件等 今天大部分的服务器都属于大型的数据中心2. 接入网
接入网是将端系统连接到边缘路由器的网络
边缘路由器是端系统到任何其他远程端系统的路径上的第一台路由器
2.1. 家庭接入
A. 数字用户线(DSL)
用户的本地电话公司是ISPDSL接入包括的核心组件有:DSL调制解调器、分配器、用户线路接入复用器(DSLAM)单根DSL线路同时承载数据和电话信号,它们以不同的频率进行编码(高速下行信号–50kHz到1MHz,中速上行信道–4kHz到50kHz,双向电话信道–0到4kHz)DSL调制解调器通过现有的电话线(双绞铜线)与DSLAM交换数据用户侧,分配器将到达的数据信号和电话信号分隔开,将数据信号转发给DSL调制解调器中心侧,DSLAM将数据和电话信号分隔开,将数据送往因特网B. 电缆
基于有线电视公司现有的有线电视基础设施光缆将电缆头端连接到地区枢纽,之后使用同轴电缆到达各家各户,由于同时应用光缆和同轴电缆,称为混合光纤同轴系统(HFC)电缆接入包括的核心组件有:电缆调制解调器、电缆调制解调器端接系统(CMTS)电缆调制解调器类似DSL调制解调器,通过一个以太网端口连接到家庭PC,同时将HFC网络分为下行和上行两个信道CMTS类似DSLAM,将电缆调制解调器发送的模拟信号转换为数字信号共享广播媒体:由头端发送的每个分组向下行经每段链路到每个家庭,每个家庭发送的每个分组经上行信道向头端传输C. 光纤到户(FTTH)
从本地中心直接到家庭提供一条光纤路径最简单的方案是从本地中心到每户设置一根光纤,更为一般的是,从中心局出来的每根光纤有许多家庭共享,直到接近家庭的位置才分成每户一根 代表性地方案有:有源光纤网络(AON)和无源光纤网络(PON),AON本质上就是交换以太网 PON中的核心组件有:光纤网络端接器(ONT)、光纤分配器、光纤线路端接器(OLT)每个家庭有一个ONT,由专门的光纤连接到附近的分配器分配器将一些家庭集结到一根共享的光纤,并连接到中心局的OLTOLT提供光信号和电信号的转换D. 卫星链路
无法提供DSL、电缆和FTTH的地方,可以使用卫星链路将住宅以超过1Mbps的速率与因特网相连
E. 电话拨号
与DSL类似,家庭的调制解调器通过电话线连接到ISP的调制解调器,但是接入速率仅有56kbps。
2.2. 企业(和家庭)接入
A. 局域网(LAN)
尽管有很多类型的局域网技术,但以太网是目前最为流行的局域网技术用户使用双绞铜线与一台以太网交换机相连,以太网交换机或这样相连的交换机网络,再与更大的因特网相连B. 无线局域网
用户从/到一个接入点发送/接收分组,该接入点与企业网相连(很可能使用了有线以太网),企业网再与有线因特网相连用户必须位于接入点的几十米范围内基于IEEE 802.11技术的无先LAN接入,俗称WiFi2.3. 广域无线接入
应用无线基础设施,通过基站来发送和接受分组,用户仅需要位于基站的数万米范围内第三代(3G)无线技术为广域无线接入提供了超过1Mbps的速率LTE来源于3G技术,能够取得超过10Mbps的速率3. 物理媒体
常见的物理媒体包括:双绞铜线、同轴电缆、多模光纤缆、陆地无线电频谱和卫星无线电频谱
物理媒体又分为两大类:引导型媒体和非引导性媒体
3.1. 双绞电缆
最常用于电话网,DSL接入、拨号接入中也有使用双绞线由两根绝缘的铜线组成,每根大约1mm粗,以规则螺旋状排列许多根双绞线捆扎在一起形成一根电缆,并在这些双绞线外面覆盖上保护性防护层无屏蔽双绞线(UTP)常用于局域网中,数据传输速率从10Mbps到10Gbps。双绞线已作为高速LAN联网的主导性解决方案3.2. 同轴电缆
由两个铜导体组成,但这两个铜导体是同心的同轴电缆在电缆电视系统和电缆因特网接入中相当普遍同轴电缆能被用作引导型共享媒体,许多端系统能够直接与该电缆相连,每个端系统都能接收由其他端系统发送的内容3.3. 光纤
一种细而柔软的、能够引导光脉冲的媒体。支持极高的比特速率,不受电磁干扰,适合作为长途引导型传输媒体由于成本的高昂,光纤不适用短途传输3.4. 陆地无线电信道
承载电磁频谱中的信号,传输特性依赖于传播环境和信号传输的距离可以划分为三类:一类运行在很短距离,如1到2米(头戴耳机、键盘);一类运行在局域,跨越几十到几百米(无线LAN技术);一类运行在广域,跨越数万米(广域无线接入)。3.5. 卫星无线电信道
一颗卫星连接地球上的两个或多个微波发射器/接收器(称为地面站)。该卫星在一个频段上接收传输,使用一个转发器再生信号,在另一个频道上发射信号通信卫星分为:同步卫星和近地轨道卫星 同步卫星相对地球静止,传输时延较长近地轨道卫星靠近地球,彼此之间进行通信,也可以与地面站通信。对一个区域的覆盖需要放置许多近地轨道卫星。三、网络核心
网络核心是由互联因特网端系统的分组交换器和链路构成的网状网络
通过分组交换机和网络链路移动数据的方法有两种:电路交换和分组交换
1. 分组交换
1.1. 基本概念
网络应用中,端系统彼此交换的信息,称为报文。保温包含协议设计者需要的任何东西,可以是一种控制功能,也可以包含数据源端系统向目的端系统发送报文,会将长报文划分为小的数据块,称为分组1.2. 存储转发传输
交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收到整个分组考虑一个L比特的分组,通过N条速率均为R的链路组成的路径(包含N-1个路由器),从源到目的地的时延为:d = NL/R(这里对应的是后面的传输时延)1.3. 排队时延和分组丢失
每台分组交换机有多条链路与之相连,对每条相连的链路,该分组交换机都有一个输出缓存(又称为输出队列)。当某条链路正忙于传输其他分组,到达的分组需要在该链路对应的输出队列中等待,由此产生排队时延当到达的分组发现链路对应的输出队列已经满了,该分组或者已经排队的分组之一将会被丢弃,称为分组丢失(丢包)1.4. 转发和路由选择协议
由于一个分组交换对应多条链路,对于到达的分组,需要确定好该分组实际要向哪一条链路进行转发对于因特网,每个端系统含有一个IP地址,源主机向目的地端系统发送一个分组时,会在该分组的首部包含目的地的IP地址,路由器会根据IP地址确定向哪一条链路准发每台路由器会有一个转发表,用于将目的地址(或目的地址的一部分)映射为输出链路因特网有一些特殊的路由选择协议,用于自动地设置转发表,而不是人工手动配置2. 电路交换
2.1. 基本概念
电路交换网络中,端系统间通信会话期间,预留了端系统间沿路径通信所需要的资源(缓存,链路传输速率)传统的电话网络,就是电路交换网络的一个例子。发送方能够发送消息之前,该网络必须在发送方和接收方之间建立一条连接,发送方到接收方路径上的交换机都将为该连接维护连接状态,该连接称为一条电路2.2. 复用
电路是通过频分复用(FDM)或时分复用(TDM)实现的频分复用:链路的频谱由跨越链路的所有连接共享,在连接期间为每条连接专用一个频段,该频段的宽度称为带宽时分复用:时间被划分为固定期间的帧,每个帧又被划分为固定数量的时隙,当创建一条连接时,网络在每个帧中为该连接指定一个时隙2.3. 分组交换 vs 电路交换
分组交换: 提供了比电路交换更好的带宽共享比电路交换更简单、有效,实现成本更低存在排队时延和分组丢失的问题 电路交换 静默期专用电路空闲,不够经济创建端到端电路和预留端到端带宽十分复杂,需要复杂的信令软件以及协调端到端路径的交换机的操作不存在排队时延和分组丢失的问题 相比而言,分组交换的性能更优,且大趋势是向着分组交换发展,今天的电话网也在向着分组交换迁移。3. 网络的网络
端系统是通过一个接入ISP与因特网相连的,而接入ISP自身也必须要互联,而通过构建网络的网络可以实现这一点。
构建网络的网络,对应的方案也是在不断优化的。
3.1. 简单方案
每个接入ISP直接与每个其他接入ISP连接。费用太高3.3. 网络结构1
用单一的全球传输ISP互联所有接入ISP假想的全球传输ISP是一个由路由器和通信链路构成的网络,每个接入ISP向全球ISP交费。接入ISP是客户,全球ISP是提供商费用还是太高,建造满足要求的全球ISP耗资巨大3.3. 网络结构2
包含数十万的接入ISP和多个全球传输ISP,全球ISP之间彼此互连。接入ISP可以在多个全球ISP之间选择对于全球ISP的要求还是过高,实现难度太大3.4. 网络结构3
在给定区域有一个区域ISP,区域中的接入ISP与之相连,每个区域ISP又与第一层ISP相连,而第一层ISP彼此互连某些区域,可能有更大的区域ISP,该区域内较小的区域ISP与之相连,较大的区域ISP再与第一层ISP相连。如中国,每个城市有接入ISP,它们与省级ISP相连,省级ISP由于国家级ISP相连,国际级ISP最终与第一层ISP相连3.5. 网络结构4
在网络结构3的基础上,增加存在点(PoP)、多宿、对等和因特网交换点存在点(PoP):存在于除底层(接入ISP)之外的所有层级。一个PoP只是提供商网络中的一台或者多台路由器群组,其中客户ISP能够直接与提供商ISP相连。对于要与提供商PoP连接的客户网络,它能从第三方电信提供商租用高速链路将它的路由器之一直接连接到位于该PoP的一台交换机多宿:客户ISP可以与两个或者更多提供商ISP连接对等:位于相同等级结构层次的邻近一对ISP可以对等,即直接将它们的网络连到一起。当两个ISP对等时,不进行结算因特网交换点(IXP):IXP是一个汇合点,多个ISP能够在这里一起对等3.6. 网络结构5
增加了内容提供商,是当今的因特网现状以谷歌为例,该公司包含了数十个数据中心,这些数据中心经过专用的TCP/IP网络互联,该网络跨越全球,但独立于因特网,仅承载出入谷歌服务器的流量谷歌专用网络与低等的ISP对等(直连或者在IXP处对等),也与第一层ISP连接,并就交换的流量进行付费四、分组交换网的时延、丢包和吞吐量
1. 时延
以上图为例,路由器A到路由器B之间的时延包括:处理时延、排队时延、传输时延和传播时延处理时延:包含检查分组首部和决定将该分组导向何处所需要的时间,同时也包含其他因素,如检查比特级别的差错所需要的时间排队时延:在队列中,当分组在链路上等待传输时,会有排队时延传输时延:仅当前一个完整分组被全部传输后,才能传输后一个的完整分组。以长度为L比特的分组,路由器A到路由器B的链路传输速率为R比特/秒,传输时延为L/R传播时延:两台路由器之间的距离除以传播速率,传播速率取决于链路的物理媒体传输时延 vs 传播时延 传输时延是路由器推出分组所需要的时间,是分组长度和链路传播速率的函数,与路由器之间的距离无关传输时延是一个比特从一台路由器传播另一台路由器所需要的时间,是路由器之间距离的函数没有分组长度、链路传播速率无关 总时延d_nodal = 处理时延d_proc + 排队时延d_queue + 传输时延d_trans + 传播时延d_prop2. 排队时延和丢包
排队时延对不同的分组可能是不同的,如10个分组同时到达队列,第一个分组没有排队时延,而最后一个分组的排队时延最大,因此常常用平均排队时延、排队时延的方差和排队时延超过特定值的概率来度量如果a表示分组到达队列的平均速度率,单位是分组/秒;R表示传输速率,单位是比特/秒;L表示分组的长度。则La/R称为流量强度。排队时延与流量强度有很大关系当La/R > 1时,比特到达队列的平均速度率超过从该队列传输出去的速率,假设队列长度不受限制,则队列长度无限增大,排队时延趋于无穷大当La/R <= 1时,假设队列长度不受限制,达到流量的性质影响排队时延。 分组周期性到达,如每L/R秒到达一个分组,则不会有排队时延分组突发到大,如每NL/R秒同时到达N个分组,则会产生排队时延实际情况分组是随机到达的,流量强度不足以全面表征时延,但是随着流量强度接近1,平均排队时延迅速增加实际中队列长度有限,随着流量强度接近1,排队时延不会无限趋近无穷大,而是会对分组进行丢弃,且分组丢失的比例随着流量强度增加而增加
3. 端到端时延
前述讨论仅限于单台路由器的时延。实际端到端的路径更复杂,假设在源主机和目标主机之间有N-1台路由器,同时网络中无拥塞(排队时延可忽略),则端到端时延可以表示为:d_end-end = N(d_proc + d_trans + d_prop)端到端之间还有一些其他重要时延 向共享媒体传输分组的端系统可能有意地延迟传输媒体分组时延:IP语音中,发送方在传递分组前必须首先用编码的数字化语音填充一个分组4. 吞吐量
瞬时吞吐量:主机实时接收到文件的速率平均吞吐量:主机接收到F比特的文件,耗时Ts,平均吞吐量为F/T服务端到客户端之间有N条链路的网络,N条链路的传输速率分别为R1, R2, …, RN,则文件传输吞吐量为min{R1, R2, …, RN}在没有其他干扰流量时,吞吐量能够近似为沿着源和目的地之间路径的最小传输速率。如服务器传输速率为Rs,客户端传输速率为Rc,在网络核心速率非常高的情况下,吞吐量为min{Rs, Rc}在有干扰流量时,吞吐量还取决于干扰流量。如10个传输速率传输速率都是Rs,10个客户端都是Rc,网络核心中除了速率为R的一条共同链路外的所有链路都比Rs、Rc和R大得多。在R与Rs、Rc相同量级的情况下,可能会有吞吐量只能达到R/10的情况
五、协议分层及其服务模型
1. 分层的体系结构
为什么采用分层?
利用分层,可以更好地讨论一个大而复杂的系统中定义良好的特定部分分层架构下,每一层对其上的层提供相同的服务,并且使用下面层次的服务,当某层的实现变化时,系统的其它层保持不变1.1. 协议分层
为了给网络协议的设计者提供一个结构,网络设计者以分层的方式组织协议以及实现这些协议的网络硬件和软件一个协议层能够用软件、硬件或者两者相结合的方式实现 HTTP和SMTP协议层几乎总是在端系统中用软件实现物理层和数据链路层常在给定链路相关联的网络接口卡中实现网络层是硬件和软件实现的结合体 分层的缺点: 每一层可能了冗余较低层的功能某层的功能可能需要仅在其它层才出现的信息,违反层次分离的目标 各层协议统称为协议栈,因特网的协议栈包括:物理层、链路层、网络层、运输层、应用层应用层
网络应用程序以及它们的应用层协议存留的地方,包括:HTTP、SMTP、FTP等应用层协议分布在多个端系统上,端系统中的应用程序使用协议与另一个端系统交换分组,该分组称为报文运输层
运输层在应用程序端点之间传输应用层报文,包括:TCP和UDP两种运输层传输的分组称为报文段网络层
网络层传输的分组称为数据报网络层负责将数据报从一台主机移动到另一台主机链路层
链路层传输的分组称为帧链路层负责将整个帧从一个网络元素移动到临近的网络元素物理层
将链路层的帧中的一个一个比特从一个节点移动到下一个节点1.2. OSI模型
20世纪70年代后期,国际标准化组织(ISO)提出计算机网络围绕7层来组织,称为开发系统互联(OSI)模型OSI模型包括:应用层、表示层、会话层、运输层、网络层、链路层、物理层这7层。 表示层:用于使通信的应用程序能够理解交换数据的含义,提供数据压缩、数据加密和数据描述等功能会话层:提供数据交换的定界和同步功能,包括检查点和恢复方案的方法 因特网缺少了OSI模型中的两个层次,如果一个应用程序需要这些服务,需要应用程序开发者处理2. 封装
端系统、分组交换器实现的网络分层各不相同 链路交换器实现了第一层和第二层路由器实现了第一层到第三层主机实现了所有五层 封装:在分层中的每一层,一个分组具有两种类型的字段:首部字段和有效载荷字段。有效载荷字段通常来自上一层的分组。 应用层报文被传送给运输层,运输层收到后附上附加信息,应用层报文和运输层首部信息构成运输层报文段运输层报文被传送给网络层,网络层增加如源和目的端系统地址等网络首部信息,构成网络层数据报数据报被传送给链路层,链路层增加自己的首部信息生成链路层帧实际的封装中,上一层分组会被拆分成更多更小的当前层分组,接收端需要再进行重构六、网络攻击
因特网最初就是基于"一群相互信任的用户连接到一个透明的网络上"这样的模型进行设计的,这种模型中安全性是没有必要的。