问答题 主机A和B通过TCP连接进行通信。主机B已经收到了来自A的序号为144及以前的所有字节。假设A然后向B发送了两个连续的报文段,其中第一个包含20字节的数据,第2个包含40字节的数据。第一个报文段的序号为145,源端口号为303,目的端口号为80。主机B在收到A发送的报文段后发送确认。
(1)A向B发送的第二个报文段的序号、源端口号、目的端口号分别是多少?
(2)如果第一个报文段在第二个报文段之前到达,则在第一个到达报文段的确认中,源端口、目的端口和确认号分别为多少?
(3)如果第二个报文段在第一个之前到达,则在第一个到达报文段的确认中,确认号是多少?
(4)假设A发送的两个报文段按顺序到达B。第一个确认丢失,但第二个确认在第一个超时间隔后到达A,并且在第一个超时间隔后A重发了相应的报文段,如下图所示。给出所有报文段(包括重传的报文段)的序号、数据长度以及每个确认(包括重传报文段所对应的确认,即图中的第三个ACK)的确认号。
【正确答案】(1)第1.2个Segment分别包含20字节、40字节的数据。A发给B的第二个Segment中,序号为165,源端口号为303,目的端口号为80。
(2)第一个ACK的确认号为165,源端口号为80,目的端口号为303。
(3)确认号将为145,表示接收方正在等待序号为145的字节以便继续向右移动窗口。
(4)第一个Segment的序号位145,包含20字节的数据;第二个Segment的序号位165,包含40字节的数据;重传Segment的序号为145.包含20字节的数据。第一个ACK的确认号为165;第二个AcK的确认号为205;另外附加的ACK的确认号为205。
【答案解析】