如何判斷哪個應用程式正在使用哪個連接埠?

如何判斷哪個應用程式正在使用哪個連接埠?

我一直在研究netstatMacBook 上的輸出。我注意到有些應用程式允許您指定它使用哪個連接埠。例如,utorrent允許您這樣做。我選擇了連接埠 55743 然後運行netstat | grep 55743,輸出如下。

udp6       0      0  *.55743                *.*
udp4       0      0  *.55743                *.*

當我退出時,utorrent端口被釋放。但是,如果我不知道連接埠號,那麼我如何知道哪個應用程式正在使用哪個連接埠?某些應用程式是否有可能秘密使用連接埠與外部伺服器設備進行通訊?

答案1

正如 David Houde 所提到的,lsof -i您的朋友是否為您提供了當前套接字連接/操作的快照。不幸的是,在 OS X 上,netstat不支援此功能。

其他選項包括:

Activity Monitor.app允許您查看應用程式開啟的檔案和連接埠。這可以透過雙擊進程並打開「開啟檔案和連接埠」標籤來完成。

dtrace - 簽出索連接腳本,它為您提供有關網絡操作的連續信息,直到您退出(control+c)。輸出範例:

sudo /tmp/soconnect.d 
PID    PROCESS          FAM ADDRESS          PORT   LAT(us) RESULT
8211   X-Lite           2   192.168.1.109    5060        25 Success
4112   Google Chrome    2   173.194.34.134   443         53 In progress
8211   X-Lite           2   192.168.1.109    5060        30 Success

我個人非常喜歡的一款應用程式是小告密者,但它恰好是商業軟體。儘管這是一款桌面防火牆軟體,但它具有許多您可能感興趣的功能:

  • 網路監視器,它告訴您哪些應用程式正在連接到哪裡(在某種程度上類似於 soconnect.d 輸出)
  • 捕獲每個應用程式的網路流量(即類似於wireshark,您可以監視網路流量,但僅限於特定應用程式)

回答你的第二個問題 - 是的,在傳統作業系統(例如 OS X、Windows)上,應用程式能夠以各種方式連接到第三方系統並發送任何內容。許多桌面防火牆試圖透過允許您指定每個應用程式可以連接到的位置來解決此問題,從而擁有某種白名單。與安全領域的其他方法一樣,這種方法也並非沒有缺陷。

附:我與任何桌面防火牆軟體供應商沒有任何關係:)

答案2

您可以使用更多 netstat 參數或使用 lsof 來完成此操作:

netstat -lp
lsof -i udp:55743

相關內容