济南建设监理协会网站,制作网站项目实例,wordpress主题:yusi v2.0,自有电脑做网站服务器ChannelOption(Channel中的连接参数)
ChannelOption.SOBACKLOG
ChannelOption.SO_BACKLOG对应的是tcp/ip协议listen函数中的backlog参数#xff0c;服务端处理客户端连接请求是顺序处理的#xff0c;所以同一时间只能处理一个客户端连接#xff0c;多个客户端来的时候服务端处理客户端连接请求是顺序处理的所以同一时间只能处理一个客户端连接多个客户端来的时候服务端将不能处理的客户端连接请求放在队列中等待处理。所以操作系统里一般有两个队列一个是ACCEPT队列保存着已经完成了TCP的三次握手的连接一个SYN队列服务器正在等待TCP的三次握手完成的队列。BSD派生系统里backlog指的就是SYN队列的大小在Linux的实现里backlog相对来说就含糊不清了有些内核版本指的是ACCEPT队列SYN队列合起来的大小有的是指SYN队列的大小。但是从Linux2.2开始backlog的参数行为在Linux2.2中发生了变化现在它指定等待接受的完全建立的套接字的队列长度而不是不完整的连接请求的数量不完整套接字队列的最大长度可以使用/proc/sys/net/ipv4/tcp_max_sync_backlog设置默认128。如果backlog参数大于/proc/sys/net/core/somaxconn 中的值那么它会被静默截断为值128.在2.4.25之前的内核中此限制是硬编码值后续内核版本也可以通过vim /etc/sysctl.conf来修改,包括前面说的tcp_max_sync_backlog也可以在此处修改然后通过命令sysctl -p生效 注意 等待建立连接的队列和不完整的连接的队列是不一样的等待建立连接的队列是指已经握手的队列但是此时此刻还没建立起连接Channel还没有被打开而不完整的连接的队列是指还没有握手完的连接
ChannelOption.SO_REUSEADDR
ChannelOption.SO_REUSEADDR对应与套接字选项中的SO_REUSEADDR,这个参数表示 允许重复使用本地地址和端口比如多网卡(IP)绑定相同端口比如某个进程非正常退出 内核需要一定的时间才能够释放此端口
ChannelOption.SO_KEEPALIVE
ChannelOption.SO_KEEPALIVE参数对应于套接字选项中的SO_KEEPALIVE,该参数用于设置TCP连接当设置该选项以后连接会测试连接状态这个选项用于可能长时间没有数据交流的连接。当设置该选项以后如果在两小时内没有数据的通信TCP会自动发送一个活动探测数据报文
ChannelOption.SO_SNDBUF/ChannelOption.SO_RCVBUF
ChannelOption.SO_SNDBUF参数对应于套接字选项中的SO_SNDBUF, ChannelOPtion.SO_RCVBUF参数对应于套接字选项中的SO_RCVBUF 这两个参数用于操作接受缓冲区和发送缓冲区的大小接收缓冲区用于保存网络协议栈内收到的数据知道应用程序读取成功发送缓冲区用于保存发送数据直到发送成功
ChannelOption.SO_LINGER
ChannelOption.SO_LINGER参数对应于套接字选项中的SO_LINGER,Linux内核默认的处理方式是 当用户调用close()方法的时候函数返回在可能的情况下尽量发送数据不一定保证会发剩余的 数据造成了数据的不确定性使用SO_LINGER可以阻塞close()的调用时间直到数据完全发送
ChannelOption.TCP_NODELAY
ChannelOption.TCP_NODELAY参数对应于套接字选项中的TCP_NODELAY,该参数的使用与Nagle 算法有关Nagle算法是将小的数据包组装为更大的帧然后进行发送而不是输入一次发送一次 因此在数据包不足的时候会等待其他数据的到了组装成大的数据包进行发送虽然该方式有效提高 网络的有效负载但是却造成了延时而该参数的作用就是禁止使用Nagle算法使用小数据即时传输 与TCP_NODELAY相对应的是TCP_CORK该选项是需要等到发送的数据量最大的时候一次性发送数据 适用于文件传输