前言
使用Linux主机也有一段时间,常常会监测某一个端口是否已经开启了、或者某一个端口被哪一个程序占用了,然而今天就系统整理一下,Share~
端口类型
说点理论的的东西,额~Unix/Linux服务器的类型有哪些呢?按照端口的分段基本可以分成三大类型:
- 公认端口(Well Known Port)
公认端口号从0到1023,它们紧密绑定与一些常见服务,例如FTP服务使用端口21、HTTP服务使用端口80
- 注册端口(Registered Ports)
注册端口一般从1024到49151,它们松散地绑定于一些服务。
- 动态或私有端口(Dynamic and/or Private Ports)
动态端口,即私人端口号(private port numbers),是可用于任意软件与任何其他的软件通信的端口数,使用因特网的传输控制协议,或用户传输协议。动态端口一般从49152到65535
端口与服务
无论在windows上还是Linux上,一台计算机主机都含有多种服务,比如Web服务、FTP服务、SMTP服务等。那么端口有什么用呢,我们知道,一台拥有IP地址的主机可以提供许多服务,这些服务完全可以通过1个IP地址来通讯。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
得回到我的Title了,不然就成了标题党(o)/~
nmap
- 简介
nmap是一款网络扫描和主机检测的工具 - 安装
sudo apt-get install nmap
- 语法格式
nmap [扫描类型] [选项] {目标}
- 示例
# 查找172.16.168.200主机上的端口开放情况
➜ ~ nmap 172.16.168.200
Starting Nmap 6.40 ( http://nmap.org ) at 2017-04-13 11:33 CST
Nmap scan report for 172.16.168.200
Host is up (0.021s latency).
Not shown: 993 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
8888/tcp open sun-answerbook
10001/tcp open scp-config
10002/tcp open documentum
10003/tcp open documentum_s
Nmap done: 1 IP address (1 host up) scanned in 1.86 seconds
# 查找172.16.168.200主机上的端口服务的详细信息
netstat
- 简介
用于显示各种网络相关信息,如网络连接,路由表,接口状态 等等 - 语法格式
netstat [-acCeFghilMnNoprstuvVwx] [-A<网络类型>][--ip]
- 示例
# 结合grep查找是否开启了3306端口
➜ ~ netstat -anlp |grep 3306
(并非所有进程都能被检测到,所有非本用户的进程信息将不会显示,如果想看到所有信息,则必须切换到 root 用户)
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN -
lsof
- 简介
这个是我比较常用的端口监测的命令,它也是用于查找端口的一个命令工具。 - 示例
# 监测3306端口是否启动了
➜ ~ sudo lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 1277 mysql 11u IPv4 16839 0t0 TCP *:mysql (LISTEN)
netcat
- 简介
监测某一个端口是否可以连接得上的一个命令行工具。 - 示例
# 成功
➜ ~ netcat -vv 172.16.168.1 3000
Connection to 172.16.168.1 3000 port [tcp/*] succeeded!
# 失败
➜ ~ netcat -vv 172.16.168.1 3001
netcat: connect to 172.16.168.1 port 3001 (tcp) failed: Connection refused
ps
上面的命令行的用法、参数、选项还是比较多的,还有其它的功能,如上只是简单的使用,更多自行help... ...
Alic say : ****价值源于技术,贡献源于分享****