TCP滑动窗口和socket缓冲区之间的关系(记录)
来源:互联网 发布:网络支付平台的弊端 编辑:程序博客网 时间:2024/05/19 16:48
一、TCP的滑动窗口大小实际上就是socket的接收缓冲区大小的字节数
二、对于server端的socket一定要在listen之间设置缓冲区大小,因为,accept时新产生的socket会继承监听socket的缓冲区大小。对于client端的socket一定要在connet之前设置缓冲区大小,因为connet时需要进行三次握手过程,会通知对方自己的窗口大小。在connet之后再设置缓冲区,已经没有什么意义。
三、由于缓冲区大小在TCP头部只有16位来表示,所以它的最大值是65536,但是对于一些情况来说需要使用更大的滑动窗口,这时候就要使用扩展的滑动窗口,如光纤高速通信网络,或者是卫星长连接网络,需要窗口尽可能的大。这时会使用扩展的32位的滑动窗口大小。
四、滑动窗口听移动规则:
1、窗口合拢:在收到对端数据后,自己确认了数据的正确性,这些数据会被存储到缓冲区,等待应用程序获取。但这时候因为已经确认了数据的正确性,需要向对方发送确认响应ACK,又因为这些数据还没有被应用进程取走,这时候便需要进行窗口合拢,缓冲区的窗口左边缘向右滑动。注意响应的ACK序号是对方发送数据包的序号,一个对方发送的序号,可能因为窗口张开会被响应(ACK)多次。
2、窗口张开:窗口收缩后,应用进程一旦从缓冲区中取出数据,TCP的滑动窗口需要进行扩张,这时候窗口的右边缘向右扩张,实际上窗口这是一个环形缓冲区,窗口的右边缘扩张会使用原来被应用进程取走内容的缓冲区。在窗口进行扩张后,需要使用ACK通知对端,这时候ACK的序号依然是上次确认收到包的序号。
3、窗口收缩,窗口的右边缘向左滑动,称为窗口收缩,Host Requirement RFC强烈建议不要这样做,但TCP必须能够在某一端产生这种情况时进行处理。
- TCP滑动窗口和socket缓冲区之间的关系(记录)
- TCP滑动窗口和socket缓冲区之间的关系(记录)
- TCP滑动窗口和socket缓冲区之间的关系(记录)
- TCP滑动窗口和socket缓冲区之间的关系(记录)
- TCP滑动窗口和socket缓冲区之间的关系
- TCP滑动窗口和socket缓冲区之间的关系
- TCP滑动窗口和socket缓冲区之间的关系
- tcp socket发送缓冲区、接受缓冲区、滑动窗口协议之间的关系
- 发送缓冲区、接收缓冲区、滑动窗口协议之间的关系
- 发送缓冲区、接受缓冲区、滑动窗口协议之间的关系
- TCP/IP详解--举例明白发送/接收缓冲区、滑动窗口协议之间的关系
- TCP/IP详解--滑动窗口与内核缓冲区之间的关系
- TCP接收/发送滑动窗口与内核接收/发送缓冲区之间的关系
- TCP/IP详解--滑动窗口与内核缓冲区之间的关系
- TCP接收/发送滑动窗口与内核接收/发送缓冲区之间的关系
- TCP接收/发送滑动窗口与内核接收/发送缓冲区之间的关系
- TCP/IP详解--举例明白发送/接收缓冲区、滑动窗口协议之间的关系
- TCP/IP详解--举例明白发送/接收缓冲区、滑动窗口协议之间的关系
- C++ 用libcurl库进行http 网络通讯编程
- J2EE编程心得-使用Hibernate出现的错误及解决方法 更新中...
- Cocos2d-x JSB + Cocos2d-html5 跨平台游戏开发(一)—— 引擎选择
- PHP中比较两个时间的大小与日期的差值
- LeetCode | Minimum Path Sum(最小路径和)
- TCP滑动窗口和socket缓冲区之间的关系(记录)
- 回溯法-符号三角形
- Flex事件流中有关 【 stopImmediatePropagation()和stopPropagation()】 的区别
- -ObjC -all_load -force_load
- 排序二叉树及其Java实现
- C++的cin,cin.get(),cin.getline(),getline(),gets()
- 浅析Android中如何利用attrs和styles定义控件
- C++之练习题40
- OCP 1Z0 053 254