计算机网络复习题7.docx
《计算机网络复习题7.docx》由会员分享,可在线阅读,更多相关《计算机网络复习题7.docx(28页珍藏版)》请在冰点文库上搜索。
计算机网络复习题7
第七章传输层
v问题提出:
›IP包在网络层传送过程中由于网络硬件损坏、网络负荷过重、目的网络、目的主机、目标端口不可达等原因,导致IP包被丢弃或损坏;
›由于IP包的体积是有限的,而应用系统之间交换的数据往往会超过这个限制,因此,必须有一套机制将应用系统送来的数据进行划分,以符合IP包的传送要求;
›由于IP包路由的复杂性及不可预测性,IP包之抵达常是不依序的,必须对IP包进行组装和控制;
›主机上同时可能有多个应用系统之间需要进行通信的情况,需要标示;
v需要一套传输控制机制,以更可靠、更方便和有效的传送数据,且将这种机制与应用程序分离开,并向应用程序提供一致的数据流传送接口。
v传输层是TCP/IP网络体系结构中至关重要的一层,它的主要作用就是保证端对端数据传输的可靠性。
在IP互联网中,传输控制协议(TransportControlProtocol,TCP)和用户数据报协议(UserDatagramProtocol,UDP)是传输层最重要的两种协议,它们为上层用户提供不同级别的通信可靠性。
v点到点(PointToPoint)连接:
在连接的双方之间没有经过第三方转接,如串行电缆连接、调制解调器拔号连接等。
v端到端(EndToEnd)连接:
终端与终端之间的连接,并且连接中还需经过第三方转连,如主机A与主机B之间通过一个或多个网络设备如交换机、路由器等转连。
端对端通信
v互联网提供了一个虚拟的通信平台。
在这个平台中,数据报从一站转发到另一站,从一个结点又传送给另一个结点,其主要的传输控制是在相邻两个结点之间进行的。
传输层需要提供一个直接从一台计算机到另一台远程计算机的端到端通信控制。
v传输层只把互联层看做一个包通信系统,这一通信系统负责连接两端的主机,能够接收和传递传输层的数据而不会改变和干预这些数据。
v传输层存在于端口开放系统中,是介于低三层(物理层、数据链路层和网络层)通信子网系统和高3层(会话层、表示层和应用层)资源子网之间的一层,是属于资源子网的最低层,起到承上启下的不可或缺的作用。
同时,传输层负责端到端(EndToEnd)的通信,是面向通信的最高层。
传输协议的要素
•编址
•建立连接
•释放连接
•流控制和释放
•多路复用
•崩溃恢复
传输协议
(a)数据链路层的环境
(b)传输层的环境
编址
TSAP、NSAP和传输连接
7.1.1传输协议数据单元
v一个传输层协议实体与传输服务用户间的通信,是通过一个或多个传输服务访问点(TransportServeAccessPoint,TSAP)以及服务原语进行的。
服务原语使得在同一个传输连接(TC)上的两个对等传输实体间进行传输协议数据单元(TransportProtocolDataUnit,TPDU)的交换。
这些TPDU的交换是通过一个或多个网络服务访问点(NetServeAccessPoint,NSAP),以及网络服务实现的。
借助TPDU中的地址和NSAP,能唯一地识别传输连接上的传输服务用户。
7.1.2传输层服务
v传输层服务包括的内容有:
服务的类型、服务的等级、数据传输、用户接口、连接管理、快速数据传输、状态报告、安全保密等。
服务类型
›传输服务有两大类,即面向连接的服务和无连接的服务。
面向连接的服务提供传输服务与用户之间逻辑连接的建立、维持和拆除,是可靠的服务,而且可提供流量控制、差错控制和序列控制,如TCP协议提供的服务。
无连接服务即数据报报务,只能提供不可靠的服务,如UDP协议提供的服务。
服务等级
v可靠的面向连接的协议
v不可靠的无连接协议
v需要定序和定时传输的话音传输协议
v需要快速和高可靠的实时协议
向上层提供的服务
网络层、传输层和应用层
数据传输
传输层的最基本任务就是数据传输,它负责在两个传输实体之间传输用户数据和控制数据。
一般采用全双工服务,有的环境中也可采用半双工服务,数据可分为正常的服务数据分组和快速服务数据分组两种,对快速服务数据分组的传输可随时中止当前的数据传输,在接收端用中断方式优先接收。
传输服务原语
一个简单传输服务的原语
传输服务原语
TPDU、分组和帧的嵌套关系
传输服务原语
BerkeleySockets
TCP的套接字原语
传输层服务端口
如何标示主机上的应用进程:
主机上可能有多个进程同时运行,发送端如何将数据包发给指定进程呢?
当数据包抵达目的地后,接收端又如何将它交给正确的服务进程处理呢?
--门牌号码
vTCP/UDP通过端口与上层的应用进程交互,端口标识了应用层中不同的进程。
端口相当于OSI传输层与上层接口处的服务访问点SAP。
v为每个需要通信的应用程序分配一个通讯端口(Port),在TCP/IP中,其值为1~216,用于唯一标识一个进程;
v在技术上,进程使用哪一个端口并不重要,关键是能让对方知道就行,同一主机中进程的端口号必须是唯一的。
端口的分配有:
›全局分配—编号从1到1024这些端口标识了某些特定服务的协议,这种端口是不可再重新定义,如21表示FTP服务,23表示TELNET服务等;
›本地分配—用于标识主动要求通信或非公开服务的进程,由进程动态申请获得。
连接管理
v在面向连接的传输层服务中,面向连接协议是需要提供建立和终止连接功能的。
一般总是提供对称的功能,即两个对话的实体都有连接管理的功能。
对简单的应用也有仅对一方提供连接管理功能的情况。
连接的终止可以采用立即终止传输,或等待全部数据传输完再终止连接。
流控制和缓冲
流控制和缓冲
动态缓冲区分配过程箭头显示了传输的方向,省略号(…)代表一个丢失的TPDU.
崩溃恢复
客户和服务器策略的不同组合
状态报告
v传输层的状态报告服务是指向传输层用户提供传输层实体或传输连接的状态信息。
安全保密
v传输层的安全保密服务包括对发送者和接收者身份的确认、数据的加密和解密,以及通过保密的链路和节点的路由选择等安全保密的服务。
7.1.3传输层的多路复用和多路解复用
v传输层的TCP/UDP要和应用层的多个进程交互,使用端口标识了不同的进程,传输层通过端口机制提供复用(Multiplexing)和解复用(Demultiplexing)的功能。
v每个应用层程序在发送用户数据之前与操作系统进行交互,获得协议端口和相应的端口号,应用层进程通过这个端口交给TCP/UDP发送,发出的所有TCP报文段/UDP数据报,其源端口字段都写入该端口,这样多个应用层进程可以通过不同的端口复用TCP/UDP发送数据。
在接收端,TCP/UDP从IP层软件接收TCP报文段/UDP数据报,根据其中的目的端口进行解复用,交给不同的应用进程。
多路复用
(a)向上多路复用(b)向下多路复用
Internet使用的传输层协议
vInternet使用的传输层协议有传输控制协议TCP[RFC793]和用户数据报协议UDP[RFC768]。
一般,TCP和UDP共存于互联网的传输层。
7.2UDP协议(UserDatagrameProtocol)
vUDP是在IP层之上,和IP层一样提供无连接的数据报服务,与IP相比,主要增加了协议端口功能,以提供主机上进程之间的通信服务。
›不可靠的数据报(datagram)服务;
›不支持报文分组;
›支持多路复用;
›不提供流量控制;
›服务效率高(没有建/拆链时间);
›适合于在高可靠性、低延时的局域网上运行;
›数据的可靠性等问题由上层协议解决。
vUDP提供无连接的数据报报务,该服务对消息中传输的数据提供不可靠的、最大努力传送。
这意味着它不保证数据报的到达,也不保证所传送数据包的顺序是否正确。
UDP不重新传输丢失的数据。
UDP消息由UDP标头和UDP有效负载构成。
v用户数据报协议(UDP)是一个简单的面向数据报的传输层协议.IETFRFC768是UDP的正式规范。
在TCP/IP模型中,UDP为网络层以上和应用层以下提供了一个简单的接口。
vUDP只提供数据的不可靠传输,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份。
UDP在IP数据报的头部仅仅加入了复用和数据校验字段。
v由于缺乏可靠性,UDP应用一般必须允许一定量的丢包、出错和复制。
有些应用,双如TFTP,如果需要则必须在应用层增加根本的可靠机制。
但是绝大多数UDP应用都不需要可靠机制,甚至可能因为引入可靠机制而降低性能。
流媒体(Streamingmedia)、实时多媒体游戏和网络电话就是典型的UDP应用。
如果某个应用需要很高的可靠性,那么可以用传输控制协议TCP来代替UDP。
v由于UDP协议缺乏拥塞避免和控制机制,需要基于网络的机制来减少因失控和高速UDP流量负荷而导致的拥塞崩溃疚。
因为UDP发送者不能够检测拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低UDP过大通信量的有效工具。
vUDP协议只在IP的数据报服务之上增加了端口的功能和差错检测的功能.
vUDP协议应用程序可以是客户机程序,也可以是服务器程序,不必像TCP协议应用程序那样必须分别建立客户机程序和服务器程序。
在远程控制软件中,如果在局域网内部传输屏幕信息,则使用UDP协议比较容易实现。
但UDP协议不提供可靠性,它把应用程序传给IP协议层的数据发出去就完成了,根本不能保证所发送的数据能到达目的地,这个可靠性是交给其他网络设备来解决的。
同时用UDP协议来传输的数据一般较小,它需要IP协议来为它对数据进行分段。
理论上,IP协议数据报的最大长度为65535字节,这是由IP协议首部16位的总长度所限制的,除去20字节的IP协议首部和8字节的UDP协议首部,UDP协议数据报中用户数据的最大长度就只为65507字节了。
v典型网络上的众多使用UDP协议的关键应用一定程序上是相似的,这些应用包括域名系统(DomainNameSystem,DNS)、简单网络管理协议(SimpleNetworkManagementProtocol,SNMP)、动态主机配置协议(DynamicHostConfigurationProtocol,DHCP)和中币信息协议(RoutingInformationProtocol,RIP)等。
7.2.2UDP报文格式、伪报头和端口
vUDP报文称作数据报。
因为UDP是建立在IP之上的,整个UDP用户数据报封装在IP数据报的数据区中传输。
UDP用户数据报格式非常简单,分为报头和数据区两部分。
UDP报头
UDP报文格式
UDP端口
v由于UDP协议并不需要建立一个明确的连接,因此建立UDP协议应用较简单,使用该协议传送数据,首先设置客户计算机的LocalPort(本地端口)属性。
而做为服务器的计算机仅需要而做为服务器的计算机仅需要而做为服务器的计算机仅需要设置RemoteHost(远程主机)属性为客户计算机的IP地址或域名即可,并将其RemoteHost(远程主机)属性设置成客户计算机上的LocalPort(本地端口)属性即可。
v当应用软件向另一计算机发送数据时,UDP协议生成一个数据头,包括源端口,目的地端口,这些端口提供送达信息所需要的地址。
UDP协议还为数据和数据头计算出求校验和的值。
在目标计算机中,数据包被传递至UDP协议程序并送到目的地端口。
v要使用UDP,应用程序必须提供源和目标应用程序的IP地址和UDP端口号。
端口提供了用于发送消息的位置。
每个端口由一个唯一的编号来标识。
尽管某些UDP端口和TCP端口使用相同的编号,但这两种端口是不同的而且相互独立。
1024以下的UDP端口号是人们熟悉的。
UDP端口
UDP端口提供了用于发送消息的位置。
每个端口由一个唯一的编号来标识。
尽管某些UDP端口和TCP端口使用相同的编号,但这两种端口是不同的而且相互独立。
1024以下的UDP端口号是人们熟悉的。
TCP与UDP各自拥有自己的端口号,即使TCP和UDP的端口号相同,主机也不会混淆它们。
vUDP端口号:
v53DOMAIN域名服务器
v67BOOTPS引导协议服务器
v68BOOTPC引导协议客户机
v69TFTP简单文件发送
v161SNMP简单网络管理协议
v162SNMP-TRAP简单网络管理协议陷井
v常见的UDP端口
UDP多路复用
远过程调用
执行远过程调用的步骤(阴影部分为存根)
实时传输协议
(a)RTP在协议栈中的位置(b)分组嵌套情况
实时传输协议
RTP头
7.2.3UDP的特点:
v可靠性差:
UDP在可靠性方面的做的工作很少,在UDP/IP这个协议组合中,UDP校验和是检验数据正确传输的惟一手段,而且它还是可选的。
如果UDP校验和域为“0”就表示不进行校验和计算。
即使进行校验和计算,当校验和出现差错时,UDP也没有差错控制机制,只是交与上层处理。
另外,UDP传输之前,通信双方并不建立连接,而是直接将用户数据报发往目的结点,即使对方关机或故障,也是如此。
传输中,UDP也不进行流量控制和拥塞控制。
因此,基于UDP的应用程序在不可靠的网络上必须自己采取措施,对报文出错、丢换和换序等问题进行必要的处理。
v效率高:
实际应用中,通信双方经常有交换短报文的情况,而且一次通信过程往往只有一来一回两次传输,如果为此而建立和关闭连接,通信效率会很低。
这种情况下使用UDP,即使偶有出错重传,总的开销比每次都要建立和关闭连接还要小。
另外,UDP首部只有8个字节的开销,而TCP是20个字节。
因此,UDP提供的是无连接的不可靠但高效率的传输服务。
v适合传输实时数据:
IP电话、视频会议等实时应用的特点是要求主机以恒定的发送数据,允许在网络发生拥塞时丢失一些数据,但不希望数据有大的时延和时延抖动。
UDP不进行拥塞控制,当Internet上出现拥塞时不会降低数据发送速率。
适合多媒体传输的实时传输协议RTP与实时传输控制协议RTCP就使用了UDP。
7.3TCP介绍
vTCP/IP是行业标准协议套件,此协议是专为那些通过路由器相连的不同网络段构成的大型网络而设计的。
vTCP/IP的主要功能有:
面向连接的传输机制,超时重传控制,可变滑动窗口流量控制和拥塞控制。
TCP协议(TransmissionControlProtocol)
vTCP除了提供和UDP一样的主机中进程通信能力外,还增强了通信的可靠性。
›面向连接(采用虚电路技术)的服务,需要建/拆链;
›全双工字符流通信;
›支持报文分组;
›提供包的差错控制、顺序控制、应答与重传机制;
›提供流量控制;
v保证发送方不会“淹没”接收方;
›提供报文拥塞控制;
v保证发送方不会“淹没”网络中的路由器。
7.3.1TCP数据流传输
vTCP提供的是面向连接的可靠的数据流传输。
为了便于每次的传输,又把数据流划分为若干个段,称为报文段(Segment),每个报文段作为TDP报文的封装是一样的。
报文段到达目的站后,TCP再将它们组装为原来的数据流。
vTCP对数据流按字节编上序号,而不是按报文段编序号。
TCP将传输的报文段所携带数据的第一个字节的序号放在报文段首部的序号字段中。
序号的空间应该足够大,在TCP报文段格式中规定为32比特,以便使序号笔循环一周的时间足够长,不致于在短时间内产生相同的序号。
vTCP定义了最大报文段生存时间(maximumsegmentlifetime,MSL),RFC793定为120秒,后来不同的TCP实现中也有不同的值,如60秒等。
因为TCP报文段是由IP数据报携带传送的。
因此MSL不应大于IP数据报中在网上的最大生存时间TTL的值(120秒)。
在MSL时间内,同时出现相同序号的报文段会给接收TCP造成混淆,也就是说序号循环一周的时间应该大于MSL。
vTCP采用累计确认(cumulativeacknowledgement)方式,收方确认已正确收到的、积累的连续数据流。
各层服务概述
TCP提供的服务
v从用户的角度:
TCP可以提供面向连接的、可靠的、没有数据重复或丢失、全双工的数据流传输服务。
它允许两个应用程序建立一个连接,然后发送数据并终止连接。
每一个TCP连接可靠地建立,优雅地关闭。
保证数据在连接关闭之前被可靠地投递到目的地。
TCP服务的特征
v面向连接(ConnectionOrientation):
在发送正式的数据之前,应用程序首先需要建立一个到目的主机的连接,这个连接有两个端点,分别位于源主机和目的主机之上。
一旦连接建立完毕,应用程序就可以在该连接上发送和接收数据。
v完全可靠性(CompleteReliability):
TCP确保通过一个连接发送的数据正确地到达目的地,不会发生数据的丢失或乱序。
v全双工通信(FullDuplexCommunication):
一个TCP连接允许数据在任何一个方向上流动,并允许任何一方的应用程序在任意时刻发送数据。
v流接口(StreamInterface):
TCP提供了一个流接口,应用程序利用它可以发送连续的数据流。
即,TCP连接提供了一个管道,只能保证数据从一端正确地流到另一端,但不提供结构化的数据表示法。
如TCP不区分传送的是整数、实数还是记录或表格。
v连接的可靠建立和优雅关闭(ReliableConnectionStartup&GracefulConnectionShutdown):
在建立连接的过程中,TCP保证新的连接不与其他连接或过时的连接混淆;在连接关闭时,TCP确保关闭之前传递的所有数据都可靠地到达目的地。
TCP/IP的基本工作原理
TCP服务模型
(a)以单独IP数据报的形式发送4个512字节的数据段
(b)在一个READ调用中,这2048字节的数据被一次递交给应用程序
1.信息流动过程
2.网络互连路由器
两种不同的重组机制
数据包的确认
v为了保证数据包的可靠传递,发送方必须把已发送的数据暂时保留在缓冲区,收到接收方的应答后才能删除之,TCP提供的是字符流的通信,故采用的是字节确认。
v字节确认(累计确认)
›由于TCP协议使用可变长度的报文段发送数据,TCP协议的确认是针对数据流中的字节序列;
›接收方为了确认已收到的累计的字节数,在TCP报文的AckNo中指出下一个希望接收的字节数;
›TCP的确认报文可以是专门ACK报文,也可以在发给对方的数据报中捎带确认,取决于在应答定时器超时前己方是否有数据发给对方。
v字节确认机制特点
›确认丢失也不一定导致发送方重传(Why);
›发送方不一定获得所有成功传送的报文段的确认信息。
v例子:
数据包超时和重传
v为了保证数据包的可靠传递,发送方必须把已发送的数据包保留在缓冲区,并为之启动一个超时定时器;
v如在定时器超时之前收到了对方发来的应答信息(可能是对本包的应答,也可以是对本包后续包的应答),则释放该数据包占用的缓冲区;
v否则,重传该数据包,直到收到应答或重传次数超过规定最大次数止。
v如何确定超时定时器的时间长TimeOut?
›往返时间采样(测量)值RTS(RoundTripSample);
›往返时间RTT(RoundTripTime)–报文发送到确认返回的估计时间;
›无重传情况:
vTimeOut=β*RTT,β为1的加权因子,一般β=2;
vRTT=α*Old_RTT+(1-α)*RTS,0α1的加权因子;
重复包的处理
v重复包的判断与处理
由于RTT的设定不准确性,数据包有重传就可能有重复,例如:
--由于网路状况或其它原因,当数据包的计时器超时,发送端还没接收到确认包,就会认为该包丢失了,并重发;
--但如果重发之后又收到了确认包,也就是说数据包并没有丢失,这时接收端就会收到一个重复包;
v接受方根据数据包的发送序号和希望收到的序号,可以来判断该包是否被重复发送,如果重复,将之丢弃。
7.3.2TCP报文格式
vTCP软件之间传输的协议数据单元PDU为报文,通过报文的交互来建立连接、传输数据、发出确认、通告窗口大小以及关闭连接。
TCP报文格式
TCP数据段头
TCP头
在TCP校验和计算中的伪头部
TCP报文格式(cont.)
(1)源端口和目的端口
›各2个字节,表示源和目的端口号。
(2)发送序号
›4字节,指出本报文中的数据的第一个字节在发送方本次连接上发送的数据流中的位置(以字节编号,SYN=1时表示启始值,不一定为0)。
(3)确认序号
›4字节,告诉对方希望下一次接收的字节序号,与ACK=1配合使用;
›当接收端接收到TCP包并检验确认后,将发送序号加上数据长度产生一个确认序号,附在下一个数据包中捎带给对方(无需送出专门的确认包),这样发送端就知道刚才的包已经被成功接收到了。
TCP报文格式(cont.)
(4)TCP头长/即数据区相对位移
›4比特,指出以4字节为单位的报文头部长度,如没有选项,则为5即20Bytes。
该域是针对变长的“选项”域设计的。
(5)紧急标志位URG(URGent)
›当URG=1时,表明此报文是紧急数据,应尽快传送出去,接收方应优先处理。
(6)确认标志位ACK
›只有当ACK=1时确认序号字段才有意义。
当ACK=0时,确认序号没有意义。
TCP报文格式(cont.)
(7)急迫标志位PSH(PuSH)
›当PSH=1时,该包连同传送缓冲区的其它包应立即进行传送,而无需等待缓冲区满了才送,接收端必须尽快将此数据交给程序处理。
(8)重建标志RST(ReSeT)
›当RST=1时,表明出现严重差错,必须释放连接,而无需等待终止确认手续。
(9)同步标志位SYN,
›当SYN=1而ACK=0时,表明这是一个建立连接请求报文,若对方同意建立该连接,则在发回的报文中使将SYN和ACK标志位同时置1。
(10)终止标志位FIN(FINal)
›当FIN=1时,表明数据已经发送完毕,并请求释放连接。
TCP报文格式(cont.)
(11)窗口
›2字节,接收方告诉发送方它的接收窗口大小(接收缓冲区的个数),其单位为字节。
窗口字段主要是用于流量控制和拥塞控制。
(12)校验和
›2字节,校验和字段检验的范围包括TCP报文的头部、数据区和伪包头。
(13)紧急指针
›2字节,当URG=1的时,紧急指针就会指示出紧急数据所在位置。
(14)可选项
›长度可变,Option的长度要么是0,要么就是32bit的整倍数。
TCP只规定了一种选项,即最长报文段MSS(MaximumSegmentSize)。
vTCP连接是字节流而非报文流
7.3.4TCP连接管理
vTCP建立在一个不可靠的虚拟通信系统上,发送方利用重发(Retransmission)技术补偿数据包的丢失。
v使用重发机制的过程中,如果接收方的TCP正确地接收到一个数据包,它要回发一个确认(Acknowledgement)信息给发送方。
而发送方在发送数据时,TCP需要启动一个定时器,在定时器到时之前,如果没有收到一个确认信息,则发送方重发该数据。
vTCP通过测量收到一个确认所需的时间来为每