资讯详情

《计算机网络:自顶向下方法》阅读笔记

第一章 计算机网络和因特网   1.1 什么是因特网? 我们可以从两个角度来回答这个问题:一个是描述其组成的软硬组件;另一个是根据为分布式应用程序提供网络服务的基础设施来描述。事实上,第一个角度是从它的组成来描述,第二个角度是从它的功能来描述1.1.1 具体构成描述 因特网是一个连接数亿计算机设备的世界计算机网络(包括PC、服务器、电视、汽车等。这些连接到因特网的设备被称为主机或端系统。 以下是一些关键概念: 端系统通过通信链路与分组交换机连接。 不同类型的通信链路由不同的物理媒介(同轴电缆、铜线等)组成,以不同的速度传输数据,单位为比特/秒(bit/s,bps)。  在端系统之间收发数据时,发送端系统将数据分段,每段加上第一个字节形成新的数据包,称为分组。==用户数据 第一个字节;链路系统传输分组;分组到达接收端系统后,接收端系统将根据第一个字节提取用户数据组装成初始数据; 分组交换机从一个进入通信链接收分组,并选择一个进出通信链接转发分组;分组交换机有很多种,最著名的是路由器和链路层交换机;两者的区别在于,链路层交换机主要用于接入网络,网络核心主要采用路由器。从发送端到接收端的通信链路和分组交换机称为路径。从发送端到接收端的通信链路和分组交换机称为路径。 通过因特网服务提供商提供终端系统(Internet Service Provider,简称ISP)接入因特网,包括当地电缆和住宅区ISP、公司ISP等不同的ISP它们是由多个交换机和通信链路组成的网络,提供不同类型的网络接入。 上述端系统、交换机等因特网部件均遵循一系列协议:TCP(Transport Control Protocol,传输控制协议)和IP(Internet Protocol,网络协议:定义路由器与端系统之间收发数据的分组格式);由于协议控制了信息的传输,因此协议达成协议非常重要,因此需要一个标准来规范协议,以创建一个可以协同工作的系统和产品  1.1.2 服务描述 互联网也可以从为应用程序提供服务的基础设施的角度来描述。电子邮件,web、游戏等分布式应用涉及多个交换数据的端系统。端系统提供应用程序编程接口(API),它规定了一个应用程序要求将数据交付到另一端的应用程序(就像填写地址和邮票一样)。此时,互联网提供了相应的服务要求。1.1.3 协议 协议是如何使用第一个字节来理解用户数据的方法和规则;在收到分组并根据协议获取用户数据后,分组接收者也应该对消息做出反应,如何做出反应也是协议规范的一部分(不反应也是一种反应) 协议:它定义了两个或多个通信实体之间交换信息的格式和顺序(不一定是端系统,也可能是分组交换机等),以及对信息采取的行动。 通信实体的所有活动都受到协议的限制。例如,硬件控制协议控制了两张网卡之间的比特流;在端系统中,拥塞控制协议控制了发送人和接收人之间传输数据的速度1.2 网络边缘 端系统:与因特网相连的计算设备,往往处于网络的边缘 端系统分类:客户和服务器1.2.1 接入网 接入网络:将端系统连接到边缘路由器的物理链路 边缘路由器:指端系统到任何其他远程端系统路径的第一个路由器   DSL(Digital Subscribe Line)数字用户线 这是一种接入宽带住宅的方法ISP是本地电话公司。通信链路的物理材料是电话线,是双绞线。 用户使用DSL通过电话线和ISP数字用户线接入复用器(DSLAM)交换数据;家庭DSL调制调制器将数字数据转换为高频音,然后通过电话线传输到ISP并通过中心DSL解调器将DSLAM发送的模拟信号转换为数字信号; CIC(Cable Internet Access)因特网接入电缆 这是宽带住宅的另一种接入方式ISP是有线电视公司。光纤和同轴电缆也被称为混合光纤同轴电缆(Hybrid Fiber Coax HFC); 用户使用电缆调制解调器通过同轴电缆与光纤结点相连,光纤结点通过光缆与电缆头端相连,而电缆头端接入了因特网。电缆调制解调器端接系统在电缆头端(Cable Modem Termination System)起到DSLAM实现模拟信号和数字信号的转换; FTTH(Fiber TO The Home)光纤到户 这里主要指光纤作为通信链路的材料,有两种竞争性的光纤分布方案,一种是主动光纤网络(Active Optical Network),另一种是被动光纤网络(Passive Optical Network).主要区别在于光纤在传输数据时是否共享。 以太网和WIFI 以太网接入是公司、大学和家庭中非常流行的接入方式;用户使用双绞线连接到以太网交换机,以便访问因特网;以太网交换机的速度100Mbps; 在无线局域网中,无线用户从接入点发送和接收数据,连接到企业网络,企业网络最终接入因特网络;在无线LAN用户需要在接入点的几十米范围内; 广域无线接入 在移动设备中,通过蜂窝网提供商运营的基站发送和接收分组WIFI不同的是,用户只需要位于基站数万米范围内;1.2.2 物理媒体 传输媒体是通信链接的主要组成部分,物理媒体通常可以分为指导媒体和非指导媒体;指导媒体,信号沿固体前进;而不是指导媒体,信号沿固体媒体前进 值得注意的是,建立传输媒体的人工成本远高于物理材料 双绞线 由两条相互螺旋缠绕的铜线组成的最便宜的引导传输媒体。目前,局域网中的双绞线数据传输速率是10Mbps到10Gbps数据传输速率取决于线的厚度和传输距离;双绞线实际上已成为高速局域网络的主要方式;因为现代双绞线技术速率和传输距离很好; 同轴电缆 它们也由两个铜导体组成,但它们是同心的,而不是平行的;借助特殊的结构和绝缘层,同轴电缆可获得较高的数据传输速率;广泛应用于电视系统;同轴电缆可作为指导共享媒体; 光纤 一种能引导光脉冲的媒体 陆地无线电信道 无线电信道承载电磁频谱中的信号,不需要物理线路,提供与移动用户的连接和长距离承载信号;是一种吸引人的媒体; 卫星无线电信道 卫星在地球上连接两个或两个以上的微波发射器(也称为地面站),在一个频段接收信号,在另一个频段发送信号;同步卫星和近地轨道卫星;1.3 网络核心 网络核心是由互联因特网端系统的分组交换机和链路组成的网络网络 有两种基本方法:电路交换和分组交换1.3.1 分组交换 报纸执行控制功能或包含数据。端系统将报纸划分为小块数据,即分组。 分组通过通信链路和分组交换机传输。 通信链路上的分组等于通过通信链路传输链路的最大传输速率。因此,如果链路的最大传输速率是Rbps,如果分组为L比特,传输分组的时间为L/R秒;此时又称传输延迟。 存储转发机制是分组交换的常见方式。 存储转发 大多数分组交换机采用存储转发机制转发分组; 存储转发是指交换机缓存收到的部分组,直到收到一个完整的分组,将分组传输到出链路。 时间费用被称为存储转发延迟,因为缓存等待一个组的所有数据。 忽略传播延迟的延迟:d=(N P)L/R  (N条链路,P个分组)
排队时延与分组丢失
每个分组交换器都有一个输出缓存,存储路由器准备发往那条链路的分组。如果该链路被占用就会发生缓存等待,等待的时间称为排队时延。时延取决于拥塞程度。


转发表与路由选择协议
        分组交换机之所以能够知道分组往哪去是因为其内部有一个转发表,这个表维护了IP地址和链路的对应关系,所以处理流程为:
通过分组的首部字节,获得目的端系统的IP地址;通过IP地址索引转发表,从而确定输出链路。1.3.2 电路交换
在电路交换网络中,端系统通信会话期间,交换机会预留端系统间通信路径上的相关资源(缓存,链路传输速率),即先建立连接,然后通信。传统的电话网络就是电路交换网络的例子。
电路交换网络中的复用
时分复用(Time-Division Multiplexing TDM):是指将时间划分为固定区间的帧,每个帧则又被划分为固定数量的时间空隙;当网络需要建立一条连接时,网络将在每个帧中为该连接指定一个时隙;在该时隙内,链路用来传输该链接的数据;
频分复用(Frequency-Division Multiplexing):将频率域划分为频段,然后将频段分配给连接;此频段被用来专门传输链接的数据。该频段的宽度称为带宽。
TDM传输速率=帧速率(每秒传多少帧)×每个帧中的比特数量  或总比特速率/时隙数1.3.3 分组交换和电路交换的对比
分组交换的优点:

    它提供了比电路交换更好的带宽共享;
    它比电路交换更简单、更有效、实现成本更低;
分组交换的缺点:
    分组交换不适合实时服务,因为端到端的时延是可变、不可预测的,这和整个网络的情况相关;
电路交换的优点:
    提供了端对端传输数据的速率保证;
电路交换的缺点:

    电路交换存在静默期,这是指专用电路空闲时,其占用的资源并没有得到充分的利用;
    建立连接的过程比较复杂;

总体上来说,分组交换的性能要好于电路交换的性能,但是不同类型的分组交换方式有不同的应用场景;比如一些对最低速率有着严格要求的应用,比如实时服务等,为了获得速率保证,牺牲网络的效率也是可以接受的。趋势向着分组交换发展
网络的网络1.3.4 网络的网络
不得不说,因特网是一个庞大而复杂的系统,但是我们仍然有办法描述它(我们不是已经这么做过了吗?),但是我们需要一个模型来刻画因特网的结构;该用什么样的结构来刻画因特网呢?我想,最普遍的说法就是:因特网是网络的网络。但是这一说法足够精炼的同时也不够明确。更重要的是,我们可以选择更明确的方法来刻画因特网;书中通过5个模型不断过渡到最终模型,其实过渡的过程就结构不断合理、连接方式不断明确的过程。
我们在什么是因特网 一节中介绍ISP,端系统是通过ISP接入因特网的,为了实现端系统的互联,ISP也必须互联,其实网络模型就是用来表达ISP和端系统以及ISP之间的结构的抽象;
网络结构1:存在唯一的全球承载ISP互联所有的接入ISP,这是指,全球ISP是一个又路由器和通信链路构成的网络,该网络跨越全球,并且其他的接入ISP都至少和一个它的路由器相连;
网络结构2:存在多个全球承载ISP,它们分别于一部分的接入ISP互联;为了实现端系统的互联,这多个全球ISP也必须互联;网络结构是一个两层结构,其中全球承载ISP位于顶层,接入ISP处于底层;
网络结构3:顶层全球承载ISP基本上已经定型,但是接入ISP现在还很混乱,比如,它们直接同顶层ISP相连;而网络结构3中,接入ISP也是分层的:较小区域中的ISP连入较大区域的ISP,而不是直接与顶层ISP相连;为什么会出现这样的结构呢?这是因为,如果都直接同顶层ISP相连,那么两个同一较小区域内,分属不同ISP的端系统之间通信的数据也会到顶层ISP中心去一趟,如果它们不是直接接入顶层ISP,而是接入了一个较大区域的ISP,那么它们之间的通信数据就不用去顶层ISP中心了,因为它们通过较大区域的ISP已经实现了互连,所以通信速度肯定就上去了。
网络结构4:是在网络结构3的基础上,增加了以下特点而形成的结构:存在点(Point of Presence,PoP)、多宿、对等、因特网交换点(Internet exchange point,IXP)。

    PoP存在于等级结构中所有层次,但是底层ISP除外;一个PoP是ISP网络中的一台或者多台路由器群组,其中客户ISP能够通过第三方提供的高速链路直接将它的路由器和供应商的PoP连接,从而实现与提供商ISP连接。这样接入速度很明显就提高了。
    多宿(multi-home)是指,任何ISP(除第一层ISP)都可以与两个或者多个提供商ISP连接,这被称为多宿;这样网络的可靠性就提高了
    对等(peer) 是指,位于相同等级结构层次的一对邻近ISP能够直接将它们的网络连接到一起,使它们之间流量经直接连接而不是经过上游的中间ISP传输,这样既不用付费,速度也可能会快一些;
    因特网交换点是为了实现多个ISP可以对等而创建的。
网络结构5:网络结构5是在网络结构4的基础上增加了内容提供商网络而构成。内容提供商构建自己的网络,并且通过与较低层ISP对等而“绕过”较高层因特网ISP,而且内容提供商对端用户也有了更多的控制。
总体来说,今天的因特网是一个“网络的网络”,其结构复杂,由十多个顶层ISP和数十万个较低层ISP构成。近年来,主要的内容提供商创建自己的网络,直接在可能的地方与较低层ISP互联1.4 分组交换中的时延、丢包、吞吐量
因特网能够看成是一种给运行在端系统上的分布式应用提供服务的基础设施
计算机网络必定要要限制在端系统之间的吞吐量,故在端系统之间存在时延、丢包;1.4.1 分组交换网中的时延概述
一个分组在沿途每个节点承受不同类型的时延,这些时延中最为重要的是:结点处理时延、排队时延、传输时延和传播时延.这些时延总体累加起来是结点总时延
时延的类型
处理时延
处理时延是因为检查首部字节并决定其出链路(索引转发表等操作)而产生,通常在微秒或者更低数量级;
排队时延
排队时延是因为分组所对应的出链路前面有其他分组正在传输,所以分组需要该链路的缓冲队列里等待其他分组传输完毕而产生的;一般来说,排队时延是到达该队列的流量强度和性质的函数,通常可以达到毫秒级到微秒级;
传输时延
传输时延是将缓存中分组的所有比特传输向链路所需要的时间,实际的传输时延通常在毫秒到微秒数量级。用L表示分组的长度,用Rbps表示从路由器A到B的链路传输速率。传输时延是L/R。
传播时延
传播时延是指一个比特进入链路后到达下一个路由器所用的时间;一旦分组中的最后一个比特到达路由器就意味着该分组的所有比特都已到达路由器;广域网中,传播时延一般是毫秒级的。传播时延是d/s。d是路由器A到B的距离。s是链路的传播速率。
传输时延和传播时延的对比
如果打个比方的话,传输时延就是一堆车(一个分组一堆比特)经过收费站的时间而传播时间就是车在高速公路上行驶的时间。传输时延是分组长度和链路传输速率的函数。传播时延是两台路由器间距离的函数。传播时延小于传输,第一个比特到达下一个路由器,分组的其他比特还在往链路上传输。1.4.2 排队时延和丢包
丢包:由于空间有限无法缓存整个分组时,路由器将丢弃该分组
排队时延和丢包与网络的状况和结点的缓冲空间大小、处理速度相关;如果分组到达的速度高于结点的处理速度,那么分组就会在缓冲队列里排队等待。当缓冲空间用完后,如果还有到的分组,那么该分组将被迫丢弃
为了描述网络状体,我们引入了流量强度这一概念:流量强度=分组到达的速度/结点的处理速度;流量工程里一个金科玉律就是:设计系统时流量强度不能大于1;
当流量强度持续大于1时,就将出现丢包现象1.4.3 端到端时延

路由器接受到指定分组、目的端系统接收到所有分组都会向源返回一个报文,包括路由器地址名字、往返时延。1.4.4 计算机网络的吞吐量
计算机网络的吞吐量实际上是一个速度指标,它描述了比特经过某个节点的速度。对于某条路径上的结点来说,和该结点有关的速度有两个:接收数据的速度和发送数据的速度,而该结点的吞吐量是这两个速度中较小的一个;对于某条路径来说,该路径的吞吐量则是所有节点的吞吐量的最小值;网络的吞吐量可以衡量网络的性能.
任何时间的瞬时吞吐量是主机B接受到该文件的速率
如果该文件由F比特组成,主机B接受到所有比特用去Ts,则文件的平均吞吐量为F/Tbps
吞吐量可以近似为源和目的地之间路径的最小传输速率。最小传输速率的链路为瓶颈链路。
在今天,因特网对吞吐率的限制因素通常是接入网。1.5 协议层次及其服务模型
因特网是一个极为复杂的系统,该系统里存在着大量的应用程序和协议、各种类型的端系统、分组交换机和各种类型的链路级媒体。面对这种复杂性,接下来将组织网络体系结构。1.5.1 分层体系结构
计算机网络采用分层的体系结构,分层的体系结构因为提供模块化而具有很高的价值,同时也易于服务实现的多样性:某一层对其上一层提供服务,同时它可以利用下一层提供的服务。只要对上提供的服务和对下利用的服务没有变化,其层内部的实现并不会对系统结构产生影响(按时间等级按vip等级并不影响起飞);对于大而复杂且需要不断更新的系统来说,改变服务的实现而不影响系统其他组件是分层模式的另一个重要优点(类似系统解耦)
为了给网络协议的设计提供一个结构,网络设计者以分层的方式组织协议以及实现这些协议的软硬件
一个协议层可以使用软硬件实现,同时某个协议层的不同部分常常位于网络组件的各部分。协议分层具有概念化和结构化的优点。模块化使得更新系统组件更为容易。但是分层也有其缺点,就是功能上的冗余,比如许多协议栈针对链路和端到端两种情况都提供了差错恢复功能。第二种潜在的缺点就是某层的功能可能需要仅在其它层才出现的信息
总体来说,将各层的所有协议组合起来,称为协议栈。因特网的协议栈有5个层次组成:物理层、链路层、网络成、传输层、应用层

    应用层:应用层协议分布在多个端系统,端系统中的应用程序使用该协议与另一个端系统中的应用程序通信。处于应用层的分组称为报文;
    传输层:传输层在应用程序端点之间传输应用层报文,因特网中有两个传输层协议:TCP和UDP。处于传输层的分组称为报文段。TCP提供应用层报文向目的地的确保传递、流量控制、拥塞控制机制。UDP提供无连接服务,即不提供不必要服务的服务。没有可靠性、没有流量和拥塞控制。向网络层提供报文段和目的地址。
    网络层:网络层将称为数据报的网络层分组从一台主机移动到另一台主机。网络层协议包含IP协议(定义数据报中各字段以及端系统、路由器如何利用这些字段)以及其他一些路由选择协议(使数据报根据该路由从源传输到目的地)。
    链路层:链路层将称为帧的链路层分组从一个结点(主机、路由器)移动到路径上的另一个端点。一个帧可能被沿途不同链路上的不同链路层协议处理。链路层将数据报传输给网络层。
    物理层:物理层的任务是将帧中的比特从一个结点移动到下一个节点,它提供了传输信息的实际物理通道,以太网有许多物理协议关于双绞线、光纤等;
OSI模型
在因特网协议栈出现以前,OSI模型是ISO组织研发的计算机网络结构模型。OSI的模型一共有7层,从下到上依次为:物理层,链路层,网络层,传输层,会话层,表示层,应用层。相比因特网体系结构,OSI多了两层。
因特网将两层的功能留给了开发者自行实现。表示层使通信的应用程序能够解释交换数据的含义,
会话层提供数据交换定界和同步功能。1.5.2 封装
一个分组,在不同的层次有不同的称谓,是因为它们经过每一层的时候就被该层封装上了属于该层的相关信息,也就是前面提到的的必要信息;于是,每一分层的分组有两种类型的字段:首部字段和有效载荷字段;其中有效载荷字段即为来自上一层的分组数据,而首部字段就是该层加上的必要信息;分组不断被封装(报文分多报文段进而多数据包,最后重构报文)以实现各层协议规定的相关功能第二章、应用层2.1 应用层协议原理
研发网络应用的核心是写出能够运行在不同端系统和通过网络彼此通信的程序;值得注意的是,我们不需要写在网络核心设备如路由器或者链路层交换机上运行的软件,这种设计方式即将应用程序限制在端系统的方法,促进了大量网络应用程序的迅速研发和部署2.1.1 网络应用程序体系结构
应用程序的体系结构不同于网络的体系结构。从应用程序研发者的角度来看,网络体系结构是固定的,并为应用程序提供特定的服务集合;应用程序体系结构由应用程序研发者设计,它规定了在端系统上如何组织应用程序。两种常见的现代网络应用程序所采用的体系结构为:客户-服务器体系结构和对等体系结构
客户-服务器体系结构
在该体系结构中,有一个总是打开的主机,即服务器,它接收和响应来自被称为客户的主机的请求;客户之间是不直接通信的,因为服务器具有固定的、周知的地址,客户通过IP地址向服务器发送分组进行联系
客户-服务器体系结构的著名应用有:Web、FTP、Telnet和电子邮件。
通常,如果仅有一台服务器处理所有的请求,那么服务器系统将很快变得不堪重负,为此,配备大量主机的数据中心常被用于创建强大的虚拟的服务器,一个数据中心可以有数十万台服务器,它们需要供电和维护,同时服务提供商还需要支付不断出现的互联和带宽费用,以及发送和接收到达/来自数据中心的数据;
P2P体系结构
应用程序对位于数据中心的服务器有着最小依赖,在间断连接的主机(对等方)对之间使用直接通信。对等方并不为服务提供商所拥有,因为这种对等方通信不需要通过专门的服务器,所以该体系结构也被称为对等方到对等方结构
目前,流量密集型应用都是P2P体系结构的。这些应用包括文件共享(例如BitTorrent)、协助下载(例如迅雷)、因特网电话(例如Skype)和IPTV(例如迅雷看看)。
值得注意的是,某些应用具有混合的体系结构,它们结合了客户-服务器和P2P这两种体系结果,比如许多的即时通讯工具,服务器用来跟踪用户IP地址,但是用户之间的通信则使用直接发送
P2P体系结构的特性之一就是它们的自扩展性。比如在文件共享应用中,对等方可能通过向文件的原始拥有者发出请求而产生工作量,但是对等方也有可能通过为其他对等方传送文件而为原始拥有者分担压力;p2P体系结构也是成本有效的,通常不需要庞大的服务器基础设施和服务带宽。
但是P2P也面临着以下三个问题:
    ISP友好。住宅ISP已经受制于非对称带宽应用,但P2P改变了从服务器到住宅ISP的上载流量;
    安全性。其高度的分布和开放式,P2P应用也存在安全问题;
    激励。让用户向应用提供带宽、存储和计算资源2.1.2 进程通信
在操作系统中,进行通信的是进程。进程间通信机制由端系统上的操作系统确定。
当进程运行在不同的端系统上时,它们通过交换报文相互通信;发送进程产生报文并且向网络中发送,接收进程接收报文并对此作出响应。
客户进程和服务器进程
发起通信的进程被标记为客户进程,在会话开始时等待联系的进程被称为服务器进程。
进程与计算机网络之间的接口
进程通过称为套接字的软件接口向网络发送、接收报文。套接字是同一台主机内应用层和运输层之间的接口。由于该套接字是建立网络应用程序的可编程接口,因此套接字也被称为应用程序和网络之间的应用编程接口(Application Programming Interface).
应用程序开发者可以控制套接字在应用层端的一切内容,但是对于运输层仅限于:选择传输层协议和设定几个传输层参数,比如最大缓存和最长传输层报文长度。

进程寻址
发送分组需要一个地址标志某台主机上运行的进程(准确来说是进程的套接字)。标记由两部分组成:接收进程所在的主机地址和接收进程的标记符;即IP地址和端口号。2.1.3 可供应用程序使用的运输服务
传输层协议的特点大致可以从以下这四个方面考量:可靠数据传输、吞吐量、定时和安全性
可靠数据传输
路由器溢出、比特损坏后被抛弃会造成数据丢失。协议可以确保数据交付,即提供了可靠数据传输。
像一些音频、视频是容忍丢失的应用。
吞吐量
可用吞吐量就是指能够向接收进程交付比特的速率。
因为会有其他会话共享该网络的路径的带宽,并且因为这些会话的到来和离开,可用吞吐量将发生变化;这就导致另一种自然的服务,即运输层协议能够提供确切的可用吞吐量。使用这种服务时,应用程序就能以明确的速度接收数据,并且运输层应当保证可用吞吐量必须总是至少为该速度;
对吞吐量有明确要求的应用程序被称为带宽敏感的应用(多媒体应用)。弹性应用则对吞吐量没有严格的要求,如电子邮件、文件传输以及web传送等。
定时
Z游戏、视频等是需要运输层协议提供定时保证,即发送方注入套接字的每个比特到达接收方的套接字不迟于1××ms
安全性:机密性,数据完整性,断点检测
机密性:运输协议加密发送进程传输的数据,并解密给接收进程
2.1.4 因特网提供的传输层服务

因特网(更一般的是TCP/IP网络)为应用程序提供两个运输层协议,即UDP和TCP。每个协议对应用程序提供了不同服务的集合。以下为常见的因特网应用的特点:

TCP服务
TCP服务模型包括了面向连接的服务和可靠数据传输服务。

    面向连接的服务:在应用层数据报文开始流动之前,TCP会在客户端和服务器端相互交换传输层控制信息。即第一次握手将建立一条全双工的TCP连接,提示客户端和服务器端为即将到来的大量分组做好准备;双方使用该条链接可以同时进行报文的收发,连接将在通讯结束后拆除。
    可靠的数据传输:通信进程使用TCP协议可实现无差错、按适当顺序交付所有发送的数据,没有字节的丢失和冗余;
TCP服务还提供了拥塞控制机制。当发送方和接收方之间的网络出现拥塞时,会抑制发送进程。也会试图限制TCP连接。
SSL处于应用层,为TCP提供加密、数据完整性和端点鉴别服务。

UDP服务
UDP服务是仅提供最小服务的轻量级运输协议。是无连接的也就是说通信之前没有握手,不提供数据的可靠传输;UDP也没有拥塞控制机制,发送端可以选择任意速率向网络层注入数据。有些应用场景下,UDP协议将带来更多的便利和效率,比如DNS和一些因特网电话服务(为了避免拥塞控制协议的控制而使用UDP)
传输层无法提供的服务
从可靠数据传输、吞吐量、定时、安全性等四个角度来看运输层提供的服务,我们发现,运输层无法对吞吐量和定时做出保证。但是,今天的因特网能够为时间敏感的应用提供满意的服务,尽管它并不提供任何定时或者带宽保证;
http和https和ssl和tcp/ip之间的关系和区别2.1.5 应用层协议
应用层协议定义了程序进程如何相互传递报文,它定义了:交换的报文类型(请求或者响应)、各种报文的语法、报文中字段的语义、一个进程何时以及如何发送报文 对报文进行响应的规则。
应用层协议是网络应用的一部分,如web应用包括浏览器、服务器、文档格式的标准(HTML)、一个应用层协议(如HTTP)2.1.6 本书涉及的应用层应用
即将介绍的应用包括:Web、文件传输、电子邮件、目录服务和P2P。
Web部分将介绍HTTP协议;FTP则和HTTP形成了对照;电子邮件是比Web更为复杂的应用,因为它使用了多个应用层协议;为因特网提供目录服务的DNS,它很好地说明了一种核心的网络功能(名字到地址转换)是如何在应用层实现的。P2P应用:文件共享应用、分布式查找服务。在第七章涉及多媒体应用:流式视频、IP电话。2.2 WEB和HTTP2.2.1 HTTP概述
HTTP(HyperText Transfer Protocol)是WEB的应用层协议;客户端程序和服务器程序实现了HTTP;HTTP定义了报文的结构 以及客户和服务器进行报文交换的方法;
Web页面是由一个HTML基本文件和几个引用对象组成。(Web服务器中)基本文件通过对象的URL地址引用其它对象。URL地址包括主机名和对象的路径名ww.sss.com(主机名)/docu/aa.gif(路径名)。
客户和服务器交互的核心思想是客户通过HTTP请求对服务器发出对Web页面的请求报文,服务器收到该报文后将返回包含该对象的HTTP响应报文。
HTTP使用TCP作为它的支持运输协议,HTTP客户首先发起一个与服务器的TCP连接,连接建立后进程就可以通过套接字接口访问TCP,从而保证了可靠数据传输。也利用了分层的设计优点 HTTP不用关心数据丢失、乱序恢复这些较底层协议的工作。
需要注意的是,服务器不存储任何关于该客户的状态信息,所以被称为无状态协议。2.2.2 持续连接和非持续连接
每个请求/响应是经一个单独的TCP,该应用程序使用持续连接;如果是同一个TCP,则称为非持续连接。
采用非持续连接的HTTP
建立连接过程:
HTTP客户进程通过端口发起到服务器www.dsd.com的TCP连接,客户和服务器上分别有一个套接字与该连接相关联;
HTTP客户经套接字向服务器发送HTTP请求报文,保温包括asd/asas/sad.index路径名;
HTTP服务器经套接字接收报文,检索出对象www....index,在响应报文中封装该文件对象通过套接字发送;
HTTP服务器通知TCP确认客户接收报文后断开连接;
HTTP客户接收响应报文并从中提取HTML文件,得到其中的URL引用;
这时客户可以采取串行或者并行方式获取引用对象。
使用非持续连接时,每个TCP连接只传送一个请求报文和响应报文,在服务器发送一个对象后就会关闭;
RTT(Round-Trip Time):一个短分组从客户端到服务器,然后再返回客户端所用的时间,包括分组的传播时延、排队时延、处理时延(因为是短分组,所以其传输时延可不计);
响应时间是两个RTT加上服务器传输HTML的时间,包含了“三次握手过程”:服务器对接收到的小TCP报文段做出确认和响应,客户端发送请求,服务端发送响应。
缺点:对每个连接,客户和服务器都要分配TCP缓冲区和保持TCP变量,给服务器带来了严重负担;每一个对象都要经受两倍的RTT的交付延迟。
采用持续连接的HTTP
持续连接:服务器在发送响应报文后将保持该TCP打开,后续客户端可以使用该连接来向服务器发出请求
一条连接在一定时间间隔后没被使用,就会被关闭。HTTP默认使用带流水线的持续连接。2.2.3 HTTP报文格式:请求报文和响应报文
请求报文

请求报文的第一行称为请求行,其后继的各行被称为首部行。
请求行包含三个内容:方法字段、URL字段、HTTP版本;其中方法字段可为:GET、POST、PUT、DELETE、HEAD等。URL字段里带有请求对象的标志;
首部行:Host指明了对象所在主机,是Web高速缓存所需要的;Connection:浏览器通知服务器在发送完响应报文后是否关闭TCP连接;浏览器类型(让服务器为不同的浏览器发送相同对象的不同版本);浏览器想得到的语言版本;
空行(Accpet行结束后亮哥回车换行符cr、lf);
“实体体”:当用户使用搜索引擎等需要向服务器提交表单时会用到post方法,提交的内容就是实体体;如果使用get,输入的数据扩展在URL中  www....edu/animalserach? monkeys&bananas
Head会用一个http报文进行响应,但是不返回请求对象,常用作调试跟踪。put方法允许用户上传对象到Web服务器上指定的路径。Delete方法允许用户或应用程序删除Web服务器上的对象。
HTTP响应报文格式

响应报文总体上也分三个部分,第一部分是状态行,包含HTTP版本字段、状态码以及相应状态信息;
第二部分是首部行:Connection:服务器通知浏览器关闭连接;Date:从文件系统中检索到该对象,插入到响应报文,并发送该响应报文的时间;Server:指示该报文是由什么服务器产生的、相应服务器;Last-Modified:与对象缓存有关; Connect-Length:被发送对象的字节数;Connect-Type:实体体中对象的类型;
空行
第三部分是实体体:请求对象。
常见状态码
200 OK:请求成功 处理方式:获得响应的内容,进行处理
301 Moved Permanetly:请求的对象转移到了新的URL,URL在首部段的Location  处理方式:重定向到分配的URL
400 Bad Request:非法请求 处理方式:丢弃
404 Not Found:文件不在服务器 处理方式:丢弃
505:服务器不支持请求报文使用的http版本2.2.4 用户与服务器的交互:Cookie

Cookie可以在无状态的HTTP上建立一个用户会话层,浏览器向服务器发送Cookie信息,服务器在用户和应用程序会话过程中标志该用户,关联用户相关的信息。P73!!!
Cookie技术包含4个组件
    HTTP响应报文里增加一个关于Cookie的首部行;
    HTTP请求报文里增加一个关于Cookie的首部行;
    用户端系统保留一个Cookie文件,由浏览器管理;
    位于Web站点的一个后端数据库;
2.2.5 Web缓存
Web缓存器又称为代理服务器。它有自己的存储空间,并在存储空间里保持有最近请求过的对象的副本;可以通过配置浏览器,使指向指向初始服务器的请求先指向代理服务器。
当代理服务器收到一个HTTP请求后,检查本地是否缓存过该对象,如果缓存过该对象则检查是否过期,如果没有过期则直接将该对象返回给浏览器;如果本地不存在或者存在已过期,则代理服务器将根据请求报文里的Host首部行以及请求行里的URL字段向初始服务器发出请求,然后将响应对象返回给浏览器并缓存在本地。
优点:减少了请求的响应时间;减少了接入因特网的通信量从而改善了服务器端应用的性能。P75有关缓存器解决方案、响应时间??
通过使用内容分发网络(Content Distribution Network),使大量的流量实现了本地化,有点像主存。
Web缓存即是客户又是服务器2.2.6 条件GET方法
缓存器中文件副本可能是过期的,HTTP提供了一种机制——条件GRT,允许缓存器证实其使用的对象是最新的。
通过缓存器向浏览器响应时,缓存器不仅缓存了对象,还存储了它的最后修改时间。当再次请求时,缓存器向服务器发送一个条件GET执行最新检查。
增加一个If-Modified-Since首部行,时间是上一次缓存所保存的Last-Modified。服务器响应报文 304且不带有实体体,即没有修改,缓存器就可以将缓存响应给浏览器。2.3 文件传输协议FTP
用户首先提供远程主机的主机名,使FTP客户进程建立到远程主机FTP服务器进程的TCP连接,之后用户提供用户标识和密码,它们作为FTP命令的一部分在该TCP连接上传输;服务器向用户授权,用户便可以和服务器进行文件传输。
HTTP和FTP都是应用层(文件传输)协议,都运行在TCP协议上。区别:FTP使用俩个并行的TCP连接来传输数据,一个TCP被称为控制连接,用来传输控制信息如用户标识密码、存取指令等;一个TCP连接被称为数据连接,用于传输文件数据;
FTP协议其控制信息是通过一个独立的TCP连接传输,所以我们称FTP的控制信息是带外传送的;HTTP的控制信息和数据信息通过同一个TCP传输,称为带内传送。FTP中控制连接端口21,数据连接端口20,控制连接贯穿整个会话,数据连接会在一个文件开始传输的时候建立,在传输结束后关闭。
FTP需要在整个会话期间,保留用户的状态,也就是将控制连接(存取移动目录)同用户账户关联起来,同时记录用户在远程目录树上的操作。也限制了FTP可以同时维持的会话总数。
FTP命令和回答
从客户到服务器的命令和从服务器到客户的回答,都是以7比特ASCII格式在控制连接上传递的
常见的命令如下:

RETR <filename>从服务器上找回(复制)文件


STOR <filename>储存(复制)文件到服务器上


USER <username>>系统登录的用户名


PASS <password>系统登录密码

常见的回答如下:

125打开数据连接,开始传输


331要求密码


452磁盘空间不足,写错误


425无法打开数据连接
2.4 因特网中的电子邮件
 
因特网电子邮件系统有三个核心组件:用户代理、邮件服务器、SMTP(简单邮件传输协议,Simple Mail Transfer Protocol)。
电子邮件发送过程:发送方通过用户代理将邮件传送到发送方的邮件服务器,它在一个报文队列中保持该报文并不断尝试发送到接收方的邮件服务器,然后接收方通过服务器验证后 邮件被分发到接收方的邮箱里。
SMTP是因特网中电子邮件的主要应用层协议,它使用TCP可靠数据传输从发送方的邮件服务器向接收方的邮件服务器发送邮件;邮件服务器上同时运行SMTP服务器和SMTP客户端,当邮件服务器接收其他邮件服务器的邮件时,表现为SMTP服务器;当邮件服务器向其他邮件服务器发送邮件时,表现为SMTP客户端。
2.4.1 SMTP
STMP限制了报文实体只能采用7比特ASCII表示(多媒体要转解码)。
过程:客户STMP通过25端口建立与服务器STMP的连接;执行应用层的握手,客户要指示发送方和接收方的地址;TCP传输,持续连接可多次发报文;传输完后,客户指示关闭连接。
2.4.2 与HTTP对比
HTTP和SMTP都是用TCP协议;持续的HTTP和SMTP都是持续连接;
区别:
第一个区别:HTTP被设计为一个Pull协议而SMTP被设计为一个Push协议。即用户通过HTTP主动向服务器请求内容,而SMTP则是客户将内容推向服务器端;
第二个区别:HTTP传输的数据不一定是用ASCII字符,但是SMTP则只能使用ASCII字符;
第三个区别:HTTP将每个对象 封装 在自己的响应报文里,而SMTP则将所有的报文对象   放  到一个报文之中;2.4.3 邮件报文格式和MIME

报文由两部分组成:包含环境信息的首部和包含邮件内容的报文体;首部和报文体之间使用空行分开;首部行的格式为关键字:值;每个首部必须包含一个From和To首部行,也可以包含其它信息(Subject)。2.4.4 邮件访问协议

从某ISP服务器上取邮件是个取操作,需要一个特殊的邮件访问协议:POP3(Post Office Protocol-Version 3)、因特网邮件访问协议(IMAP,Internet Mail Access protocol)、HTTP
POP3
POP3使用端口110来建立TCP连接(SMTP使用端口25);三个阶段:特许、事务处理和更新;在特许阶段,用户代理发送密码和用户名以鉴别用户;第二阶段,用户代理取回报文,同时还可以做删除、取消删除标记以及获取邮件的统计信息;第三个阶段是在用户发出quit命令后POP3结束会话,删除被标记的邮件;
一个需要注意的是,POP3用户代理可以使用两种事务处理模式:一种是下载并删除,另一种是下载保留;POP3代理发出的命令和其工作模式相关;用户常用命令:user<aaa> pass<ssss> list  retr quit 服务器在事务处理过程需作出回答:OK、-ERR
在用户代理与邮箱服务器之间的POP3会话期间,POP3服务器保留了一些状态信息,特别是记录了哪些用户报文被标记为删除。但是POP3服务器并不在POP3会话过程中携带状态信息,简化了POP3服务的实现。
IMAP
IMAP将每个报文和一个文件夹联系起来联系起来,允许用户在远程建立文件夹、移动邮件(维护了IMAP会话的用户状态信息,将邮文件夹和报文关联)、查询邮件等。IMAP协议还允许用户代理获取报文组件而不是报文整体。
基于Web的电子邮件
用户与服务器之间使用HTTP协议,邮件服务器之间使用SMTP协议。2.5 DNS:因特网的目录服务
比起主机名cnn.com,IP地址容易让路由器处理,可以更好的标识主机。IP地址由4个字节组成,具有层析结构——从左往右越来越具体的主机位置信息。2.5.1 DNS提供的服务
DNS(Domain Name System)域名系统提供主机名到IP地址转换的目录服务。DNS是一个由分层的DNS服务器实现的的分布式数据库和一个使得主机可以查询分布式数据库的应用层协议组成;
DNS运行在UDP之上使用53号端口,通常被其他应用层协议使用,比如:HTTP、SMTP和FTP。
过程:浏览器从URL中抽出主机名传给DNS应用客户端,客户向DNS服务器发送一个包含主机名的请求,最终收到包含IP的报文。一旦浏览器接收到了IP,就能够向位于该IP地址80端口的HTTP服务器进程发起一个TCP连接。
DNS为用户带来方便的同时,也为网络应用带来额外的时延——查询DNS服务器的时延。通过DNS缓存器减少时延。

DNS还提供了以下重要服务:

    主机别名:提供主机别名与主机规范名的转换
    邮件服务器别名:邮件服务器主机名和别名的转换
    负载分配:繁忙的站点被冗余分布在多台服务器上,有着不同IP地址,这个IP地址集合与同一个服务器规范名相联系;
客户对映射到某地址集合的名字发出一个DNS请求,DNS服务器用整个IP集合响应,循环出一个IP包含于回答报文中,这样DNS就在这些冗余的Web服务器之间循环分配了负载。2.5.2 DNS工作机理概述
DNS使用UDP作为传输层协议,经53端口发送查询报文;若干毫秒后客户端将收到一个DNS回答报文,之后将IP地址传递给调用DNS的应用程序。DNS就像一个简单的提供直接转换服务的黑盒子,实际上这个黑盒子非常复杂,由分布在全球的大量DNS服务器以及定义DNS服务器和查询主机通信方式的应用层协议组成;
DNS采用分布式的设计方案,实际上,DNS是一个在因特网实现分布式数据库的精彩范例!而之所以这样做,是因为,单一的DNS服务器存在单点故障、通信容量、向远距离集中式数据库查询实验、维护的问题。
分布式、层次数据库

为了处理扩展性问题,DNS服务器采用层次式组织,并且分布在全世界范围内;大致来说,存在三种DNS服务器:根DNS服务器、顶级域DNS服务器和权威DNS服务器;举例说明,其工作的普遍流程:一个DNS客户端,希望获得www.baidu.com的IP地址,粗略的说,DNS客户端首先和根DNS服务器取得联系,它将返回负责解析顶级域名com的服务器的IP地址(或者其集合),客户将同这些服务器之一取得联系,然后顶级域DNS服务器建返回baidu.com的权威服务器的IP集合,客户端通过与这些服务器之一取得联系,获得www.baidu.com的IP地址。

    根DNS服务器:因特网上有13个根DNS服务器,大部分分布在北美洲,尽管我们可以将这13个根DNS服务器视为单个的服务器,但是每台服务器实际上是一个冗余的计算机网络以提供安全性和可靠性;
    顶级域DNS服务器:负责顶级域名,如com,org,net,edu,gov以及各个国家的顶级域名的转换。
    权威DNS服务器:因特网上,具有公共可访问主机的每个组织机构必须公共可访问的DNS记录,这些记录将主机名映射为IP地址。一个组织的权威DNS服务器收藏了这些DNS记录,多数大学和大公司实现和维护它们自己的基本和辅助(备份)权威DNS服务器;当然,也可以通过付费的方式,将相关的信息插入到其它权威服务器中;
除了上面三种DNS服务器,还有一种不在DNS层次结构之中,但是很重要的DNS,是本地DNS服务器。本地DNS服务器通常邻近其所在网络的其他主机。当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将请求转发到DNS服务器层次结构中。
DNS查询有两种,一种是递归查询一种是迭代查询;实践中,查询通常满足这样的模式:从请求主机到本地DNS服务器的查询是递归的,其余查询是迭代的。所谓迭代就是,如果请求的接收者不知道所请求的内容,那么接收者将扮演请求者,发出有关请求,直到获得所需要的内容,然后将内容返回给最初的请求者。也就是说,在递归查询中,一定要给请求者想要的答案;迭代查询则是指,如果接收者没有请求者所需要的准确内容,接收者将告诉请求者,如何去获得,但是自己并不去发出请求。
DNS缓存
DNS缓存实际上是为了盖上时延性能并且减少在因特网上传输的DNS报文数量而引入的。DNS缓存原理十分简单,每当DNS服务器发出请求后收到回答时,就将回答的内容缓存在它自己的主机空间上。这样,如果有相同的请求到达时,就不需要再去发出请求,直接使用缓存即可;因为有了缓存,本地DNS就可以直接提供一些经常被访问的主机名所对应的IP地址,而不需要询问根DNS服务器了。需要注意的是,缓存不可避免的一个问题:有效时间。如果缓存过时而未得到更新,那么就会导致一些请求失败。
个人认为,缓存技术就是一种典型的使用空间换时间的策略2.5.3 DNS记录和报文
共同实现分布式数据库的所有DNS服务器存储了资源记录(Resource Record)。而RR提供了主机名到IP地址的映射信息;一条RR是具有一下字段的4元组:(name, value, type, TTL);其中TTL是指该记录的生存时间,它决定了该条记录何时被删除。
首先看看type,type有4种取值,包括:A、NS、CNAME、MX等:
    type=A:则name为主机名,value为对应的IP地址;
    type=NS:则name为域,value为如何获得该域下主机IP地址的权威DNS服务器的主机名;
    type=CNAME:则value为name(本身为主机别名)所对应的主机的规范主机名;
    type=MX:则value为那么所对应的邮件服务器的规范主机名;
如果为了获得邮件服务器的规范主机名,请求一条MX记录;为了获得其它服务器的规范主机名,请求一条CNAME记录
所以如果一条记录为type=A,则它直接包含了需要的信息;如果是NS,需要进一步得到权威DNS服务器的IP地址(同时返回一条NS记录,并返回一条以该NS记录的value值为name的A记录)希望得到一条A记录;而type=CNAME和MX的记录则实现了主机别名到主机规范名的转换,可以通过该规范名继续构建查询链条,直到获得希望的IP地址;
DNS报文

DNS报文有两种,即查询报文和回答报文,并且两种报文有着相同的结构:
DNS报文结构:


    前12字节为首部区域。标识符是一个用来标记该查询的16比特数。该标志符会被复制到相应的回答报文里,以便匹配请求和回答;
    标志字段有若干标志,用来指出报文的类型(请求还是响应)、查询类型(递归还是迭代)、是否是所请求名字的权威DNS服务器、以及4个有关数量的字段,用来指示4类数据区域出现的数量;
    问题区域包含了正在进行的查询信息,包括名字字段、查询类型;
    回答区域包含了对最初请求的名字的资源记录,回答报文的回答区域可以包含多条RR,因此一个主机名能有多个IP地址;
    权威区域包含了其他权威服务器的信息;
    附加区域包含了其它有帮助的记录,比如在对于一个MX类型的请求回答报文里,回答区域里指出了邮件服务器的规范主机名,而附加区域里就有可能包含一个类型为A的关于该规范主机名的的IP地址;
向DNS数据库中插入数据
需要在注册登记机构完成这一任务,当你注册一个域名时,需要向该机构提供你的基本和辅助DNS服务器的名字和IP地址;该注册机构将确保一个类型为NS和类型为A的记录输入对应的顶级域名服务器;这样就完成了插入数据2.6 P2P应用
对总是打开的基础设施服务器没有依赖,成对间歇连接的主机之间相互通信。
有两种典型因特网应用十分适合P2P体系结构,一种是文件分发(BitTorrent),另一种是大型对等方社区中的数据库;我们将探讨分布式散列表的概念。P2P体系结构有着良好的自扩展性。这种扩展性的直接成因是:对等方除了比特的消费者之外还是他们的重新分发者2.6.1 P2P文件分发(BitTorrent)
BitTorrent 是一种用于文件分发的流行P2P协议;用BitTorrent的术语来说,参与一个特定文件分发的所有对等方的集合被称为一个洪流;在一个洪流中的对等方彼此下载等长度的文件块;当一个对等方下载文件块的时候,也向其他对等方发送了多个块;一旦某对等方获得了完整文件,就可以自私地离开洪流或者大公无私地留下来继续向其他对等方发送文件.

    P2P文件共享协议,参与一个特定文件分发的所有对等方结合被称为一个洪流(torrent),在一个洪流的对等方彼此下载等长度的文件块,可以随时离开洪流,也可继续向其他对等方上载。每个洪流都有一个追踪器。
    Alice加入某洪流时,会在追踪器里进行注册,周期性通知追踪器它仍在洪流中。我们称所有与ALICE成功的创建了一个TCP链接的对等方成为邻近对等方。
    洪流随机从参与对等方的结合中选择一个子集,将他们的IP地址发给Alice,Alice维护这张对等方列表,试图与所有对等方建立并行的TCP连接。
    Alice周期询问每个邻近对等方(连上的)他们有的文件块列表,她随时知道邻居有哪些文件块
    Alice使用最稀缺优先技术,首先请求那些邻居们副本数量最少的块,使该文件块迅速分发,以均衡每个块在洪流中的副本数量
    BitTorrent使用一种算法,Alice优先从像她传时速度最快的邻居(4个,每10s修改一次)那里获取文件块。
    每过30s,Alice也要随机选择另外一个对等方Bob,向他发送块。若Alice是Bob最快的前四快,Bob也是Alice的前4快,则Bob和Alice互相发送数据。
    每过30s换一个新的对象,互相交换数据(一报还一报),为了使对等方能够找到彼此协调的速率上传2.6.2 分布式散列表(DHT)
分布式、P2P版本的key-value数据库,在大量对等方上存储key-value值(键值对)
分布式数据库用来定位拥有某key-value的对等方,然后向查询方返回该键值对
使用散列函数把每个键映射为[0,-1]之间的一个整数。
把(键,值)对存储在最邻近对等方那里。比如有8个对等方,标识符为1,3,4,5,8,10,12和15。因此将(11,“wangwenxuan")存储在12上。
环形DHT。(就是环形)。为了防止放松的报文太多了,还可以可以增加捷径,使每个对等方不仅仅联系直接前驱和直接后继。
对等方扰动。对等方可能忽然离开或到来。为了处理对等方扰动。我们要求每个对等方联系第一个和第二个后继。周期性的证实他们俩是活着的。
2.7 套接字编程
当发送进程能够将数据分组退出套接字之门之前,当使用UDP时,必须将目的地址(IP+端口号)附着在分组上。在分组传给发送方的套接字后,因特网将使用目的地址通过因特网为该分组选路到接受进程的套接字。发送方的源地址也是由IP和端口号组成。然而,将源地址附着在分组上通常是由底层操作系统自动完成的。第三章、传输层
在讨论UDP时:阐述如何

标签: edc17主继电器1ps2继电器cr系列中间继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台