下面是以十六进制格式存储的一个 UDP 首部:~~~TCP连接使用1000字节的( 二 )


5-21 使用连续ARQ协议中,发送窗口大小事3,而序列范围[0,15],而传输媒体保证在接收方能够按序收到分组 。在某时刻,接收方,下一个期望收到序号是5

下面是以十六进制格式存储的一个 UDP 首部:~~~TCP连接使用1000字节的

文章插图
试问:
(1)在发送方的发送窗口中可能有出现的序号组合有哪几种?
(2)接收方已经发送出去的、但在网络中(即还未到达发送方)的确认分组可能有哪些?说明这些确认分组是用来确认哪些序号的分组
答:
(1)序号到4为止的分组都已收到 。若这些确认都已到达发送方,则发送窗口的范围是[5,7] 。假定所有的确认都丢失了,发送方没有收到这些确认 。这时,发送窗口应为[2,4] 。因此,发送窗口可以是[2,4],[3,5],[4,6],[5,7]中的任何一个
(2)接收方期望收到序号5的分组,说明序号为2,3,4的分组都已收到,并且发送了确认 。对序号为1的分组确认肯定被发送方收到了,否则发送方不可能发送4号分组 。可见,对序号为2,3,4的分组的确认有可能仍滞留在网络中 。这些确认是用来确认序号为2,3,4的分组
5-22 主机A向主机B发送一个很长的文件,其长度为L字节 。假定TCP使用的MSS有1460字节
(1)在TCP的序号不重复使用的条件下,L的最大值是多少?
(2)假定使用上面计算出文件长度,而运输层、网络层和数据链路层所使用的首部开销共66字节,链路的数据率为10Mb/s,试求这个文件所需的最短发送时间
答:
( 1 ) L 的最大值是 2^ 32=4GB= 字节
因为TCP报文 序号 字段——占 4 字节(32位) 。TCP 连接中传送的数据流中的每一个字节都编上一个序号 。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号 。L是让求文件的长度,即TCP报文 序号 字段最多可以表示的字节的总数
(2 )每次发送的报文段为 1460 字节 。因此必须分/1460 取整为,因为有余数,所以+1即个报文段 。(而不是)发送的总字节数是 *66+= 字节
发送字节需时间为× 8 ÷10Mb/s=3591.3 秒≈ 59.85 分≈ 1 小时
5-23 主机A向主机B连续发送了两个TCP报文段,其序号分别为70和100 。试问:
(1)第一个报文段携带了多少个字节的数据?
(2)主机B 收到第一个报文段后发回的确认中的确认号应当是多少?
(3)如果主机B收到第二个报文段后发回的确认中的确认号是180,试问A发送的第二个报文段中的数据有多少字节?
(4)如果A发送的第一个报文段丢失了,但第二个报文段到达了B 。B在第二个报文段到达后向A 发送确认 。试问这个确认号应为多少?
答:
(1)第一个报文段的数据序号是70到99,共30字节的数据 。
(2)确认号应为100 。
(3)180-100=80 字节 。
(4) 70
5-27一个TCP报文段的数据部分最多为多少个字节?为什么?如果用户要传送的数据的字节长度超过TCP报文字段中的序号字段可能编出的最大序号,问还能否用TCP来传送?
TCP报文段的数据部分=IP数据报的最大长度-IP数据报的首部-TCP报文段的首部=65535-20-20=65495(字节)
一个tcp报文段的最大载荷是65515字节
IP数据报的最大长度为2^16-1=,减去IP数据报首部20B和TCP首部20B后的TCP报文段的数据部分为
5-28主机A向主机B发送TCP报文段,首部中的源端口是m而目的端口是n 。当B向A发送回信时,其TCP报文段的首部中源端口和目的端口分别是什么?
答:源端口n和目的端口m
5-46 试用具体例子说明为什么在运输连接建立时要使用三次握手 。说明如不这样做可能会出现什么情况
正确答案:我们知道3次握手完成两个重要的功能既要双方做好发送数据的准备工作(双方都知道彼此已准备好)也要允许双方就初始序列号进行协商这个序列号在握手过程中被发送和确认 。现在把三次握手改成仅需要两次握手死锁是可能发生的 。例如考虑计算机A和B之间的通信 。假定B给A发送一个连接请求分组A收到了这个分组并发送了确认应答分组 。按照两次握手的协定A认为连接已经成功地建立了可以开始发送数据分组 。可是在A的应答分组在传输中被丢失的情况下B将不知道A是否已准备好不知道A建议什么样的序列号B甚至怀疑A是否收到自己的连接请求分组 。在这种情况下B认为连接还未建立成功将忽略A发来的任何数据分组只等待连接确认应答分组 。而A在发出的分组超时后重复发送同样的分组 。这样就形成了死锁 。本题考查在面向连接的TCP通行时,采用“三次握手”的必要性 。