为什么linux重用’time_wait’端口?
发布时间:2020-12-13 18:10:19 所属栏目:Linux 来源:网络整理
导读:据我所知,’time_wait’stat中的tcp端口不能使用.但是,在我的实验中,服务器重用’time_wait’端口?为什么? 首先,在客户端机器中,键入命令ehco 40000 40001的/ proc / SYS /网/的IPv4 / ip_local_port_range.因此,TCP端口的最大数量为2. 服务器代码 while (
据我所知,’time_wait’stat中的tcp端口不能使用.但是,在我的实验中,服务器重用’time_wait’端口?为什么?
首先,在客户端机器中,键入命令ehco 40000 40001>的/ proc / SYS /网/的IPv4 / ip_local_port_range.因此,TCP端口的最大数量为2. 服务器代码 while (1) { int len = sizeof(struct sockaddr); fd = accept(sfd,&remote,&len); read(fd,buf,sizeof(buf)); close(fd); } 客户代码 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("connectn"); } 节目 [root@livecd ~]# ./client connect [root@livecd ~]# connect connect 最多3个连接.我想,最多2个连接.为什么? [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 环境 Linux livecd.centos 2.6.32-642.el6.i686 #1 SMP Tue May 10 16:13:51 UTC 2016 服务器配置 [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 客户端配置 [root@livecd ~]# cat /proc/sys/net/ipv4/ip_local_port_range 40000 40001 重要 解决方法
使用时间等待状态防止来自先前连接的旧数据包被接受到新连接中.它有效地允许旧分组有足够的时间在网络中“死”.
但是,只要SYN上的初始序列号高于套接字上看到的最后一个序列号,处于Timewait状态的套接字就可以接受新连接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |