第三章 作业
1. 两个应用进程使用UDP交换数据。设发送端要传输三个字节数据给接收端进程,三个字节数据为:101010102。假设发送端进程的端口号为1024,接收端进程的端口号为80。为简化问题,假设只有UDP Segment的头部和数据两部分参与校验和的计算(实际的Internet中,UDP校验和计算中还包括一个伪头部)。
1)以十六进制形式描述计算校验和之前的UDP Segment。注意,UDP Segment总长度须是偶数,否则,得补一个全零字节。
2)对该UDP Segment进行校验和计算的过程及结果。
2. 假设,主机C中Web服务进程的端口号为80,该Web服务器使用持续(persistent)HTTP连接接收来自不同主机A和B的HTTP请求。这些请求是被发向主机C的同一个TCP Socket吗?如果是发向不同的TCP Socket,这些Socket均使用端口80吗?讨论并解释。
3. 一个简单的同步消息交换协议。考虑两个网络实体(A和B)之间使用理想的双向信道连接(发送的任意消息将被正确地接收,不会损坏、丢失和乱序)。A和B交替地向对方发送数据消息:最初,A向B发送消息;然后B必须向A发送消息;然后A必须向B发送消息,以此类推。画出该协议的FSM(A和B分别描述)。不用考虑可靠传输机制,主要描述反映两个实体同步行为的FSM。你可以使用下述的事件和动作,它们与课本第138页的rdt1.0的含义相同。
事件:rdt_send(data);
rdt_rcv(packet)
动作:packet=make_pkt(data);
udt_send(packet);
extract(packet, data);
delver_data(data)。
协议必须保证A和B发送消息的严格交替关系,以及指明A和B的FSM的初始状态。
4. 课本第192页,习题14。
5. 课本第192页,习题18。
6. 课本第193页,习题23。
7. 主机A和B通过TCP连接进行通信。主机B已经从A收到了序号144及以前的所有数据字节。假设A随后向B背靠背发送了两个Segment,其中第一个Segment中包含20字节的数据,第2个Segment中包含40字节数据。第一个Segment的序号为145,源端口号为303,目的端口号为80。主机B在收到A发送的Segment后发送确认。
A向B发送的第二个Segment的序号、源端口号、目的端口号是多少?
如果第一个Segment在第二个Segment前到达B,B发送的确认中,源端口、目的端口和确认号分别为多少?
如果第二个Segment在第一个之前到达,则接收方B对第一个Segment的确认中,确认号是多少?
假设A发送的两个Segment按顺序到达B。第一个确认丢失,但第二个确认在第一个Segment的超时间隔后到达A,如下图所示。将下图补充完整,给出所有segment和ACK的发送和接收情况(假设没有其他的分组丢失)。对每个在图中添加的数据Segment,提供其序号、数据长度;对每个添加的ACK提供其确认号。
8. TCP的拥塞控制。考虑通过一个无丢失TCP连接发送一个大文件的情况。
假定TCP采用没有慢启动的AIMD作为拥塞控制机制。假设每隔一个RTT,CongWin增加一个MSS,且RTT时间恒定。则CongWin从1MSS增大到5MSS需要多长时间(假设没有丢失,且RTT为常量)?
到时间=4RTT时,该连接的平均吞吐率是多少?
9. 课本第194页,习题33。
10. TCP拥塞控制:假设TCP的Sender窗口大小为N,窗口的SendBase为x,且sender刚刚发送完一个完整的窗口数据。假设RTT为Sender-to-Receiver-to-Sender的折返时间,MSS为Segment大小。
在Receiver-to-Sender信道中可能有对序号小于x 的Segment的确认吗?证明你的答案。
假设没有分组丢失。Sender 到Receiver方向连接的吞吐率是多少(单位:packets/sec)
假设TCP正处于拥塞避免阶段。如果没有丢失,则N个Segment被确认后的发送窗口大小是多少?