对tcp/ip协议新认识(二)-网络协议

对tcp/ip协议新认识(二)

 

  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}的组合数目。

Leave A Comment