在用Tcp通信的时候,接收方有一个接收窗口,接收窗口的大小反应了他能够接受数据的能力,而发送方则有一个发送窗口,发送窗口的大小是根据阻塞窗口和接收方的接收窗口的大小来确定的,在WinSock下,Tcp套接口也有发送缓冲区和接收缓冲区这么个概念,请问Tcp套接口中的发送缓冲区和接受缓冲区是不是就是指上面的发送窗口和接收窗口??????????

解决方案 »

  1.   

    本帖最后由 wenxy1 于 2008-11-21 15:21:55 编辑
      

  2.   

    缓冲区和接收窗口等是两个概念.........
    缓冲区是系统为保存接收到或者需要发送的数据的一个内存块............窗口只是TCP实现的原理.........
      

  3.   

    两个概念吧,是不是可以这样理解,数据先经过发送缓冲区 然后缓冲区里的数据在通过TCP协议中发送方窗口来实现流量控制,而接受数据时,数据先到达接受方的通知窗口来实现流量控制,在将数据保存到接受缓冲区里,然后处理。。不知道理解的对不对,紧供参考
      

  4.   

    有一个现象,我将发送窗口设置成100B,而我发的数据大于100B,但照样一次就发送成功.这么看来确实是2个不同概念,那么缓冲区是用来做什么的?或者这么问,为什么要设缓冲区,实际上TCP协议里的窗口不就是缓冲区吗??干吗还多出这么一个缓冲区?????还有大家说3楼的说法是否正确
      

  5.   

    TCP的特点之一是提供体积可变的滑动窗口机制,支持端到端的流量控制。TCP的窗口以字节为单位进行调整,以适应接收方的处理能力。处理过程如下: (1)TCP连接阶段,双方协商窗口尺寸,同时接收方预留数据缓存区; (2)发送方根据协商的结果,发送符合窗口尺寸的数据字节流,并等待对方的确认; (3)发送方根据确认信息,改变窗口的尺寸,增加或者减少发送未得到确认的字节流中的字节数。调整过程包括:如果出现发送拥塞,发送窗口缩小为原来的一半,同时将超时重传的时间间隔扩大一倍。   TCP的窗口机制和确认保证了数据传输的有序性,可靠性和流量控制。 TCP的滑动窗口的要点如下: 1)源站不一定要发送出整个窗口大小的数据; 2)窗口大小可由目的站将其增大或减小; 3)目的站可在任何时候发送确认。 如果滑动窗口大小为10,在收到目的站的任何确认之前,源站可以发送一直到10个字节。但是,源站若收到对前3个字节的确认,它就将窗口向右滑动3个字节。
      

  6.   

    建议楼主看《TCP/IP详解》卷一。
      

  7.   

    不是的,接收窗口和发送窗口的大小反应的是你程序本身的接收缓冲和发送缓冲,和tcp本身的发送接收缓冲区完全不打噶。
    发送数据时是把发送窗口里的数据放到tcp的发送缓冲区;接收时是把tcp的接收缓冲区的数据放到接收窗口的缓冲区。