應用程式使用哪些連接埠

應用程式使用哪些連接埠

我正在測試一個應用程序,該應用程式打開自己的連接埠(充當這些連接埠的伺服器,因此在該連接埠上偵聽),並且將同一應用程式連接到其他應用程式綁定的連接埠(充當這些連接埠的客戶端)。

我想大致了解應用程式創建的連接埠以及它連接到的應用程式和連接埠。

我怎樣才能做到這一點?

答案1

您可以用於netstat此用途。請參閱範例(我 grep ssh):

netstat -putan | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1725/sshd
tcp        0      0 1.2.3.4:45734           1.2.3.5:22              ESTABLISHED 2491/ssh
tcp6       0      0 :::22                   :::*                    LISTEN      1725/sshd

解釋:

我經常使用參數-putan(因為它們很容易記住)。

  • -p:顯示應用程式/進程的PID
  • -u:顯示 udp 連接埠/連接
  • -t:顯示 TCP 連接埠/連接
  • -a:顯示監聽和非監聽套接字
  • -n:數位輸出(不進行主機名稱等的 DNS 查找)

在上面的輸出中,您可以看到有一個 ssh 守護程序 ( sshd),其 PID正在偵聽所有網路介面 ( ) 上的1725連接埠。還有一個 ssh 用戶端進程(PID )連接到連接埠號碼 處的IP 位址,我的 IP 位址是,我的外部連接埠是。您會看到連線已建立。因此我透過 登入。220.0.0.024911.2.3.5221.2.3.445734ssh

答案2

另一個可以做到這一點的工具是lsof:

# lsof -i -a -p 1981
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP host.example.com:ssh (LISTEN)
# lsof -i -a -p 1981 -n
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:ssh (LISTEN)
# lsof -i -a -p 1981 -n -P
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:22 (LISTEN)
#

使用的選項如下:

  • -i列印進程打開的互聯網端口
  • -a讓所有選項都進行 AND 運算
  • -p 1981顯示進程 1981 的輸出
  • -n禁止主機名稱尋找並顯示 IP
  • -P禁止服務查找並顯示連接埠號

lsof優點是您可以指定要檢查的進程,而不必從較大的輸出中對其進行 grep。 儘管它比以前變得更加標準netstat,但在系統上更可靠地可用。lsof

答案3

我們已經有了很好的答案,但它們只列出了命令運行時打開的連接埠。

strace是監視應用程式生命週期內打開的連接的正確工具:

strace -e socket,connect,close -f -o hipchat.strace.txt hipchat

輸出將向您顯示其他訊息,例如 UDP 請求和開啟但已關閉的連線。

答案4

ss -a4 | less

我假設您正在談論 IPv4...如果不是,您可以將前面命令中的 4 替換為 6。如果您不想解析顯示中的名稱,可以將 -n 新增至參數。

相關內容