7-05
试用具体例子说明为什么在运输连接建立时要使用三次握手。说明如不这样做可能会出现什么情况。
答:我们知道,3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机A和B之间的通信,假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组。在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。而A在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。
7-06
因为IP数据报的首部的总长度字段为16bit,因此IP数据报最大长度为216-1=65535字节(即64KB),再减去IP首部(20字节)和TCP首部(20字节),则为TCP报文段的最多字节即65495字节。
能,当要传送的数据字节长度超过TCP报文的序号字段的最大序号时,则又重新从最小序号开始循环重复使用。因为序号字段有32位长,可对4GB的数据进行编号,这样就可以保证当序号重复使用时,旧序号的数据早已在网络中消失了。
7-23
因为以太网对应的MTU为1500字节,减去IP首部20字节,所以以太网上传送UDP用户数据报的最大大小为1480。8192整除1480可知应当划分为6个数据包片,前5个是1480字节,最后一个792字节。片偏移字段的值分别为:0, 1480/8 = 185, 1480*2/8 = 370, 1480*3/8 = 555, 1480*4/8 = 740, 1480*5/8 = 925。
7-27
发送时延 = 65535*8/(1*109) 秒。
往返时延 = 2*10*10-3 = 0.02ms。
总时延 = 往返时延+发送时延 = 0.02052428 秒
吞吐量应为:
65535*8 / 总时延 = 65535*8 / 0.02052428 = 25.5 Mb/s
7-28
具有相同编号的报文段不应该同时在网络中传输,必须保证,当序列号循环回来重复使用的时候,具有相同序列号的报文段已经从网络中消失。现在报文段的寿命为30秒,那么在30秒的时间内发送方发送的报文段的数目不能多于255个。 255×128×8÷30=8704b/s 所以,每一条TCP连接所能达到的最高数据率为8.704Kb/s。
7-29
264(字节)*8(位/字节)/(75*1012(b/s)) = 1967652.7(s) = 22.77(天)
7-30
一个TCP连接下面使用256kbit/s的链路,其端到端时延为128ms。经测试,发现吞吐量只有120kbit/s。试问发送窗口是多少?
答:设发送窗口为X字节,假定一次最大发送量等于窗口值,那么,每发送一次都得停下来等待得到本窗口的确认,以得到新的发送许可,这样发送时延为8*x/(256*103) 秒。
往返时延 = 128*2 = 256ms。
总时延 = 往返时延+发送时延 = 256*10-3+8*X/(256*103) 秒
吞吐量应为:
8*X/总时延 = 8*X / (256*10-3+8*X/(256*103)) = 120*103
所以:
X = 7228 字节
7-31
传播时延 = 20 (km) / 200 (km/ms) = 0.1ms
往返时延 = 2*传播时延 = 0.2ms
发送时延 = 往返时延 = 0.2ms
发送速率 = 1*103*8 / (0.2*10-3) = 40*106 = 40Mb/s
7-32
|
UDP首部字段 |
16进制值 |
10进制值 |
说明 |
|
源端口 |
06 32 |
1586 |
|
|
目的端口 |
00 45 |
69 |
TFTP服务器的熟知端口 |
|
长度 |
00 |
28 |
数据长度 = 28-8(首部) = 20 |
|
检验和 |
E2 17 |
28 |
数据长度 = 28-8(首部) = 20 |
|
|
|
||
|
|
|
浙公网安备 33010602011771号