首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

远程调试,你值得拥有

远程调试就是用本地的代码调试服务器上的代码,稍微想想怎么能做到呢,肯定是本地和远程服务上的虚拟机之间实现了相互通讯啊.。术语话一点,就是本地和远程的JVM之间基于某种协议(debug协议)以套接字(socket) 的方式实现通信,从而实现在本地远程调试服务端代码的功能。既然是以套接字的方式,那可定就有服务端和客户端的概念。这里不要思维定势了,所谓服务端和客户端是相对的,并不是说你部署服务的远程端才叫服务端,实际上,只要你喜欢,你可以将本地IDE配置成服务端,让远程服务启动后来主动连接本地,当然,通常的方式还是顺势思维,就把远程配置为socket的服务端,监听客户端;而且连接的建立都是服务端先启动后监听特定端口,等待客户端连接。

02

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

如果您使用命令提示符执行命令查看网络连接情况,您会发现,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的通信均是已

01
领券