请问在TCP中,“接收端对已经正确收到的数据流中最后收到的八位组进行确认”到底是什么意思?接收端到底什么时候才会发出确认?什么样的数据流表示已经收到的?接收端不是一直在接收吗?那任何时刻以前的都可看作已经收到的啊?

解决方案 »

  1.   

    是指TCP协议的实现
    不是指TCP协议应用
    接收端对已经正确收到的数据流中最后收到的八位组进行确认
    就是将最后收到的一字节(八位组是台湾的说法吧?)发送给原发送者
      

  2.   

    我的意思是什么指当前已经正确收到的?比如我假设现在已经收到10个正确的,我可以发出确认,但我正要确认的时候,突然又收到一个,那我暂停先前的那个确认,而是对11个进行确认,这样的话就不知道到底该什么时候才该发回确认了。那TCP应该有个规定吧,比如,每收到多少的时候你一定要给我发确认等等。所以我老是不明白TCP中规定确认到底是在什么时候发回的?这个“当前正确接收”的当前到底指什么时候?
      

  3.   

    接收到多少确认,这个tcp中有规定的,一般为滑动窗口的一半
      

  4.   

    接收端并不是每收一个包就发一个确认包,而是每隔一定的时间再发回确认包,指出已经正确接收的最后一字节在整个tcp流中的偏移位置,这个确认信息也有可能是附在接收端的回送包中顺便发回的。你说的“正要确认的时候,突然又收到一个”这种情况两个事件也肯定是有先有后的,毕竟计算机是一条一条指令运行的,而到底是确认10个包还是11个包也不是问题,只要告诉对方你现在已经正确接收数据的最后一字节的偏移位置就行了。发送方是根据滑窗大小来决定是否继续发送的,如果太多的数据没有被确认就停止发送,如果超时就重发(这时出现超时会调整滑窗的大小)。至于滑窗的大小,tcp有3个窗口,都是互相影响和根据网络情况动态调整的(tcp的拥塞控制,这个就复杂点了,呵呵,看书吧)