端口分析

Posted paul-watermelon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了端口分析相关的知识,希望对你有一定的参考价值。

简介:

比如我们在服务器上运行 nginx,访问的时候就是连接不上,我们可以使用 ps aux | grep nginx看下nginx进程是不是启动了,也可以看下 80端口有没有被占用。换句话说,如果没有任何程序跑在这个端口上(或者说没有任何程序使用这个端口),证明忘了启动相关程序或者没能启动成功,或者说程序使用的端口被修改了,不是80了,那又怎么可能能访问到呢?

1.查看全部端口占用情况

Linux中我们可以使用 netstat 工具来进程网络分析,netstat 命令有非常多选项,这里只列出了常用的一部分
-a或--all 显示所有连接中的Socket,默认不显示 LISTEN 相关的。
-c或--continuous 持续列出网络状态,不断自动刷新输出。
-l或--listening 显示监听中的服务器的Socket。
-n或--numeric 直接使用IP地址,而不是展示域名。
-p或--programs 显示正在使用Socket的程序进程PID和名称。
-t或--tcp 显示TCP传输协议的连接。
-u或--udp 显示UDP传输协议的连接。

比如我们可以查看服务器中监控了哪些端口,如果我们的nginx是使用80端口,uwsgi使用的是7001端口,我们就能知道通过下面的命令

> netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:7001            0.0.0.0:*               LISTEN      2070/uwsgi      
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      1575/redis-server 1

就能知道80端口的 nginx 是不是启动成功了,7001端口的uwsgi是不是启动成功了。

注意:如果PID和Program Name显示不出来,证明是权限不够,可以使用sudo运行

 

2.查看具体端口占用情况

> sudo lsof -i :80 (注意端口80前面有个英文的冒号)
COMMAND    PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   4123   admin    3u  IPv4  13031      0t0  TCP *:http (LISTEN)
nginx   4124   admin    3u  IPv4  13031      0t0  TCP *:http (LISTEN)

我们可以通过这个方法查询出占用端口的程序,如果遇到端口已经被占用,原来的进程没有正确地终止,可以使用kill命令停掉原来的进程,这样我们就又可以使用这个端口了。

 

除了上面讲的一些命令,在部署过程中会经常用到下面的一些Linux命令,如果不清楚它们是做什么的,可以提前自行学习下这些Linux基础命令:

ls, touch, mkdir, mv, cp, ps, chmod, chown

学习完了这些内容,我们应该就具备了部署Linux服务器的基础知识了,在遇到问题后,应该也会有一些调查思路。

以上是关于端口分析的主要内容,如果未能解决你的问题,请参考以下文章

Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段

Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段

CPNtools协议建模安全分析---实例变迁标记

优化 C# 代码片段、ObservableCollection 和 AddRange

前端防扒代码片段

前端防扒代码片段