tcp协议的端口状态
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状态非常短暂;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现