好好爱自己!

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状态非常短暂;

 

posted @   立志做一个好的程序员  阅读(457)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现

不断学习创作,与自己快乐相处

点击右上角即可分享
微信分享提示