主机A向主机B连续发送了两个TCP报文段,其序号(seq)分别是70和100,那么:
(1)第一个报文段携带了_个字节的数据。
(2)主机B接收到第一个报文段后发回的确认中的确认号(ack)是_。
(3)如果主机B收到第二个报文段后,发回的确认中的确认号是180,试问主机A发送的第二个报文段中的数据有_个字节。
(4)如果主机A发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文段到达后向A发送确认,那么该确认的确认号是_。
解:(1)100/(100+20+20+18)=63.3%
(2)1000/(1000+20+20+18)=94.5%
第一个报文段携带了多少个字节的数据? 根据参考资料中的段落3,TCP报文段需要加上20字节的TCP首部,因此第一个报文段总共的大小应该是(70+20=90)个字节。但是,报文段实际携带的数据大小需要减去TCP头部的大小,因此第一个报文段携带的数据大小为(90-20=70)个字节。
主机B接收到第一个报文段后发回的确认中的确认号(ack)是多少? 根据TCP协议的机制,当主机B接收到第一个报文段后,应该向主机A发送一个确认报文段,这个确认报文段的ack字段应该是下一次期望接受的数据的序号,也就是71。因此,主机B接收到第一个报文段后发回的确认中的确认号(ack)应该是71。
如果主机B收到第二个报文段后,发回的确认中的确认号是180,那么主机A发送的第二个报文段中的数据有多少个字节? 根据TCP协议的机制,主机B发送确认报文段的ack字段应该是下一次期望接受的数据的序号。因此,如果主机B收到第二个报文段后发回的确认中的确认号是180,那么主机A发送的第二个报文段中的数据的序号应该是101,即第一个报文段的序号+第一个报文段携带的数据大小。而第二个报文段携带的数据大小就是第二个报文段的序号101到180之间的字节数,即(180-101=79)个字节。
如果主机A发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文段到达后向A发送确认,那么该确认的确认号是多少? 根据TCP协议的机制,当主机B成功接收到第二个报文段后,应该向主机A发送一个确认报文段,这个确认报文段的ack字段应该是下一次期望接受的数据的序号,也就是第二个报文段的序号+第二个报文段携带的数据大小。因为第一个报文段丢失了,所以主机A应该会重新发送第一个报文段,其序号为70。因此,第二个报文段的序号为100,携带的数据大小为79字节,所以主机B发送确认报文段的ack值应该是(100+79=179)。