概述
平時我們玩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
後面會分享更多devops和DBA方面的内容,感興趣的朋友可以關注一下~