请问一个tcp快速重传问题

student2007 2008-09-23 07:25:41
在学习计算机网络自顶向下edition3的时候遇到几个问题无法理解,请高手指点,谢谢。问题在书本的page162表3-2
表3-2 产生tcp ack的建议RFC1122,RFC2581
1事件:所期望序号的报文段按序到达。所有在期望序号及其以前的数据都已经被确认
tcp接受方动作:延迟的ack。对另一个按序报文段的到达最多等待500ms。如果下一个按序
报文段在这个时期间隔内没有到达,则发送一个ack

我的问题:这里“延迟的ack”是什么,如果报文段按序到达,而且以前数据已经确认,为什么还要发送延迟ack。
2事件:有期望序号的报文段按序到达。另一个按序报文段等待发送ack

tcp接受方动作:立即发送单个累积ack,以确认两个按序报文段

问题:这里“另一个按序报文段等待发送ack”中的另一个按序报文段是什么报文段,他与期望序号的报文段有什么关系。什么是“单个累积ack”?这里接受方为什么要确认两个按序报文段,这里只有一个按序报文段到达啊。这里的两个按序报文段是哪两个报文
3事件:比期望序号大的失序报文段到达,检测出数据流中的间隔
tcp接受方动作:立即发送冗余ack指明下一个期待字节的序号(也就是间隔的低端字节序号)

问题:这里为什么要检测数据流中的间隔?
4事件:部分或完全填充接受数据间隔的报文段到达
tcp接受方动作:若该报文段起始于间隔的低端则立即发送ack
...全文
223 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zycangzhou 2012-10-16
  • 打赏
  • 举报
回复
解释的很清楚。
qingyunlb 2009-12-15
  • 打赏
  • 举报
回复
看一看
dteo1918 2009-01-02
  • 打赏
  • 举报
回复
解释得很明白,不知lz楼主是哪所学校的。。。。
yanghehong 2008-09-23
  • 打赏
  • 举报
回复
[千里]假设有3个报文段(segment),报文段1,报文段2,报文段3.报文段1包含字节0到9;报文段2包含字节10到19;报文段3包含字节20到29

1事件:所期望序号的报文段按序到达。所有在期望序号及其以前的数据都已经被确认
tcp接受方动作:延迟的ack。对另一个按序报文段的到达最多等待500ms。如果下一个按序
报文段在这个时期间隔内没有到达,则发送一个ack

我的问题:这里“延迟的ack”是什么,如果报文段按序到达,而且以前数据已经确认,为什么还要发送延迟ack。
[千里] 如果报文段1到达并有序号为10的ack发给发送方(表示期望10和10之后的数据字节流,也就是报文段2),然后报文段2也到了。就是你的这个情景。这里的延迟的ack说的是先不要发送序号为20的ack,稍微等一会儿,看有没有报文段3过来,有的话发一个序号为30的ack一起把它们确认了。岂不省事?

2事件:有期望序号的报文段按序到达。另一个按序报文段等待发送ack

tcp接受方动作:立即发送单个累积ack,以确认两个按序报文段

问题:这里“另一个按序报文段等待发送ack”中的另一个按序报文段是什么报文段,他与期望序号的报文段有什么关系。什么是“单个累积ack”?这里接受方为什么要确认两个按序报文段,这里只有一个按序报文段到达啊。这里的两个按序报文段是哪两个报文
[千里]接着上面的,报文段1到并ack了。报文段2到了,还没ack。这时报文段3到了,马上发送个序号为30的ack。就把报文段2和报文段3都确认了。
前一个时间意思是说不必每个报文段都ack;这里意思则是说有2个报文段就应该马上ack了,不要贪太多。



3事件:比期望序号大的失序报文段到达,检测出数据流中的间隔
tcp接受方动作:立即发送冗余ack指明下一个期待字节的序号(也就是间隔的低端字节序号)

问题:这里为什么要检测数据流中的间隔?
[千里]这里的情况是。报文段1到了并发了序号为10的ack,表明接受方期待下一个是从10开始。结果接下来只收到报文段3,从20字节开始的。那么这中间就有间隔10到19没有收到。为了让发送方知道这个事情,接受方就发序号为10的ack,跟发送方说10到19没有收到啊,要继续发报文段2.




4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧