TCP 接收缓冲区

2月 25, 2019 |

java的ServerSocket.setReceiveBufferSize方法其实是设置套接字的SO_RCVBUF选项,作用有二:
1、设置内部的接收缓冲区
2、广播给远方peer的滑动窗口的最大值。
每个tcp session都拥有设置的ReceiveBufferSize大小的接收缓冲区,如果这个值设置的过大, 那么进程来不及处理时,对服务器的内存使用就会增大。
当一个session 的接收缓冲区满的时候,服务器端会丢弃接收到的数据, 然后发送一个win=0的窗口更新消息给客户端。
调用SocketChannel.write 写到套接字的数据非常有可能滞留在发送端的发送缓存区中。如果发送端的缓存中有数据而进程被杀掉, 那么丢失数据了,需要应用层来验证数据的完整性

Posted in: 面试加油站

Comments are closed.