在網絡技術中,端口(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屏蔽了該端口,是無法通過該方法檢測端口是否開放的。
5:netcat工具檢測端口是否開放
[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