PID为0的系统空闲进程连接状态为TIME_WAIT

PID为0的系统空闲进程连接状态为TIME_WAIT如果您使用命令提示符执行命令查看网络连接情况,您会发现,PID为0的SystemIdleProcess(系统空闲进程)将会出现很多网络端口占用情况。下面是一个示例:Proto LocalAddress     &nbs…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

如果您使用命令提示符执行命令查看网络连接情况,您会发现,PID为0的System Idle Process(系统空闲进程)将会出现很多网络端口占用情况。下面是一个示例:
Proto  Local Address          Foreign Address        State           PID
TCP    127.0.0.1:30606        127.0.0.1:3129         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3131         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3133         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3135         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3137         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3139         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3141         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3143         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3145         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3147         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3149         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3151         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3153         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3155         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3157         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3159         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3161         TIME_WAIT       0
TCP    127.0.0.1:30606        127.0.0.1:3165         TIME_WAIT       0
我们这里使用了“netstat -a -n -o”命令,参数-a用来显示所有的连接和监听端口,参数-o用来显示相应系统进程的PID,使用了参数-n以数字(IP)的方式显示地址和端口。
    那么是不是说明计算机中了病毒了呢?其实并不是这样,这要从为什么系统空闲进程要占用端口说起了。
    通过仔细观察,我们可以发现,命令结果列出的所有PID为0的通信的状态均为Time_Wait,而决不会是Established建立状态或者是Listening监听状态,这个就要涉及到一个TCP Socket的问题了,有兴趣深入研究的朋友们可以查阅一下更多的有关文章,因为概念性的东西太多了,因此我们在此仅进行一个简要的解释。
    原因是这样的:
    一、关于Time_Wait状态:
          TCP TIME-WAIT 延迟断开TCP 连接时,套接字对被置于一种称为TIME-WAIT 的状态。这样,新的连接不会使用相同的协议、源 IP 地址、目标 IP 地址、源端口和目标端口,直到经过足够长的时间后,确保任何可能被错误路由或延迟的段没有被异常传送。因此,Time_Wait不是多余的状态,而是为了保证通信的正确性、准确性而存在的。而且,这样的状态往往都交给系统空闲进程处理了,因为具体的应用程序已经完成了通信过程,发出了数据。因此,这里PID为0的通信均是已“断开”的曾经被进程使用过的连接,而且还没有释放端口。
    二、关于端口的释放:
          什么时候释放,怎样释放呢?我们将这种套接字对不被其它连接重新使用的时间长度指定为两个MSL(最大段生存时间),即4 分钟。对于Windows NT 系统来说,这是默认设置。然而,在此默认设置下,某些网络应用程序在很短时间内执行多个出站连接,也就可能会在端口收回前用完所有的可用端口。
    三、我们所看到的空闲进程端口占用的特点:
          因为总是有程序要交替或者分段连续地访问网络,而且同一个程序在端口被完全释放之前,可能还会再次使用,就算不再使用,为了保证正确通信,也要等待两个MSL,故处于Time_Wait。因此我们看到的情况是,系统空闲进程占用了一些端口,而且这些端口、端口的数量随着每次执行netstat -a -n -o命令时也会有变化。因为可能在某个处于Time_Wait的端口被完全释放之前,又有一个连接不再需要某个端口了,故新的一个端口又被置于Time_Wait状态,过了不久,前一个终于被释放了,于是您还是看到有这样的状态,但是端口是不一样的。对于一个接入网络并且安装了需要网络的应用软件的操作系统,这个过程是无限循环的,因此您总是能够看到处于Time_Wait状态的被PID=0的系统空闲进程“使用”的连接。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179922.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows服务创建工具srvany.exe介绍

    windows服务创建工具srvany.exe介绍srvany.exe介绍 srvany.exe是MicrosoftWindowsResourceKits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行。也就是说srvany只是其注册程序的服务外壳,这个特性对于我们来说非常实用,我们可以通过它让我们的程序以SYSTEM账户启动,或者实现随机器启动而自启动,也可以隐藏不必要的窗口,比如说控制台窗口等等。 

    2022年5月20日
    93
  • 敏捷开发协同瀑布式项目管理平台(一)总体设计

    敏捷开发协同瀑布式项目管理平台(一)总体设计

    2021年8月22日
    51
  • 经典Sql面试题收集!!

    经典Sql面试题收集!!

    2021年8月11日
    49
  • 100道经典的c语言面试题[通俗易懂]

    100道经典的c语言面试题[通俗易懂]100条经典C语言笔试题目 题目来源:1、中兴、华为、慧通、英华达、微软亚洲技术中心等中外企业面试题目;2、C语言面试宝典(林锐《高质量编程第三版》)。说明:1、部分C语言面试题中可能会参杂部分和C++相关的知识,为了保持题目的灵活性故保留,但选题最终还是会以C语言题目为主体;2、以上公司的面试题目已成为国内中小型企业公司出题模板;3、由于本人的能力有限加上…

    2022年7月12日
    117
  • idea2021激活码csdn-激活码分享

    (idea2021激活码csdn)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月22日
    186
  • LAMP安全配置「建议收藏」

    LAMP安全配置「建议收藏」1.设置mysql密码,删除多余root账号[root@localhost~]#mysql-uroot-pmysql>setpassword=password(“111″);mysql>usemysql;mysql>deletefrom`user`whereuser!=”root”;mysql>deletefrom`user`whereuser=”root”

    2022年5月16日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号