(1)第一个报文段携带了多少字节的数据?数据为从70-99 ,100-70=30。
(2)主机B收到第一个报文段后发回的确认号应当是多少?发回受到的确认号为100。
(3)如果B收到第二个报文段后发回的确认号是180,试问A发送的第二个报文段的数据有多少字节?确认号为180,则数据为180-100=80。
(4)如果A发送的第一个报文段丢失了,但第二个到达B,B在第二个报文段到达后向A发送了确认。试问这个确认号应为多少?由于没有收到第一个报文段,则确认号为70。
扩展资料:
函数mytcp_sync_mss为一个tcp socket中的mss相关的成员进行数据同步,其基本的一个算法是:
1、当前的MSS正常情况下应该为mtu-IP首部-TCP首部(不包括选项)。
2、struct tcp_sock->rx_opt->mss_clamp中含有对端通告的能够接受的MSS值,如果该值小于第一步计算所得到的MSS,则以该值为准。
3、IP首部如果带有IP选项,则MSS中要减去选项长度。
4、如果MSS已经小于48了,则令其等于48。
5、减去TCP首部中选项的长度。
6、如果MSS当前已经大于滑动窗口大小的1/2,则取滑动窗口大小的1/2作为MSS值(但不能小于48)。
7、成员mss_cache用于缓存下刚刚计算所得的MSS。
所以,说本地以太网中MSS为1460的说法并不正确,它还会动态变化,如果IP首部和TCP首部中出现选项,则MSS要相应的减小,一般TCP首部中会有12字节的时间戳选项(外加两字节的填充选项),这时的MSS就等于1448。
参考资料来源:百度百科—TCP报文格式
主机A向主机B连续发送了两个TCP报文段,其序号分别为70和100.试问:
(1). 第一个报文段携带了多少字节的数据?数据为从70-99 ,100-70=30。
(2). 主机B收到第一个报文段后发回的确认号应当是多少?发回受到的确认号为100
(3). 如果B收到第二个报文段后发回的确认号是180,试问A发送的第二个报文段的数据有多少字节?确认号为180,则数据为180-100=80.
(4). 如果A发送的第一个报文段丢失了,但第二个到达B,B在第二个报文段到达后向A发送了确认。试问这个确认号应为多少?由于没有收到第一个报文段,则确认号为70.
解:(1)第一个报文段的数据序号是70到99,共30字节的数据。
(2)确认号应为100.(3)80字节。 (4)70
30
100
80
70
(1). 第一个报文段携带了多少字节的数据?数据为从70-99 ,100-70=30。
(2). 主机B收到第一个报文段后发回的确认号应当是多少?发回受到的确认号为100
(3). 如果B收到第二个报文段后发回的确认号是180,试问A发送的第二个报文段的数据有多少字节?确认号为180,则数据为180-100=80.
(4). 如果A发送的第一个报文段丢失了,但第二个到达B,B在第二个报文段到达后向A发送了确认。试问这个确认号应为多少?由于没有收到第一个报文段,则确认号为70.