2

As I know, tcp port in 'time_wait' stat cann't be used. However, in my experiment, server reuses the 'time_wait' port? Why?

Firstly, in client machine, type command ehco 40000 40001 > /proc/sys/net/ipv4/ip_local_port_range. So, the maximum number of TCP ports is 2.

server code

while (1) {
    int len = sizeof(struct sockaddr);
    fd = accept(sfd, &remote, &len);

    read(fd, buf, sizeof(buf));
    close(fd);
}

client code

    for (i = 0; i < 3; i++)
    {
        sleep(1);
        pid_t pid = fork();
        if (pid == 0)
        {
            handler();
            exit(0);
        }
    }

 void handler()
 {
      * ............. */

      res = connect(sfd, result->ai_addr, result->ai_addrlen);
      if (res == -1) {
        perror("error");
        exit(1);
      }

      printf("connect\n");
 }

show

[root@livecd ~]# ./client 
connect
[root@livecd ~]# connect
connect

It's up to 3 connections. I think, 2 connections at most. Why ? server has 2 timewait connections.

[root@livecd ~]# netstat -anp | grep TIME
tcp  192.168.88.131:2016   192.168.88.132:40000  TIME_WAIT                  
tcp  192.168.88.131:2016   192.168.88.132:40001  TIME_WAIT                              

Environment

Linux livecd.centos 2.6.32-642.el6.i686 #1 SMP Tue May 10 16:13:51 UTC 2016

server config

[root@livecd ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout 
60
[root@livecd ~]# cat /proc/sys/net/ipv4/tcp_tw_recycle 
0
[root@livecd ~]# cat /proc/sys/net/ipv4/tcp_tw_reuse 
0

client config

[root@livecd ~]# cat /proc/sys/net/ipv4/ip_local_port_range 
40000   40001

Important I also try ubuntu server 14.04, but got the same result.

Kevin
  • 300
  • 1
  • 12
Pengcheng
  • 439
  • 1
  • 4
  • 14
  • You've misunderstood TIME_WAIT. It means it won't allow a connection *as that 4-tuple* for the TIME_WAIT interval. It doesn't stop new clients from connecting. Otherwise the entire Internet wouldn't work. – user207421 Jul 27 '16 at 08:52
  • Section 18.6.1 of `TCP/IP Illustrated Volume 1: The Protocols (First Edition)` introduces about this. – phyxnj Jul 28 '16 at 12:11

0 Answers0