常用協議埠號大全,伺服器埠號怎麼看

儘管搞IT多年,但一些基本性的概念卻依舊似懂非懂,就好比說什麼是埠號?你說知道吧,確實知道,每個程序都有個自己的埠號,有些都是約定俗稱的,比如FTP埠21、SFTP埠22、IIS埠80等等。可是讓你去細細解釋一下,還真不一定能回答上來。

「linux專欄」什麼是埠號?如何查看埠號信息?

什麼是埠號?

我們都知道,每台聯網的計算機都有自己的IP,這個IP好比是在互聯網上的地址編號,是唯一的,這樣才能通過IP地址正常通信。那麼問題就來了,一台計算機它可能會提供多個服務,比如Apache服務、FTP服務、Email服務等等,通過IP地址來區分顯示是不可能的。這個時候我們就需要用埠來進行區分,每個服務對應指定的埠,這樣通過IP+埠就能唯一確定要訪問的服務了。

「linux專欄」什麼是埠號?如何查看埠號信息?

為了統一整個互聯網的埠和網路服務的對應關係,以便讓所有的主機都能使用相同的機制來請求或提供服務,同一個服務使用相同的埠,這就是協議。

計算機中的協議主要分為兩大類:面向連接的可靠的TCP協議(Transmission Control Protocol,傳輸控制協議);面向無連接的不可靠的UDP協議(User Datagram Protocol,用戶數據報協議)。這麼多的埠,我們該如何知道哪個埠對應哪個呢?其實在linux系統中,提供了/etc/services的文件,可以進行查看。

「linux專欄」什麼是埠號?如何查看埠號信息?

埠信息查看方法(進程號與的埠號均可查看)

以下的命令較多,詳細的用法不必深究,先記住固定用法,後期遇到了再細講。

方法 1:使用 ss 命令

ss 一般用於轉儲套接字統計信息,類似於 netstat 輸出的信息,但它顯示了更多的 TCP 信息和狀態信息。它還可以顯示所有類型的套接字統計信息,包括 PACKET、TCP、UDP、DCCP、RAW、Unix 域等。

[root@localhost ~]#  ss -tnlp | grep dmserver
State      Recv-Q Send-Q          Local Address:Port                         Peer Address:Port              
LISTEN     0      5                           *:5900                                    *:*                   users:          
LISTEN     0      128         :::5236                    :::*                   users:(("dmserver",pid=7060,fd=4))
[root@localhost ~]# 

方法 2:使用 netstat 命令

netstat 能夠顯示網路連接、路由表、介面統計信息、偽裝連接以及多播成員。既然已經會用ss的高級命令了,就忘記它吧。

[root@localhost ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp6       0      0 :::4236                 :::*                    LISTEN      7059/dmap               
tcp6       0      0 :::5236                 :::*                    LISTEN      7060/dmserver       
tcp6       0      0 :::22                   :::*                    LISTEN      6831/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      6832/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      7225/master         
[root@localhost ~]# 

方法 3:使用 fuser 命令

fuser 工具會將本地系統上打開了文件的進程的進程 ID 顯示在標準輸出中,一般通過埠去查看對應的進程和和用戶。

[root@localhost ~]# fuser -v  5236/tcp
                     用戶     進程號 許可權   命令
5236/tcp:            dmdba      7060 F.... dmserver

方法 4:使用 nmap 命令

nmap(「Network Mapper」)是一款用於網路檢測和安全審計的開源工具。它最初用於對大型網路進行快速掃描,但它對於單個主機的掃描也有很好的表現。

nmap 使用原始 IP 數據包來確定網路上可用的主機,這些主機的服務(包括應用程序名稱和版本)、主機運行的操作系統(包括操作系統版本等信息)、正在使用的數據包過濾器或防火牆的類型,以及很多其它信息。

[root@localhost ~]# nmap -sV -p 5236 localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2021-01-01 00:23 CST
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00031s latency).
Other addresses for localhost (not scanned): 127.0.0.1
PORT     STATE SERVICE    VERSION
5236/tcp open  tcpwrapped

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.91 seconds

可以看出,對於普通用戶來說,該命令似乎並不好用,也看得不大懂,還需要注意的是該命令一般不會默認安裝,需要額外安裝。

方法 5:使用 systemctl 命令

systemctl 是 systemd 系統的控制管理器和服務管理器,通過systemctl可以查看服務的具體運行信息,包括PID、是否自啟、啟動命令等。很遺憾,通過該命令只能查看到對應的PID進程號,如果要查看對應的埠號,可以通過本文中其他埠號、進程號查看方法進行互查。

[root@localhost ~]# systemctl status DmServiceDMSERVER.service 
● DmServiceDMSERVER.service - DM database instance service
   Loaded: loaded (/usr/lib/systemd/system/DmServiceDMSERVER.service; enabled; vendor preset: disabled)
   Active: active (running) since 一 2021-03-22 16:33:05 CST; 15h ago
  Process: 6837 ExecStart=/soft/dmdb/bin/DmServiceDMSERVER start (code=exited, status=0/SUCCESS)
 Main PID: 7060 (dmserver)
    Tasks: 54
   CGroup: /system.slice/DmServiceDMSERVER.service
           └─7060 /soft/dmdb/bin/dmserver /soft/dmdb/data/DAMENG/dm.ini -noconsole

3月 22 16:32:48 localhost.localdomain systemd[1]: Starting DM database instance service...
3月 22 16:33:05 localhost.localdomain DmServiceDMSERVER[6837]: [39B blob data]
3月 22 16:33:05 localhost.localdomain systemd[1]: Started DM database instance service.
[root@localhost ~]# 

方法 6:使用 lsof 命令

lsof 能夠列出打開的文件,並列出系統上被進程打開的文件的相關信息。

[root@localhost ~]# lsof -i:5236
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dmserver 7060 dmdba    4u  IPv6  46668      0t0  TCP *:padl2sim (LISTEN)

總體來說,進程號和埠號查看的辦法雖然很多,但在實際工作中,我們只需要掌握一種自己認為最好用的命令就可以了。後期會根據情況對相關命令進行復盤,詳細介紹其用法。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/233369.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-11 13:31
下一篇 2024-12-11 13:31

相關推薦

發表回復

登錄後才能評論