在網絡技術中,端口(Port)包括邏輯端口和實體端口兩種類型。實體端口指的是實體存在的端口,如ADSL Modem、集線器、交換機、路由器上用 于連接配接其他網絡裝置的接口,如RJ-45端口、SC端口等等。邏輯端口是指邏輯意義上用于區分服務的端口,如TCP/IP協定中的服務端口,端口号的範圍從0到65535,比如用于浏覽網頁服務的80端口,用于FTP服務的21端口等。由于實體端口和邏輯端口數量較多,為了對端口進行區分,将每個端口進行了編号,這就是端口号
端口按端口号可以分為3大類:
1:公認端口(Well Known Port)
公認端口号從0到1023,它們緊密綁定與一些常見服務,例如FTP服務使用端口21,你在 /etc/services 裡面可以看到這種映射關系。
2:注冊端口(Registered Ports):
從1024到49151。它們松散地綁定于一些服務。也就是說有許多服務綁定于這些端口,這些端口同樣用于許多其它目的.
3: 動态或私有端口(Dynamic and/or Private Ports)
動态端口,即私人端口号(private port numbers),是可用于任意軟體與任何其他的軟體通信的端口數,使用網際網路的傳輸控制協定,或使用者傳輸協定。動态端口一般從49152到65535
這裡介紹幾種常用檢測伺服器開放端口的方式:
1:nmap工具檢測開放端口
yum -y install nmap
使用較為簡單:
[root@VM_0_6_centos ~]# nmap 127.0.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2020-02-15 21:21 CST
Nmap scan report for VM_0_6_centos (127.0.0.1)
Host is up (0.0000050s latency).
Not shown: 992 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
443/tcp open https
3000/tcp open ppp
8383/tcp open m2mservices
9000/tcp open cslistener
9001/tcp open tor-orport
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
2:netstat 工具檢測開放端口
[root@DB-Server Server]# netstat -anlp | grep 3306
tcp 0 0 :::3306 :::* LISTEN 7358/mysqld
[root@DB-Server Server]# netstat -anlp | grep 22
tcp 0 0 :::22 :::* LISTEN 4020/sshd
tcp 0 52 ::ffff:192.168.42.128:22 ::ffff:192.168.42.1:43561 ESTABLISHED 6198/2
3:lsof 工具檢測開放端口
[root@DB-Server Server]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 7860 mysql 15u IPv6 44714 TCP *:mysql (LISTEN)
4: 使用telnet檢測端口是否開放
伺服器端口即使處于監聽狀态,但是防火牆iptables屏蔽了該端口,是無法通過該方法檢測端口是否開放的。
[root@DB-Server ~]# nc -vv 192.168.42.128 1521
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
[root@DB-Server ~]# nc -z 192.168.42.128 1521; echo $?
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
0
[root@DB-Server ~]# nc -vv 192.168.42.128 1433
nc: connect to 192.168.42.128 port 1433 (tcp) failed: No route to host