习题
试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的?
运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务。运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信(面向主机,承担路由功能,即主机寻址及有效的分组交换)。各种应用进程之间通信需要“可靠或尽力而为”的两类服务质量,必须由运输层以复用和分用的形式加载到网络层。
网络层提供数据报或虚电路服务对上面的运输层有何影响?
网络层提供数据报或虚电路服务不影响上面的运输层的运行机制。但提供不同的服务质量。
当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是面向无连接的?
TCP协议是面向连接的,但TCP使用的IP协议却是无连接的
这要在不同层次来看,在运输层是面向连接的,在网络层则是无连接的
试用画图解释运输层的复用。画图说明许多个运输用户复用到一条运输连接上,而这条运输连接又复用到IP数据报上。
试举例说明有些应用程序愿意采用不可靠的UDP,而不用采用可靠的TCP。
VOIP:由于语音信息具有一定的冗余度,人耳对VOIP数据报损失有一定的承受度,但对传输时延的变化较敏感。有差错的UDP数据报在接收端被直接抛弃,TCP数据报出错则会引起重传,可能带来较大的时延扰动。因此VOIP宁可采用不可靠的UDP,而不愿意采用可靠的TCP。
接收方收到有差错的UDP用户数据报时应如何处理?
丢弃
如果应用程序愿意使用UDP来完成可靠的传输,这可能吗?
可能,但应用程序中必须额外提供与TCP相同的功能。
为什么说UDP是面向报文的,而TCP是面向字节流的?
发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。 发送方TCP对应用程序交下来的报文数据块,视为无结构的字节流(无边界约束,可分拆/合并),但维持各字节
端口的作用是什么?为什么端口要划分为三种?
端口的作用是对TCP/IP体系的应用进程进行统一的标志,使运行不同操作系统的计算机的应用进程能够互相通信。把端口划分为3类是因为:避免端口号重复,无法区分应用进程。二是因特网上的计算机通信都是采用C/S方式,在客户发起通信请求时,必须知道服务器的端口,对于一些主要的应用程序,必须让所有用户知道。
服务端使用的端口号:系统端口号(把这些端口号指派给一些重要的应用)、登记端口号(为没有熟知端口号的应用程序使用) 客户端使用的端口号:客户进程运行时动态选择
某个应用进程使用运输层的用户数据报UDP,然而继续向下交给IP层后,又封装成IP数据报。既然都是数据报,可否跳过UDP而直接交给IP层?哪些功能UDP提供了但IP没提提供?
IP报承担主机寻址,提供报头检错;只能找到目的主机而无法找到目的进程。UDP提供对应用进程的复用和分用功能,以及提供对数据差分的差错检验。
一个应用程序用UDP,到IP层把数据报在划分为4个数据报片发送出去,结果前两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传UDP,而IP层仍然划分为4个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的站能否将这两次传输的4个数据报片组装成完整的数据报?假定目的站第一次收到的后两个数据报片仍然保存在目的站的缓存中。
不行。重传时,IP数据报的标识字段会有另一个标识符。仅当标识符相同的IP数据报片才能组装成一个IP数据报。前两个IP数据报片的标识符与后两个IP数据报片的标识符不同,因此不能组装成一个IP数据报。
一个UDP用户数据的数据字段为8192字节。在数据链路层要使用以太网来传送。试问应当划分为几个IP数据报片?说明每一个IP数据报字段长度和片偏移字段的值。
UDP数据报 = 首部8字节 + 数据部分组成
因为数据字段为8192字节,所以数据报总长度 = 8192 + 8 = 8200 字节
以太网的最大传输单元MTU = 1500
因为要划分为几个IP数据报,而每个IP数据报的首部占20字节,所以字段部分最大占1480字节
划分的时候,可以划分为 8200 / 1480 = 5,余 800 字节
所以应当划分为 6 个IP数据报片,前 5 个都是 1480 字节,第 6 个是 800 字节
片偏移字段的值分别是 0,1480,2960,4440,5920和7400
一UDP用户数据报的首部十六进制表示是:06 32 00 45 00 1C E2 17.试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器还是从服务器发送给客户?使用UDP的这个服务器程序是什么?
把 UDP 首部 8 个字节的数值写成二进制表示的数值 ,
如下所示 : 00000110 00110010 00000000 01000101 00000000 00011100 11100010 00010111
源端口 : 00000110 00110010 ,其十进制表示是 1024+512+32+16+2=1586。
目的端口 : 00000000 01000101 ,其十进制表示是 64+4+1=69。
UDP用户数据报总长度 : 00000000 00011100 ,其十进制表示是 16+8+4=28 字节。
数据部分长度 : UDP总长度减去首部长度 = 28-8 = 20 字节。
此 UDP 用户数据报是从客户发给服务器 (因为目的端口号<1023,是熟知端口) 。
服务器程序是 TFTP
使用TCP对实时话音数据的传输有没有什么问题?使用UDP在传送数据文件时会有什么问题?
如果语音数据不是实时播放(边接受边播放)就可以使用TCP,因为TCP传输可靠。接收端用TCP将话音数据接收完毕后,可以在以后的任何时间进行播放。但假定是实时传输,则必须使用UDP。UDP不保证可靠交付,但UCP比TCP的开销要小很多。因此只要应用程序接受这样的服务质量就可以使用UDP。 而因为udp不建立链接文件在传输中可能会丢失。
在停止等待协议中如果不使用编号是否可行?为什么?
分组和确认分组都必须进行编号,才能明确哪个分则得到了确认。
在停止等待协议中,如果收到重复的报文段时不予理睬(即悄悄地丢弃它而其他什么也没做)是否可行?试举出具体的例子说明理由。
收到重复帧不确认相当于“确认丢失”
假定在运输层使用停止等待协议。发送方发送报文段M0后在设定的时间内未收到确认,于是重传M0,但M0又迟迟不能到达接收方。不久,发送方收到了迟到的对M0的确认,于是发送下一个报文段M1,不久就收到了对M1的确认。接着发送方发送新的报文段M0,但这个新的M0在传送过程中丢失了。正巧,一开始就滞留在网络中的M0现在到达接收方。接收方无法分辨M0是旧的。于是收下M0,并发送确认。显然,接收方后来收到的M0是重复的,协议失败了。试画出双方交换报文段的过程。
我们可以看出,旧的M0被当作是新的M0!可见运输层不能使用停止等待协议。
试证明:当用n比特进行分组的编号时,若接收到窗口等于1(即只能按序接收分组),当仅在发送窗口不超过2n-1时,连接ARQ协议才能正确运行。窗口单位是分组。
在连续ARQ协议中,若发送窗口等于7,则发送端在开始时可连续发送7个分组。因此,在每一分组发送后,都要置一个超时计时器。现在计算机里只有一个硬时钟。设这7个分组发出的时间分别为,…,且都一样大。试问如何实现这7个超时计时器(这叫软件时钟法)?
假定使用连续ARQ协议中,发送窗口大小是3,而序号范围[0,15],而传输媒体保证在接收方能够按序收到分组。在某一时刻,在接收方,下一个期望收到序号是5.试问:
-
在发送方的发送窗口中可能有出现的序号组合有哪几种?
序号到4为止的分组都已收到。若这些确认都已到达发送方,则发送窗口的范围是[5,7]。假定所有的确认都丢失了,发送方没有收到这些确认。这时,发送窗口应为[2,4]。因此,发送窗口可以使[2,4],[3,5],[4,6],[5,7]中的任何一个。
-
接收方已经发送出去的、但在网络中(即还未到达发送方)的确认分组可能有哪些?说明这些确认分组是用来确认哪些序号的分组。
接收方期望收到序号5的分组,说明序号为2,3,4的分组都已收到,并且发送了确认。对序号为1的分组的确认肯定被发送方收到了,否则发送方不肯能发送4号分组。可见,对序号2,3,4的分组的确认有可能仍滞留在网络中。这些确认是用来确认序号为2,3,4的分组。
主机A向主机B发送一个很长的文件,其长度为L字节。假定TCP使用的MSS有1460字节。
-
在TCP的序号不重复使用的条件下,L的最大值是多少?
L 的最大值是 字节
因为TCP报文 序号 字段——占 4 字节(32位)。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。 L是让求文件的长度,即TCP报文 序号 字段最多可以表示的字节的总数.
-
假定使用上面计算出文件长度,而运输层、网络层和数据链路层所使用的首部开销共66字节,链路的数据率为10Mb/s,试求这个文件所需的最短发送时间。
每次发送的报文段为 1460 字节。因此必须分 取整为2941758,因为有余数,所以即2941759个报文段。发送的总字节数是 字节。
发送时间为 。
主机A向主机B连续发送了两个TCP报文段,其序号分别为70和100。试问:
-
第一个报文段携带了多少个字节的数据?
第一个报文段的数据序号是70到99,共30字节的数据。
-
主机B收到第一个报文段后发回的确认中的确认号应当是多少?
确认号应为100.
-
如果主机B收到第二个报文段后发回的确认中的确认号是180,试问A发送的第二个报文段中的数据有多少字节?
80字节。
-
如果A发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文段到达后向A发送确认。试问这个确认号应为多少?
70
一个TCP连接下面使用256kb/s的链路,其端到端时延为128ms。经测试,发现吞吐量只有120kb/s。试问发送窗口W是多少?(提示:可以有两种答案,取决于接收端发出确认的时机)。
来回路程的时延等于 256ms(=128ms×2).
设窗口值为 X(注意:以字节为单位),假定一次最大发送量等于窗口值,且发射时间等于 256ms,那么,每发送一次都得停下来期待 再次得到下一窗口的确认,以得到新的发送许可.这样,发射时间等于停止等待应答的时间, 结果,测到的平均吞吐率就等于发送速率的一半,
即 8X÷(256×1000)=256×0.001 X=8192 所以,窗口值为 8192.
一个TCP报文段的数据部分最多为多少个字节?为什么?如果用户要传送的数据的字节长度超过TCP报文字段中的序号字段可能编出的最大序号,问还能否用TCP来传送?
65495字节,此数据部分加上TCP首部的20字节,再加上IP首部的20字节,正好是IP数据报的最大长度65535.(当然,若IP首部包含了选择,则IP首部长度超过20字节,这时TCP报文段的数据部分的长度将小于65495字节。)数据的字节长度超过TCP报文段中的序号字段可能编出的最大序号,通过循环使用序号,仍能用TCP来传送
主机A向主机B发送TCP报文段,首部中的源端口是m而目的端口是n。当B向A发送回信时,其TCP报文段的首部中源端口和目的端口分别是什么?
分别是n和m。
在使用TCP传送数据时,如果有一个确认报文段丢失了,也不一定会引起与该确认报文段对应的数据的重传。试说明理由。
还未重传就收到了对更高序号的确认。
设TCP使用的最大窗口为65535字节,而传输信道不产生差错,带宽也不受限制。若报文段的平均往返时延为20ms,问所能得到的最大吞吐量是多少?
在发送时延可忽略的情况下,最大数据率=最大窗口*8/平均往返时间=26.2Mb/s。
通信信道带宽为1Gb/s,端到端时延为10ms。TCP的发送窗口为65535字节。试问:可能达到的最大吞吐量是多少?信道的利用率是多少?
报文段平均往返时延20ms内,发送方最多能发送65535×8比特,
最大的吞吐量为=65535×8÷(20ms)=25.5Mbit/s
信道利用率=最大吞吐量÷带宽=25.5M/1G=2.55%
什么是Karn算法?在TCP的重传机制中,若不采用Karn算法,而是在收到确认时都认为是对重传报文段的确认,那么由此得出的往返时延样本和重传时间都会偏小。试问:重传时间最后会减小到什么程度?
假定TCP在开始建立连接时,发送方设定超时重传时间是RTO=6s。
-
当发送方接到对方的连接确认报文段时,测量出RTT样本值为1.5s。试计算现在的RTO值。
初次测知量时,RTTs等于RTT的样本值;RTTd等于RTT样本值的一半,所以RTTs = RTT = 1.5s, RTTd = RTT/2 = 0.75s 所以RTO = RTTs+4*RTTd = 1.5+4x0,75 = 4.5s
-
当发送方发送数据报文段并接收到确认时,测量出RTT样本值为2.5s。试计算现在的RTO值。
第二次测道量时,执行更新算法:
新的 RTTS = (1 - a) x (旧的 RTTS) + a x(新的 RTT 样本版)
新的 RTTD = (1 - b) x(旧的RTTD) + b x|RTTS - 新的 RTT 样本|这里a = 0.125,b = 0.25(就是有些公权式中的alpha和beta)
则更新后的RTTs =(1-0.125)x1.5+0.125x2.5 = 13/8
更新后的RTTd = (1-0.25)x0.75+0.25x|13/8-2.5| = 0.78125新的RTO = 13/8+4x0.78125 = 4.75s
已知第一次测得TCP的往返时延的当前值是30ms。现在收到了三个接连的确认报文段,它们比相应的数据报文段的发送时间分别滞后的时间是:26ms,32ms和24ms。设α=0.1。试计算每一次的新的加权平均往返时间值RTTs。讨论所得出的结果。
a=0.1, RTTO=30
RTT1=RTTO*(1-a) +26*a=29.6
RTT2=RTT1*a+32(1-a)=29.84
RTT3=RTT2*a+24(1-a)=29.256
试计算一个包括5段链路的运输连接的单程端到端时延。5段链路程中有2段是卫星链路,有3段是广域网链路。每条卫星链路又由上行链路和下行链路两部分组成。可以取这两部分的传播时延之和为250ms。每一个广域网的范围为1500km,其传播时延可按150000km/s来计算。各数据链路速率为48kb/s,帧长为960b。
5段链路的传播时延=
5段链路的发送时延=
所以5段链路单程端到端时延=
但假定其中的一个陆地上的广域网的传输时延为150ms。
5段链路发送时延=
所以总时延=
在TCP的拥塞控制中,什么是慢开始、拥塞避免、快重传和快恢复算法?这里每一种算法各起什么作用? “乘法减小”和“加法增大”各用在什么情况下?
慢开始:在主机刚刚开始发送报文段时可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以分组注入到网络的速率更加合理。
如果按轮次看,则看似成倍增长
拥塞避免:当拥塞窗口值大于慢开始门限时,停止使用慢开始算法而改用拥塞避免算法。拥塞避免算法使发送的拥塞窗口每经过一个往返时延RTT就增加一个MSS的大小。
快重传:发送端只要一连收到三个重复的ACK即可断定有分组丢失了,就应该立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时。
快恢复:当发送端收到连续三个重复的ACK时,就重新设置慢开始门限,发送方调整门限值 ssthresh=cwnd/2。
乘法减小:是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值 ssthresh 设置为当前的拥塞窗口值乘以 0.5。当网络频繁出现拥塞时,ssthresh 值就下降得很快,以大大减少注入到网络中的分组数。
加法增大:是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个往返时间),就把拥塞窗口 cwnd增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。
设TCP的ssthresh的初始值为8(单位为报文段)。当拥塞窗口上升到12时网络发生了超时,TCP使用慢开始和拥塞避免。试分别求出第1次到第15次传输的各拥塞窗口大小。你能说明拥塞控制窗口每一次变化的原因吗?
拥塞窗口大小分别为:1,2,4,8,9,10,11,12,1,2,4,6,7,8,9.
TCP的拥塞窗口cwnd大小与传输轮次n的关系如下所示:
-
试画出如图所示的拥塞窗口与传输轮次的关系曲线。
-
指明TCP工作在慢开始阶段的时间间隔。
【1,6】和【23,26】
-
指明TCP工作在拥塞避免阶段的时间间隔。
【6,16】和【17,22】
-
在第16轮次和第22轮次之后发送方是通过收到三个重复的确认还是通过超时检测到丢失了报文段?
在第16轮次之后发送方通过收到三个重复的确认检测到丢失的报文段。在第22轮次之后发送方是通过超时检测到丢失的报文段。
-
在第1轮次,第18轮次和第24轮次发送时,门限ssthresh分别被设置为多大? 在第1轮次发送时,门限ssthresh被设置为32 在第18轮次发送时,门限ssthresh被设置为发生拥塞时的一半,即21. 在第24轮次发送时,门限ssthresh是第18轮次发送时设置的21
-
在第几轮次发送出第70个报文段?
第7轮次发送出
-
假定在第26轮次之后收到了三个重复的确认,因而检测出了报文段的丢失,那么拥塞窗口cwnd和门限ssthresh应设置为多大? 拥塞窗口cwnd和门限ssthresh应设置为8的一半,即4
TCP在进行流量控制时是以分组的丢失作为产生拥塞的标志。有没有不是因拥塞而引起的分组丢失的情况?如有,请举出三种情况。
当Ip数据报在传输过程中需要分片,但其中的一个数据报未能及时到达终点,而终点组装IP数据报已超时,因而只能丢失该数据报;IP数据报已经到达终点,但终点的缓存没有足够的空间存放此数据报;数据报在转发过程中经过一个局域网的网桥,但网桥在转发该数据报的帧没有足够的差错空间而只好丢弃。
用TCP传送512字节的数据。设窗口为100字节,而TCP报文段每次也是传送100字节的数据。再设发送端和接收端的起始序号分别选为100和200,试画出工作示意图。从连接建立阶段到连接释放都要画上。
在上图所表示的连接释放过程中,在 ESTABLISHED 状态下,服务器进程能否先不发送 ack = u + 1 的确认?(因为后面要发送的连接释放报文段中仍有 ack = u + 1 这一信息)
如果B不再发送数据了,是可以把两个报文段合并成为一个,即只发送FIN+ACK报文段。但如果B还有数据报要发送,而且要发送一段时间,那就不行,因为A迟迟收不到确认,就会以为刚才发送的FIN报文段丢失了,就超时重传这个FIN报文段,浪费网络资源。
在TCP的有限状态机中,在什么情况下会发生从状态SYN_SENT到状态SYN_RCVD的变迁
当客户主动打开连接的状态都是 CLOSED->SYN-SENT->SYN-RCVD->ESTABLISHED
试以具体例子说明为什么一个运输连接可以有多种方式释放。可以设两个互相通信的用户分别连接在网络的两结点上
A或B故障,应设计超时机制,使对方退出,不至于死锁;
A主动退出,B被动退出
B主动退出,A被动退出
解释为什么突然释放运输连接就可能会丢失用户数据,而使用TCP的连接释放方法就可保证不丢失数据。
当主机1和主机2之间连接建立后,主机1发送了一个TCP数据段并正确抵达主机2,接着主机1发送另一个TCP数据段,这次很不幸,主机2在收到第二个TCP数据段之前发出了释放连接请求,如果就这样突然释放连接,显然主机1发送的第二个TCP报文段会丢失。而使用TCP的连接释放方法,主机2发出了释放连接的请求,那么即使收到主机1的确认后,只会释放主机2到主机1方向的连接,即主机2不再向主机1发送数据,而仍然可接受主机1发来的数据,所以可保证不丢失数据。
试用具体例子说明为什么在运输连接建立时要使用三次握手。说明如不这样做可能会出现什么情况。
3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组,在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。 而A发出的分组超时后,重复发送同样的分组。这样就形成了死锁。
一个客户向服务器请求建立TCP连接。客户在TCP连接建立的三次握手中的最后一个报文段中捎带上一些数据,请求服务器发送一个长度为L字节的文件。假定:
(1)客户和服务器之间的数据传输速率是R字节/秒,客户与服务器之间的往返时间是RTT(固定值)。
(2)服务器发送的TCP报文段的长度都是M字节,而发送窗口大小是nM字节。
(3)所有传送的报文段都不会出错(无重传),客户收到服务器发来的报文段后就及时发送确认。
(4)所有的协议首部开销都可忽略,所有确认报文段和连接建立阶段的报文段的长度都可忽略(即忽略这些报文段的发送时间)。
试证明,从客户开始发起连接建立到接收服务器发送的整个文件所需的时间T是:
或
其中,,符号[x]表示若x不是整数,则把x的整数部分加1。
发送窗口较小的情况,发送一组nM个字节后必须停顿下来,等收到确认后继续发送。共需K=[L/nM]个周期:其中 前K-1个周期每周期耗时M/R+RTT,共耗时(K-1)(M/R+RTT) 第K周期剩余字节数Q=L-(K-1)nM,需耗时Q/R 总耗时=2RTT+(K-1)M/(R+RTT)+Q/R=2*RTT+L/R+(K-1)[( M/R+RTT)-nM/R]
网络允许的最大报文段长度为128字节,序号用8比特表示,报文段在网络中的寿命为30s,则每一条TCP连接所能达到的最高数据传输速率为
具有相同编号的报文段不应该同时在网络中传输,必须保证当序列号循环回来重复使用的时候,具有相同序列号的报文段已经从网络中消失。若序号用8比特表示,报文段的寿命为30s,那么在30s的时间内发送方发送的报文段的数目不能多于255个。网络允许的最大报文段长度为128B,再结合下式可得每一条TCP连接所能达到的最高数据传输速率约为8.7kbps
下面是以十六进制格式存储的一个 UDP 首部:
CB84000D001C001C
试问:\
-
源端口号是什么?
源端口号是最前面的四位十六进制(CB84),代表着源端口号为52100
-
目的端口号是什么?
目的端口号是第二个四位十六进制(000D),代表着目的端口号为13。
-
这个用户数据报的总长度是什么?
第三个四位十六进制(001C)定义了整个UDP分组的长度为28字节。
-
数据长度是多少?
数据的长度是整个分组的长度减去首部的长度,也就是28-8=20字节。
-
这个分组是从客户到服务器方向的,还是从服务器到客户方向的?
目的端口号是13(熟知端口),所以是从客户到服务器的。
-
客户进程是什么?
DayTime应用进程
计算UDP的校验和
UPD和IP的不可靠程度是否相同?请加以解释。
UDP和IP都是无连接的协议和不可靠传输的协议。UDP用户数据报和IP数据报的首部都有校验和字段。当校验出有差错时,就把收到的UDP用户数据报或IP数据包丢弃。这是它们的相同之处。 但UDP和IP的可靠性是有区别的。UDP用户数据报的校验是既检验首部,又要检验数据部分,而IP数据报的校验仅仅检验首部。UDP用户数据报的校验还增加了伪首部,即还检验了下面IP数据报的源IP地址和目的IP地址
UPD用户数据报的最小长度是多少?用最小长度的UDP用户数据报构成的最短IP数据报的长度是多少?
以字节为单位,最小值为8字节,即没有数据时的长度。
最短IP数据报首部固定长度20字节所以等于20+8最短IP数据报28字节
某客户使用UDP将数据发送给一服务器,数据共16字节。
-
试计算在运输层的传输效率(有用字节与总字节之比)
UDP用户数据报的总长度 = 8 + 16 = 24字节 因此,在运输层的传输效率 = 16 / 24 = 0.667。
-
在IP层计算传输效率。假定IP首部无选项。
IP数据报的总长度 = 20 + 24 = 44字节。
因此,在IP层的传输效率 = 16 / 44 = 0.364 -
在数据链路层计算传输效率。假定IP首部无选项,在数据链路层使用以太网。
以太网的总长度 = 14 + 4 + 2 + 44 = 64
因此在数据链路层的传输效率 = 16/64 = 0.25
考虑到发送以太网帧之前还有8字节的前同步码,则传输效率 = 16/72 = 0.222
某客户有67000字节的分组。试说明怎样使用UDP数据报将这个分组进行传送。
一个UDP用户数据报的最大长度是65535字节。现在的长度超过了这个限度,因此不能使用一个UDP用户数据报来传送。必须进行分割(例如,分割成两个UDP用户数据报),使其长度不超过以上限度。
TCP在时间为4:30:20(即4点30分20秒)发送了一个报文段。由于没有收到确认,因此在4:30:25重传了前面这个报文段,并在4:30:27收到了确认。若以前的RTT值是4秒,根据Karn算法,新的RTT值是多少?
根据Karn算法,TCP发生了重传就不采用其往返时间样本,RTT依然是4秒
TCP连接使用1000字节的窗口值,而上一次的确认号是22001。它收到了一个报文段,确认号是22401。试用图来说明在这之前与之后的窗口情况。
在本题中列出的8种情况下,画出发送窗口的变化,并标明可用窗口的位置。已知主机A要向主机B发送3KB的数据。在TCP连接建立后,A的发送窗口大小是2KB。A的初始序号是0。
-
一开始A发送1KB的数据。
由tcp连接建立后,A的发送窗口大小是2KB,2KB=2*1024=2048字节,故发送窗口:从0到第2047字节为止。后面的即为可用窗口。
-
接着A就一直发送数据,直到把发送窗口用完。
发送方A一直发送数据,直到把发送窗口用完。此时,整个窗口被用完,可用窗口大小为0
-
发送方A收到对第1000号字节的确认报文段。
由发送方A收到对第1000号字节的确认报文段,表明A收到的确认报文段确认号ack=1001。发送窗口从第1001字节到第3048字节为止。可用窗口从第2048字节到第3048为止。
-
发送方A再发送850B的数据。
由发送方A再发送850B的数据。2048+850=2898。故可用窗口从第2898字节到第3048字节为止。
-
发送方A收到ack = 900的确认报文段。
发送方收到ack=900的确认报文段。由900<1001,这是一个迟到的确认,不会对窗口产生影响,故窗口同上
-
发送方A收到对第2047号字节的确认报文段
发送窗口从第2048字节到第4095字节为止。可用窗口从第2898字节到第3048字节为止
-
发送方A收到剩下的数据全部都发送完。
发送方A把剩下的数据全部都发送完,共3KB=3072字节,从0到3071字节。故可用窗口从第3072字节到第4095字节为止
-
发送方A收到ack = 3072的确认报文段。
0到3071字节的数据均已收到,发送窗口从3072字节到5119字节。可用窗口从3072字节到5119字节