tcp/ip中的listen与accept模型
如果说listen与accept占用的是同一个端口,那么连接的监听过程与建立过程使用的是同一个状态机。
连接建立过程主要是在accept系统调用中体现,listen只不过是相当于设置了一个标志,所有试图连接上这个应用程序,
都要进行连接状态的检查,如果连接已经建立成功,则可以直接发送数据了,转移到select/epoll/poll的监控集合中,
这个也许就是listen的作用;如果没有建立成功,或是初次连接或是正在进行3次握手,都是由accept处理,accept会查询
当前连接的状态机进行适当的处理,一旦经过了3次握手的状态机,那么就可以转移到select/epoll/poll的监控集合中。
tcp/ip中的缓冲区与队列
tcp/ip的缓冲区与队列是socket描述符的(发送与接收)缓冲区,也是socket描述符的消息队列,
并不是端口的接收/发送缓冲区和消息队列。
tcp/ip的描述符的限制
有时作为服务器或客户端需要打开socket描述符的限制,这个在/etc/sysconfig/limits.conf中;
当机器作为客户端去连接某个服务器时,它最多只能打开65536个socket,建立一个连接就要占用一个端口,
而TCP/IP协议中的port是用2字节的int表示,最大就是65536。
而作为服务器,在理论上可以允许2^48个客户端的连接,当然这是说服务器在特定的端口上允许的连接数目。
2^48=2^16*2^32,就是{remote_ip,remote_port}的组合数目。
阅读(1233) | 评论(0) | 转发(0) |