草庐IT

ByteBufAllocator

全部标签

tcp - Netty中net.inet.tcp.recvspace、SO_RCVBUF、Direct ByteBuf和ByteBufAllocator的关系

谁能快速解释一下Netty/NIO如何从操作系统消耗TCP缓冲区?我认为TCP滑动窗口ACK由操作系统TCP堆栈(recvspace)管理,并在每个数据包(MTU大小)之后发回,直到recvspace已满。那么在NIOselector触发receive事件后,NIO(directbuf模式)创建一个directbuffer指向同一个内存区域,并标记为已读?或者它是否从recvspace复制到另一个缓冲区?如果是这种情况,那么每个应用程序的SO_RCVBUF是什么?它是否相关?我的目标是仅在完全消耗缓冲区后才从下一个缓冲区读取(并因此发送新的ACK以读取更多内容)。