Listening
Syn_sent
syn_rcvd
established
close_wait
time_wait
---------
对方主动关闭(对方调用close()), 我方的状态变为 close_wait
我方主动关闭(我方调用close()), 我方的状态变为 time_wait
统计各种端口状态的数目:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
3. 什么是2MSL
MSL是Maximum Segment Lifetime,译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。
因为TCP报文(segment)是IP数据报(datagram)的数据部分,而IP头中有一个TTL域,TTL是time to live的缩写,中文可以译为“生存时间”,这个生存时间是由源主机设置初始值但不是存的具体时间,而是存储了一个IP数据报可以经过的最大路由数,每经过一个处理他的路由器此值就减1,当此值为0则数据报将被丢弃,同时发送ICMP报文通知源主机。
RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等
---------------------
作者:overstack
来源:CSDN
原文:https://blog.csdn.net/overstack/article/details/8833894
版权声明:本文为博主原创文章,转载请附上博文链接!
我觉得:下面这张图有误, 右边是time_wait?
--------------------------------------------------------------------------------------------
TCP协议规定需要三次握手才能成功连接、四次握手才能成功断开连接,在cmd命令行中输入netstat -an即可查看网络端口状态;
1.Listening:
处于监听状态;
2.Established:
建立连接表示正在通信;
3.Close_wait:
对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭;
4.Time_wait:
我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT;
5.Syn_sent:
表示请求连接,当你要访问其它的计算机的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为ESTABLISHED,此时SYN_SENT状态非常短暂;