端口与服务的关系
一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
服务是否可用
举个列子比如mysql服务,需要考虑两方面,首先是服务是否启用,如果启用mysql我们一般会使用3306端口,其次是考虑,此端口是不是对外开放。
1. 检测服务是否启用,端口是不是被监听
查看的方法:
- 1.1使用lsof命令
lsof -i:3306
# root @ VM_33_19_centos in /etc [9:02:31]
$ lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 2791 mysql 14u IPv4 18188 0t0 TCP *:mysql (LISTEN)
- 1.2 使用netstat命令
netstat -tunlp
或者netstat -antup
# root @ VM_33_19_centos in /etc [9:07:46]
$ netstat -antup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2791/mysqld
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 13550/sshd
tcp 0 132 10.105.33.19:22 106.120.206.201:57791 ESTABLISHED 5784/sshd: root@pts
tcp 0 0 10.105.33.19:46618 10.142.58.45:5574 ESTABLISHED 794/YDService
tcp6 0 0 :::111 :::* LISTEN 18349/rpcbind
tcp6 0 0 :::21 :::* LISTEN 3105/vsftpd
tcp6 0 0 :::22 :::* LISTEN 13550/sshd
udp 0 0 0.0.0.0:111 0.0.0.0:* 18349/rpcbind
udp 0 0 0.0.0.0:716 0.0.0.0:* 18349/rpcbind
udp6 0 0 :::111 :::* 18349/rpcbind
udp6 0 0 :::716 :::* 18349/rpcbind
- 1.3使用工具nmap
安装 yum install nmap -y
使用 nmap 127.0.0.1
nmap 127.0.0.1 查看本机开放的端口,会扫描所有端口。 当然也可以扫描其它服务器端口。
# root @ VM_33_19_centos in /etc [9:11:17]
$ nmap 127.0.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2017-10-27 09:12 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000030s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
111/tcp open rpcbind
3306/tcp open mysql
2. 查看端口是不是对外开放
- 服务器端口即使处于监听状态,但是防火墙iptables屏蔽了该端口,我们也不能对外提供服务
可以使用telnet检测端口是否开放 telnet xxx.xx.xx.xx 3306
- 检测一个IP的某个端口是否开放,那么你会用什么命令来测试呢?是ping还是telnet?
其实正确的方法应该是telnet命令。因为用ping命令的话不管你ping哪个端口,只要这个IP地址可以ping通,都会有数据返回。