TCP_DEFER_ACCEPT
只有当实际收到了数据,才唤醒正在 accept 的进程,可以减少一些无聊的上下文切换。
同时有个超时时间 若time_out之内还没有收到数据,不会继续唤醒进程,而是直接丢弃连接。
例如:
设置TCP_DEFER_ACCEPT选项后,服务器受到一个CONNECT请求后,操作系统不会Accept,也不会创建IO句柄。
操作系统应该在若干秒,(但肯定远远大于上面设置的1s) 后,会释放相关的链接。但没有同时关闭相应的端口,
所以客户端会一直以为处于链接状态。如果Connect后面马上有后续的发送数据,那么服务器会调用Accept接收这个链接端口。
优点:
这个端口设置对于CONNECT链接上来而又什么都不干的攻击方式处理很有效。我们原来的代码都是先允许链接,然后再进行超时处理,
比他这个有点Out了。不过这个选项可能会导致定位某些问题麻烦。
只有当实际收到了数据,才唤醒正在 accept 的进程,可以减少一些无聊的上下文切换。
同时有个超时时间 若time_out之内还没有收到数据,不会继续唤醒进程,而是直接丢弃连接。
例如:
设置TCP_DEFER_ACCEPT选项后,服务器受到一个CONNECT请求后,操作系统不会Accept,也不会创建IO句柄。
操作系统应该在若干秒,(但肯定远远大于上面设置的1s) 后,会释放相关的链接。但没有同时关闭相应的端口,
所以客户端会一直以为处于链接状态。如果Connect后面马上有后续的发送数据,那么服务器会调用Accept接收这个链接端口。
优点:
这个端口设置对于CONNECT链接上来而又什么都不干的攻击方式处理很有效。我们原来的代码都是先允许链接,然后再进行超时处理,
比他这个有点Out了。不过这个选项可能会导致定位某些问题麻烦。