《网络分析和总结.docx》由会员分享,可在线阅读,更多相关《网络分析和总结.docx(43页珍藏版)》请在三一办公上搜索。
1、第一章:延迟(Delay)的分类: 处理延迟(ProCeSSingDelay):路由器检查包头并决定将包发送至何处所需的时间。 排队延迟(QueuingDelay):数据包在路由器缓冲区中等待传输的时间。 传输延迟(TransniissionDelay):数据包被路由器送进物理线路所需的时间。 传播延迟(ProPagationDelay):数据包从物理线路的开头到达下一结点所需的时间。传输强度(Trafficintensity):单位时间内到达路由器的数据大小与路由器传输速率的比值。传输强度不应大于U包丢失(PacketLoss):当路由器的传输强度大于1时,其缓冲区必已被填满。此时,路由器将
2、丢弃新到达的任何包。五层互联网协议栈:应用层,传输层,网络层,链路层,物理层消息(Message):应用层传输的数据包,传给传输层。段(Segment):传输层传输的数据包,封装传输层的头信息和应用层的消息,传给网络层。数据报文(Datagram):网络层传输的数据包,封装网络层的头信息和传输层的段,传给链路层。帧(Frame):链路层传输的数据包,封装链路层的头信息和网络层的数据报文,传给物理层。应用层协议:HTTP,SMTP,FTP,DNS,P2P,DHCP传输层协议:TCP,UDP网络层协议:IP,路由链路层协议:以太网,WiFi,PPP七层OSl模型:应用层,表现层,会话层,传输层,网
3、络层,链路层,物理层第二章:应用层应用的架构: 客户端-服务器架构在一次通信会话的上下文环境中,发起通信的进程被称为客户端;等待被通信、进而开始会话的进程被称为服务器。 点对点架构套接字:进程通过网络发送、接收消息的软件接口。是一个终端内应用层和传输层之间的接口。传输层向应用层提供的服务: 可靠的数据传输 保证最低传输速率 实时性保证 安全性TCP服务:提供面向连接的服务(握手)、可靠数据传输服务、拥塞控制机制。UDP服务:提供没有连接、没有控制、轻量的不可靠数据传输服务。目前互联网传输层服务均不能提供最低传输速率和实时性的保证。一、超文本传输协议(HTTP)HTTP使用TCP协议作为传输层协
4、议。 HTTP协议首先向服务器在80端口发起TCP连接;一旦连接建立,浏览器与服务器通过TCP协议套接字通信。客户端将HTTP请求(request)消息发送到套接字接口,从套接字接口接受HTTP响应(response)o HTTP是“无状态”的协议,HTTP服务器不维护客户端的任何信息。 HTTP协议默认采用持久连接:一次请求/响应过程结束后,客户端与服务器的TCP连接不会被立刻关闭。HTTP协议可以改用非持久连接。1.HTTP消息格式HTTP消息有两种类型:请求消息和响应消息。HTTP消息使用ASCII文本编写。请求消息请求行(RcquestLine):请求消息的第一行。请求行由3部分组成:
5、方法域、URL域、HTTP版本域。 头行(HeaderLine):请求消息第二行至一个空白行之间的行。头行的格式为:域名:值XCRLF一些常见的头行的域如下:Host:指定了请求对象的主机的地址。Connection:指定了是否使用持久连接。User-agent:指定了用户的浏览器类型。 实体部分(EntityBody):头行的末尾空行后的剩余行。使用GET方法的请求,实体部分为空;使用POST方法的请求,表单的参数被放置在实体部分。HEAD方法:服务器返回的消息中不包含请求的对象。PUT方法:允许客户端向服务器上传对象。DELETE方法:允许客户端删除服务器上的对象。响应消息状态行(Stat
6、USLine):响应消息的第一行。状态行由3部分组成:版本号、状态码、对应状态码的附加信息。常见的状态码和对应的附加信息有:2000K:请求已完成,需要的信息已经在响应中。301MovedPermanently:请求的对象已经被永久移除,新的URL在响应消息的Location头行指定。400BadRequest:服务器无法理解请求。505HTTPVersiOnNotSupported:服务器不支持该请求的HTTP协议版本。 头行:响应消息第二行至一个空白行之间的行。格式与请求消息相同。常见的响应消息的头行域有:Date:指定响应消息是何时被服务器创建、发送的。Server:指定服务器的信息。U
7、ser-agent:与收到的请求中的相同域保持一致。1.ast-Modified:指定请求的对象被创建或是最后被修改的时间。Content-Length:指定请求对象的大小(以字节为单位)。Content-Type:指定请求对象的类型。 实体部分:头行的末尾空行后的剩余行。请求的对象通常存放于此。CookiesHTTP服务器是无状态的,HTTP使用CoOkieS来跟踪用户。 在response头中,加入Set-cookie域,来设置用户浏览器的Cookieso 在request头中,加入CoOkie域,来向服务器发送COokies。2.代理服务器代理服务器在客户端和服务器中间扮演中介的角色。(
8、1)浏览器先与代理服务器建立TCP连接,向代理A艮务器发送HTTP请求。代理服务器检查自己是否保存有该请求所需的对象;如果有,则直接把该对象与HTTP响应打包直接发回客户端浏览器。如果代理服务器没有保存所需的对象,代理服务器与源服务器建立TCP连接,完成完整的HTTP请求、响应过程,将获取的对象保存在代理服务器中,并发回客户端浏览器。代理服务器可作为Web缓存,极大减轻带宽压力。条件(Conditional)GET:缓存用于检测其保存的对象是否是最新的机制。代理服务器在接收浏览器的请求时,向源服务器发送一条件GET:在请求头中,增加一If-Modified-Since域,填入代理服务器在以前请
9、求同一对象时,响应中的Last-Modified域的内容;如果该对象没有变化,源服务器发回一响应信息,响应代码为304,附加信息为NOtModified(并不会重复发送一次该对象)。二、文件传输协议(FTP)FTP是基于TCP的文件传输协议。 FTP使用两个并行的TCP连接传输文件,其中一个是控制连接,一个是数据连接(HTTP则只使用一个,请求与响应消息均与实体部分混在一起组成一个HTTP消息发送)。因为这种特性,FTP的控制信息被称为“带外(OUt-of-band)控制信息”(HTTP的请求、响应头则称为“带内(in-band)控制信息)。控制连接用于在两个主机间传输控制信息,如用户身份、密
10、码、命令等;数据连接用于传输实际的文件。 用户向远程主机发起FTP会话时,FTP客户端与服务器在21端口建立控制TCP连接,然后发送用户身份验证信息。客户端还通过控制连接发送文件操作命令。当服务器收到文件传输指令后,服务器向客户端发起数据TCP连接。FTP通过数据连接发送一个文件后就关掉该连接。如果有多个文件要发送,则数据连接会被打开、关闭多次。 FTP是有状态的协议。FTP服务器要保持客户端的状态:服务器要把控制连接与一个特定的用户关联起来,并持续跟踪用户的当前目录和用户关心的远程目录树。 FTP命令和答复:控制连接使用7比特的ASCIl码编写。每一个命令使用CRLF隔开,命令由四个大写AS
11、CII码构成。常见的FTP命令有: USER用户名:客户端发送用户身份至服务器。 PASS空码:客户端发送密码至服务器。 1.IST:向服务器请求当前远程目录的所有文件(文件列表从一个新的数据连接发回)。 RETR文件名:客户端从远程主机当前目录获取一个文件。 STOR&件名:客户端发送一个文件到远程主机的当前目录。FTP答复由服务器发给客户端。答复由3位数字和一个可选的附加消息组成。常见的FTP答复有: 331UsernameOK,passwordrequired 125Dataconnectionalreadyopen;transferstarting 425Can,topendataco
12、nnection 452Errorwritingfi1e三、简单邮件传输协议(SMTP)SMTP协议使用TCP协议作为传输层协议。SMTP协议是用于发送邮件的协议。 SMTP协议比HTTP协议出现得早得多。由于历史遗留原因,SMTP协议的主体部分必须使用7比特的ASCIl编码。 SMTP协议不使用任何中间服务器中转。1. SMTP协议的工作过程(1)发送端构造SMTP消息;消息包含目标邮件地址以及邮件主题、主体。发送端将该消息发送至邮件服务器,邮件服务器将该消息放于消息队列中。邮件服务器与目标邮件服务器在25端口建立一TCP连接。(4)邮件服务器与目标邮件服务器开始应用层握手。握手后,该消息通
13、过该TCP连接发送至目标邮件服务器。(6)目标邮件服务器将该消息放入收件人的信箱。2. 客户端常使用的SMTP命令 HELO:尝试取得服务器的回应。 MAILFROM:指定发送者的邮件地址。 RCPTTO:指定接收者的邮件地址。 DATA:指定邮件内容。 .(独立的一行,该行内只含有一个点):标识邮件内容的结束。 QUIT:关闭连接。3. SMTP消息头SMTP消息头是邮件内容的一部分,其中的内容不参与SMTP握手过程。常见的SMTP消息头有如下域: From:发送者邮件地址。 To:接收者邮件地址。 Subject:邮件主题。四、邮件访问协议邮件访问协议用于从邮件服务器获取指定账户的收件箱中
14、的邮件。1. 邮局协议,版本号3(POP3)POP3协议使用TCP协议作为传输层协议。客户端与服务器在110端口建立TCP连接。POP3协议会保持当前会话的状态,但不保持跨会话的状态。 POP3协议的3个阶段:(1)认证:客户端向服务器发送用户名、密码。会话(Transaction):客户端接收邮件。在该过程中,客户端可以选择标记需要删除的邮件。更新:客户端关闭连接后,服务器删除客户端标记的邮件。 POP3协议的命令: user用户名、pass密码:用于认证阶段。 list:用于会话阶段,获取邮件列表。 retrNo.:用于会话阶段,获取该邮件的内容。 deleNo.:用于会话阶段,标记该邮件
15、需要删除。 quit:关闭连接。 POP3协议的消息: 认证阶段响应正确的命令:+OK附加消息 认证阶段响应错误的命令:-ERR 会话阶段响应list:每行代表一封邮件,格式为编号邮件大小,以CRLT.CRLT标记结束。 会话阶段响应retr:直接返回邮件内容,以CRLT.CRLT标记结束。 会话阶段响应dele:没有任何响应信息。 会话阶段响应quit:+OKPOP3serversigningoff2.IMAPIMAP协议可以在服务器维护用户的邮件目录。IMAP比POP3协议明显复杂。IMAP协议提供了可以创建目录、删除目录、移动邮件的命令。IMAP协议维持踏会话的状态。IMAP协议允许客户
16、端获取邮件的一部分。五、互联网目录服务:域名解析服务(DNS)DNS是通过DNS服务器实现的分布式数据库;是主机用于查询这个分布式数据库的应用层协议。DNS协议使用端口53,使用UDP协议作为传输层协议。 DNS提供的服务: 被用于将主机名转换为IP地址。 提供主机别名。 提供邮件服务器别名。 负载均衡。1. DNS的分布式、层次化数据库DNS使用了大量的服务器,以层次化的组织形式分布在世界各地。 并非一个DNS服务器就拥有所有主机名到IP地址的映射信息;映射信息分布到了大量的DNS服务器中。 DNS服务器分为3级:(1)根(Root)DNS服务器:截止2012年,班有13个根DNS服务器。顶
17、级域名(TOP-LeVeIDomain)DNS服务器:用于解析.com,.org,.net,.edu,.gov以及所有国家顶级域名,luk,.fr等。权威(AUthoritatiVe)DNS服务器:一个组织的授权DNS服务器提供其自身公开提供服务的服务器的主机名-IP地址映射。另一种没有严格分级的DNS服务器,称作本地(Local)DNS服务器。每一个ISP都有一个本地DNS服务器(也称作缺省(DefaUIt)DNS服务器)。本地DNS服务器扮演这请求主机与以上3级DNS服务器的代理角色。 DNS服务器的迭代式工作步骤:请求DNS服务的主机向其本地DNS服务器发送请求。本地DNS服务器向根DN
18、S服务器发送请求,获取指定的主机名对应的顶级域名DNS服务器IP地址。(3)本地DNS服务器向上一步获取到地址的顶级域名DNS服务器发送请求,获取指定的主机名对应的权威DNS服务器的IP地址。(4)本地DNS服务器向上一步获取到地址的权威DNS服务器发送请求,获取指定主机的IP地址。本地DNS服务器将获取到的地址返回给请求主机。 DNS服务器的递归式工作步骤:请求DNS服务的主机向其本地DNS服务器发送请求。本地DNS服务器向根DNS服务器发送请求。根DNS服务器向顶级域名DNS服务器发送请求。(4)顶级域名DNS服务器向权威DNS服务器发送请求。权威DNS服务器返回结果给顶级域名DNS服务器
19、,递归返回至发起请求的主机。 在实际应用中,DNS请求通常递归地进行至本地DNS服务器,然后迭代地进行剩余的步骤。2. DNS缓存 在一个DNS查询链中,当某一DNS服务器收到一个DNS答复后,将其结果存入本地内存。 当另一个查询请求相同的主机名时,服务器返回上次存入本地内存的信息。 因为主机名和IP地址的映射不是确定的,RS服务器会在一个时间周期结束时丢弃缓存的信息。3. DNS记录和1DNS消息资源记录(ResourceRecord):DNS分布式数据库存储的主机名TP地址映射信息。格式为:(Name,Value,Type,TTL)o TTL(TimeToLive):指定该记录在缓存中存储
20、的时间长度。 Name和ValUC的意义取决于Type: 如果Type=,则Name是主机名,VaIUe是IP地址。 如果TyPe=NS,则Name是一个域名,VaIUe是主机名的一个权威DNS服务器IP地址。如果TyPC=CNAME,则ValUO是一个以Name为别名的主机的IP地址。如果Type=MX,则Value是一个以Nanle为别名的邮件服务器的IP地址。如果一个DNS服务器对于一个主机名是“权威”的,则其应存有该主机名的一条TypeA记录。如果一个DNS服务器对于一个主机名不是“权威”的,则其应存有该主机名的一条TypeNS记录,并存有另一条该TypeNS记录的Value域的Typ
21、e记录。DNS消息DNS消息只有两种类型:查询、回复。两种类型的格式相同。前12字节:头区域(headersection) 标识(identification)域:长16位,标识一次查询。对该查询的回复中,该标识域相同。 标记(flag)域:标记该消息为查询/回复、该(回复)消息发自一个权威服务器、(查询)消息希望DNS服务器以递归方式查询、(回复)消息表示该服务器支持递归。 四个域,分别指示查询的数量、返回的资源记录数量、权威资源记录数量和附加资源记录数量。 问题区域(questionsection):包含查询的信息,该区域包含一个name域和一个type域,对应资源记录中的相同域的意义。
22、1可答区域(answersection):包含答复的信息,由资源记录组成。 权威区域(authoritysection):包含从权威服务器返回的记录。 附加区域(additionalsection):包含一些其它有用的记录。比如,对一条MX记录的查询,其别名的信息将会附加于该区域。六、点对点(P2P)应用点对点应用的一个显著特征是:不需要一个长时间打开的服务器,服务器的角色由普通的PC机扮演;客户端与服务器的连接是间断的。1. BitTorrentBitTorrent是一种流行的P2P文件分布协议。所有参与一个文件分布的点(peer)被称作一个torrcnto在一个torrent中,点互相从其
23、它点下载相同大小的文件块(chunk)o一个典型的块大小为256KB。 当一个点刚刚加入一个torrent时,它不持有任何文件块。过一段时间后,它持有的文件块越来越多。当其在下载文件块时,同时也在上传文件块给其它点。一旦一个点已经获取了完整的文件,它可以选择离开该torrent,也可以留在torrent中继续为其它点上传文件块。任何的点可以在任意时间离开、重新加入一个torrento 每一个torrent持有一个追踪器(tracker)o当一个点加入该torrent时,它向追踪器注册自己,并不断通知追踪器以告知它还在该torrent中。因此,追踪器一直追踪着所有加入该torrent的点。 当一
24、个新的点加入一个torrent时,追踪器随机的选择一些其它点的IP地址发送给这个新加入的点。然后,这个新加入的点尝试与所有收到的IP地址的主机建立TCP连接。与其成功建立连接的点,称为邻接点(neighboringpeer)。邻接点的数量会随时间不断变化。 在任一时间,每一个点都持有文件的一些不同的子块。对于每一个点,它都周期地询问它的邻接点,它持有的子块的列表;并通过这个子块列表,来请求当前它还没有持有的子块。 对于请求子块的顺序,BitTorrent遵循“珍贵优先Carestfirst)”原则:该子块在列表中出现的次数最少,就最优先获取。 对于选择优先响应哪一个点的请求,BitTorren
25、t使用优先级算法:对某一个点,其不停地计算其邻接点的“评价(rate);并选择评价最高的4个点,作为“回报.优先传输文件块给这4个点。每10秒钟,评价就重新计算一次。这4个点被称为“非阻塞(UnChOked)”的;并且,每30秒钟,该点会完全随机地选取一个邻接点,为其传输文件块。被选中的这个点被称为“乐观非阻塞(optimisticallyunchoked),的。对于该点来说,所有其它的邻接点都是阻塞(choked)”的。2. 分布散列表(DHT)分布散列表是一种分布式键值数据库,每一个数据库只持有小部分的数据,并且每一个点都可以向数据库中插入新的数据。 分布散列表中,键永远是一个无符号整数。
26、如果源输入不是整数,则使用散列函数转换为整数。 每一个点持有分布散列表的一小部分。每一个点有一个整数标识符。为一个点指定键Ckey)的方法是:把每一个标识符与下一个键最接近的键值对指派给这个点。 每一个点持有所有其它点的信息是不合理的;维持一个环状点结构,虽然减少了其它点的信息所需的空间,但造成了过多消息的发送。一种折衷的DHT设计是,将每一个点串为环状,并为少部分不邻接的点增加快捷路径。第三章:传输层协议为两个不同主机的应用进程提供了逻辑上的连接。网络层协议为两个不同的主机提供逻辑上的连接。如果网络层的协议没有提供延迟、带宽保证,则传输层协议也不能;但是,传输层协议可以提供可靠数据传递,而网
27、络层的协议不能。传输层将应用层的消息切分成更小的块,并为每一个块增加一个传输层的头信息,来构造一个传输层的段(SOgmCnt)信息。然后传输层将段传递给网络层。一、传输层复用与解复用端口号(PortNumber):套接字在一个主机中的唯一标识符。端口号是一个16位的数(0-65535)oOTO23部分的端口号被称为知名端口号(WeII-knownportnumbers),为知名的应用层协议保留。在传输层数据段的头部,存有源主机套接字端口号和目标主机套接字端口号。传输层复用(MUltiPIeXing):源主机传输层将不同套接字待发送的消息切分、封装(加入头信息)成段并传递给网络层的过程。传输层解
28、复用(Demultiplexing):目标主机传输层将收到的数据段根据头信息中的目标主机套接字端口号发送到其目标套接字的过程。二、用户数据报文协议(UDP)UDP协议只提供了进程间的数据通信和错误检查服务。UDP协议没有握手过程,因此UDP被称为无连接的(COnneCtiOnIeSS)协议。UDP与TCP的显著区别: 应用层对发送什么数据、何时发送数据有更高的控制权:TCP的拥塞控制和承认机制会造成延迟。因此,UDP适用于对实时性要求极高的应用。 不建立连接:TCP在开始传输数据前会进行3路握手。 无连接状态:TCP在终端系统维持着每一个连接的状态,包括接收和发送缓冲、拥塞控制参数、序列数和承
29、认数参数,这些状态信息用于实现TCP的可靠数据传输和拥塞控制。 更短的头长度:每一个数据段中,UDP的头信息占用8字节,TCP的头信息占用20字节。1. UDP协议的复用与解复用 一般地,UDP协议的客户端套接字的端口号可任意指定;客户端只需要指定服务器的套接字端口号。而服务器的套接字的端口号必须事先指定。 客户端主机创建一个传输层数据段,包含了待传输的应用层消息、源端口号、目标端口号,和两个其它值;然后,传输层将该数据段传递给网络层。 网络层将该数据段封装成IP报文并尽最大努力将该数据段发送到目标主机。如果数据段到达目标主机,目标主机的传输层检查段头的目标端口号,将该数据段发送到该端口号对应
30、的套接字中O 一个UDP套接字由一个二元组唯一、完全地标识:目标IP地址和目标端口号。2. UDP段结构:源端口号、目标端口号、长度(头与消息的总大小)校验值、应用层消息。前四个域分别占用16位,组成了UDP段的头部,长8字节。3. 校验值计算:发送端将前三个域相加(结果若超出16位,截断即可),求该结果对1的补,即得最终校验值。接收端将四个域相加,如果该数据段没有任何错误,相加的结果应为16位1(1111IlllIlllllll)o三、可靠传输原则1 .自动重复请求(ARQ)协议:接收方向发送方发送肯定(POSitive)/否定(negative)确认(acknowledgment)控制消息
31、,发送方得知哪些消息被正确接收、哪些需要重新发送。ARQ需要实现如下3个功能:错误检测:接收方通过包校验值来检测数据正确性。接收方反馈:接收方要向发送方发送确认消息。重传:发送方收到否定确认消息就要将该包重新传输。ARQ存在的一个致命问题是确认消息可能就会损坏。3种可能的修复方法:加入一种新的控制消息用于确认“确认消息”是否正确接收。但是,这一新消息也可能损坏,因此该方法不可行。加入足够长的校验值,使其足以让接收方恢复错误。但是,这一修复方法的潜在假设是,传输通道只会损坏数据,而不会丢失数据。一旦收到损坏的确认消息,发送方就重发数据包。但是,接收方将无法区分这一重发的数据包是新数据包还是旧数据
32、包的重发。2 .序号(suquencenumbcr):对ARQ修复方法的缺陷的解决方法:在头部加入一个序号域,这样接收端就可以得知这个包是新数据包还是重传包。这个序号只需要在0、1间变动,即可确认这个包是新包还是旧包。在实际应用中,序号域在包头中占用一块定长的区域。3 .应对包丢失:传输通道可能会直接将包丢失。发送端应审慎地选定一个等待肯定确认消息的超时时间,当超过该时间后仍未收到肯定确认,则直接重发该包。然而,实际应用中,一个包可能会经历极长的延迟,但其最终还是会到达目标,这就可能造成数据包的重复发送。通过序号可以解决该问题。倒计时计时器(COUntdOWntimer):一种基于时间的重传机
33、制,在一个给定的超时时间达到后中断发送方。发送方需要在每一个包发出时启动一个超时计时器,响应一个计时器中断(重传)和在收到肯定确认后停止计时器。4 .Go-Back-N(GBN)协议:发送端一次性可以发送多个包而不用等待确认,但最多不能超过N个包。其中,N被称为窗口大小(windowssize),因此GBN协议也被滑窗(sliding-window)协议。一个窗口应被分为两部分:一部分是已经发送但尚未收到肯定确认的包,另一部分是尚未发送的包。序号在该协议中必须占用更多的位,因为仅仅在0、1间变化已不足够。假定窗口内第一个包的序号为base,第一个尚未发送的包的序号为base+n,则序号为bas
34、e+nbasc+N-I的包都可以立即被发送,而base+N起的包暂时不能。每当收到了窗口前n个包的肯定确认,就将窗口向右滑动n位,以时刻保证窗口最左部刚好是已经发送但尚未收到肯定确认的包。当有新数据到达发送端传输层时,如果窗口没有被填满,则构造一个新包并立即发出;否则传输层会发出拒绝信息(在实际应用中,可能会使用同步机制,以只让应用层在窗口不满时才能向传输层发送数据)。当发送端传输层收到一个序号为n的包的肯定确认时,传输层可确定序号为n及小于n的包均已正确收到。这一行为称为“累积(cumulative)确认”GBN协议同样使用计时器来处理包丢失和超时事件。该协议只使用一个计时器,其跟踪最旧的一
35、个已经发出但尚未收到确认的包的延时。一旦收到了确认信息,计时器就被重置;如果超时发生,计时器重置的同时将会把窗口中那些已经发送了但尚未收到确认的包全部重发;如果所有的包都已经收到了确认信息,并且没有还需要发送的包,计时器停止。对接收端而言,接收端严格按照序号顺序来接收收到的包。如果当前收到一个与期望的序号相同、并且没有损坏的包,接收端发出一个该序号的肯定确认;在任何其它情况下,接收端都将丢弃收到的包,重发一次最近收到的符合期望的包的序号的肯定确认。5 .选择性重传(selectiverepeat)协议:GBN协议的一个重大缺陷是,仅仅一个包的损坏也会导致大量的包(完全没有必要地)重传。SR协议
36、通过让接收端独立地确认正确收到的包来避免不必要的重传。SR协议同样使用一个大小为N的窗口,但是窗口中包含已经收到了肯定确认的包,这些包没有发出按照顺序收到肯定确认,它们分布于那些已经发出但尚未收到确认信息的包的范围内。同时,接收端也要使用一个窗口,用于缓存那些没有按照期望顺序收到的正确的包。接收端对所有正确收到的包都发送肯定确认,不符合期望顺序的包被缓存起来,直到所有丢失的包都被收到。对于发送端,SR协议与GBN协议的不同有: 每一个包需要独立的逻辑计时器,若该计时器超时,只重发其对应的那一个包。 当收到一个肯定确认时,如果该包在窗口中,则将其标记为己收到;如果该包恰好是窗口中的第一个包,则将
37、窗口滑动至当前窗口内第一个发出但尚未收到确认的包,并且发送新进入窗口而没有发送的包。对于接收端,SR协议按照如下规则管理窗口: 窗口左部始终对齐第一个应该接收到,但还未实际收到的包的位置。当收到一个正确的、窗口内的包时,接收端向发送端发送该包的肯定确认。如果该包恰好是窗口中的第一个包,则将与其右邻接的连续的所有已确认收到的包传递给应用层,向上传递了多少个包,就将窗口向右滑动多少个包。 当收到一个正好处于该窗口左方一个窗口大小内的正确的包时,接收方需要对该包发送一个重新确认(reacknowledge)o对于任何其它情况,简单地忽视该包即可。6 .如何选定窗口大小?不恰当的窗口大小会造成接收方无
38、法区分一个包是上一窗口的包的重传还是新包。可以证明,窗口大小必须小于等于SR协议中最大序号的一半。7 .在真实网络环境下,可能会出现这样的情况:接收端收到一个正确的包,但它目前既不在发送端的窗口中,也不在接收端的窗口中。因为序号会被重用,因此发送端为了避免这样的包被接收端当作是“正确”的新包/重传包,必须确保前一个使用了同样序号的包已经不在网络中。在TCP告诉网络扩展中,规定包最大生命时间大约是3分钟。四、传输控制协议(TCP)TCP协议通过流量控制(flowcontrol)序号(SeqUCneenumber)n确认(acknowledgment)计时器(Timer)提供了可靠数据传输:数据从
39、发送端到接收端一定是完整的,并且发送的顺序和接收的顺序是相同的。TCP协议提供了拥塞控制服务,避免任何一个TCP连接在过量的数据流量下在路由器、交换机中“迷路:TCP协议限制了发送端的速度(UDP则不限制)。TCP连接提供全双工(full-duplex)服务,即通过TCP连接的两个主机可以同时向对方发送、接收数据。TCP连接是点对点的。1. TCP协议的复用与解复用 TCP套接字与UDP套接字的微小区别是:TCP套接字由一个四元组唯一标识,即源IP地址、源端口号、目标【P地址、目标端口号。两个来自于不同源地址、甚至只是来自于不同端口号的数据段,在服务器都会被发送到不同的套接字中。 TCP客户端
40、首先要发送一个连接建立请求,该请求是一个TCP数据段,在头部包含源端口号、目标端口号和一个特殊的连接建立位。 服务器操作系统收到了连接建立请求后,会找出正在目标端口号监听的服务器进程。这个服务器进程将新建一个套接字,该套接字由这个连接建立请求提供的源端口号、源IP地址、目标端口号和目标IP地址唯一标识。后来的4个值与该套接字标识相同的数据段将会直接被解复用到这个套接字中。2. TCP连接建立:三次握手,客户端发送一特殊TCP段、服务器应答一特殊TCP段、客户端应答一特殊TCP段。前两个段没有附加数据,最后一个段可以选择携带附加数据(即应用层消息)。数据交换: 发送缓冲(sendbuffer):
41、在三次握手期间初始化。TCP不停地从发送缓冲中取数据并传递给网络层。 接收缓冲(receivebuffer):当另一端的TCP收到数据段时,这个数据段被放入该TCP连接的接收缓冲中。连接的两端都有自己的发送、接收缓冲。 最大段大小(MaXimUmSegnIentSize):每一次从发送缓冲中取出并封装成段的最大大小。通常MSS由链路层定义的最大传输单元(MaximumTransmissionUnit)大小链路层帧的最大大小来首先决定,然后确保一个TCP段加上TCP/IP头长度的大小能刚刚好不超过一个链路3. TCP段结构TCP段的头的长度为20字节。内容依次为: 16位的源端口号和16位的目标
42、端口号。 32位的序号和32位的确认号,用于可靠传输。 4位的头部长度。由于存在可选的、变长的选项域Optionsfield),TCP的头部长度可以是变长的(20字节-更多)。 6位长的没有使用的域。 6位标记域。依次为: URG:实际上,该域不被使用。 ACK:指示确认号的值是有效的,该段包含一个对某序号的包的肯定确认。 PSH:实际上,该域不被使用。 RST,SYN,FIN:用于连接建立和关闭。 16位的接收窗口(receivewindow),用于流量控制。 16位的校验值(InIernetCheCkSUm)。 16位的紧急数据指针(UrgCntdataPOinter)O实际上,该域不被使
43、用。 变长的选项域(optionsfield),用于发送端和接收端协商MSS的值,或在高速网络中用于放大窗口。4 .序号和确认号 序号:TCP将携带的数据视为无结构的有序字节流。对一个TCP段,其序号是该段中第一个字节的字节流编号,而不是段的个数。 确认号:对主机A、B而言,主机A将其期望从B接收到的下一个字节的序号,作为确认号,放入其发送给B的段中。 在实际应用中,TCP连接的两端都会随机生成一个初始序号,用于最小化早前一个已经关闭的连接的数据段仍在网络中导致数据传输出错的可能。5 .超时间隔计算样本(Sample)RTT:TCP通过测量只被传输一次的段的RTT来获得样本RTTo预计的(Es
44、timated)RTT:TCP维护的一个样本RTT的带权平均值。由下式可知,它给予最近的样本更大的权重。EstimatedRTT=(I-a)EstimatedRTT+aSampleRTT,其中a的推荐值为18,DevRTT:用于衡量样本RTT和预计的RTT的差别。DevRTT=(1-b)DcvRTT+b!SamplcRTT-EstimatodRTT,其中b的推荐值是O.25o(4) TCP的超时间隔(TimeoutInterval)通过计算上述的两个值来估算。TinieoutInterval=EstimatodRTT+4DovRTT初始的超时间隔推荐设为1秒。当一次超时出现时,该值被翻倍。当预
45、计的RTT被更新时,该值被重新计算。6 .TCP的可靠数据传输:与GBNSR协议的异同 与GBN协议相同,TCP协议只使用一个重传计时器。这一计时器总是跟踪着最旧的一个尚未收到肯定确认的段。同样,TCP只维护尚未收到确认的段的最小序号,和待发出的段的序号(这一行为与GBN的窗口极相似)。 与GBN协议相同,TCP协议使用累积确认。 与GBN协议不同,TCP协议重传时只传最早的那一个没有收到确认的段。 TCP不使用否定确认。接收方的肯定确认(ACK)生成策略(以下均假定收到的包是正确的,也就是说,对破损的包,除将其丢弃外不作任何处理): 收到一个符合预期序号的段:如果当前有一个ACK尚未发出,则
46、立即发送一个累积ACK;否则,等待500毫秒,如果在500毫秒内没有收到另一个符合预期序号的段,则发出这个包的确认信息。 收到一个超过了预期序号的段:段丢失发生,立即发送一个重复(duplicate)ACK,该ACK的确认号是丢失的段的序号。接收方将该段放于缓冲区,而不是丢弃它。发送方如果收到了3次相同段的重复ACK,就执行一次快速重传(fastretransmit):在这个段超时前就重发一次该段。可以看到,这一策略与GBN、SR协议均有显著不同。 收到一个重发的段:如果该重发段没有填满丢失的段,立即发送一个ACK,该ACK的确认号是丢失段的最小序号;否则不发送ACK。一个已经提出的对TCP的修改是引入选择性(SeIeCtiVe)确认/重传,允许接收方对超出预期序号的段发出SACK(SelectiveACKnowlcdgmcnt),而发送方在重传时,略过这些已经被接收方确认的段。引入该机制后,TCP协议与SR协议更加相似。该特性作为TCP的选项(Option)引入。7.流量控制TCP提供流量控制服务来消除发送端发送的数据溢出接收端的现象,因此,流量控制是一种发送端和接收端之间的速度匹配服务。 发送端维护着称为接收窗口(receivewindow)的变量,该变量的意义是接收