概述
平時我們玩linux的時候有時需要看下服務器是不是開放了一些端口號,然后看新的端口會不會沖突之類,講查看服務器開放端口號之前,先了解一下物理端口、邏輯端口、端口號等計算機概念。
01
端口相關概念:
在網絡技術中,端口(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)
動態端口,即私人端口號,是可用于任意軟件與任何其他的軟件通信的端口數,使用因特網的傳輸控制協議,或用戶傳輸協議。動態端口一般從49152到65535。
Linux中有限定端口的使用范圍,如果要為程序預留某些端口,那么需要控制這個端口范圍。/proc/sys/net/ipv4/ip_local_port_range定義了本地TCP/UDP的端口范圍,也可以在/etc/sysctl.conf里面定義net.ipv4.ip_local_port_range = 1024 65000

02
端口與服務的關系
端口有什么用呢?一臺擁有IP地址的主機可以提供許多服務,比如Web服務、FTP服務、SMTP服務等,這些服務完全可以通過1個IP地址來實現。那么,主機是怎樣區分不同的網絡服務呢?顯然不能只靠IP地址,因為IP 地址與網絡服務的關系是一對多的關系。實際上是通過“IP地址+端口號”來區分不同的服務的。
端口號與相應服務的對應關系存放在/etc/services文件中,這個文件中可以找到大部分端口。
1:nmap工具檢測開放端口
nmap是一款網絡掃描和主機檢測的工具。nmap的安裝非常簡單,如下:
# rpm -ivh nmap-4.11-1.1.x86_64.rpm # rpm -ivh nmap-frontend-4.11-1.1.x86_64.rpm
nmap 127.0.0.1 查看本機開放的端口,會掃描所有端口。 當然也可以掃描其它服務器端口。
# nmap 127.0.0.1

2:netstat 工具檢測開放端口
# netstat -anlp | grep 3306 # netstat -anlp | grep 22

不過這個工具沒有nmap簡潔明了。
3:lsof 工具檢測開放端口
# lsof -i:3306

# lsof -i TCP| fgrep LISTEN

4: 使用telnet檢測端口是否開放
服務器端口即使處于監聽狀態,但是防火墻iptables屏蔽了該端口,是無法通過該方法檢測端口是否開放的。
5:netcat工具檢測端口是否開放。
# nc -vv 172.18.186.160 1521
