答:
第1个报文的数据等于100-70=30B,因为TCP传送的数据流中每个字节都有一个编号,而TCP报文段的编号为其数据部分第1个字节的编号,两个开始序号需要相减得第1个报文的长度; 主机B在收到第1个报文后要发出的序号为100; 与问题1类似,第2个报文段的长度等于180-100=80B 因为TCP采用累计确认机制,所以即使后面的第2个报文先到达了,但是仍然要对第1个报文进行确认,所以确认号为70。以上是我的见解,欢迎一起交流。参考如下。
(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报文格式
30字节。
主机A向B发送的是每个报文段的第一个序号是70,表明从70开始,第二个序号是100,表明第一个的结束序号为99,从70到99(包括70和99)共30字节。
在使用TCP传输数据时,如果有一个确认报文段丢失了,是不是一定会引起与该确认报文段对应的数据的重传答案是不一定。
例如某个确认丢失了,但是在该报文的重传计时器到时之前,却收到了更高序号的确认,因为如果接收方没有收到低号的报文是不可能会发出高序号的确认的,所以说发送方此时不会在重传那个丢失确认的报文了。
扩展资料
相关原理:
当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。
TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)