Telnet
驗證與 UDP 埠上的伺服器的連接
我想知道 HP-UX 機器是否可以使用 UDP 在特定埠上與遠端機器(我無法控制)通信。
我試過telnet,但它看起來不支持UDP。我會使用 netcat,但我找不到任何捆綁包。這台機器正在生產中,所以我不想過多地編譯或安裝東西……(nmap,netcat from source……)
有什麼簡單的方法可以做到這一點嗎?
ping UDP 埠有點棘手,因為本身沒有**連接。**如果您無法控制遠端主機,那麼您可能永遠不會真正知道您的 UDP 數據報是否真正被接收。我假設您已經知道遠端主機是否可以通過
ping
,traceroute
,mtr
等訪問。(如果沒有,請先檢查!)接下來,由於您沒有
netcat
,您將需要某種生成 UDP 數據包的方法。當
bash
您將數據重定向到特殊設備時,shell 會發送 UDP 數據包/dev/udp/host/port
。例如:#!/bin/bash host="10.10.10.10" port=12345 echo "PING" >/dev/udp/$host/$port
當然,Python 也完全支持 UDP,例如
#!/bin/python import socket host="10.10.10.10" port=12345 udp_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udp_sock.sendto('PING', (host, port))
無論您如何設法生成 UDP“ping”數據包,您都想知道目標是否收到了它。如果目標埠是開放的(即服務正在偵聽給定埠),那麼會發生什麼將是應用程序定義的。希望您會注意到遠端系統的一些行為或指示。
如果目標埠已關閉(即沒有服務在該埠上偵聽),那麼您應該得到一個 ICMP 錯誤數據包作為響應。使用您最喜歡的有線級網路嗅探器進行監視。或者,也許您的 HP-UX 系統在某處記錄了 ICMP 錯誤(抱歉,我對 HP-UX 沒有任何經驗)。
不幸的是,如果目標有防火牆,則在目標埠關閉時您可能不會得到響應。知道遠端主機是否響應的唯一可靠方法是執行依賴於 UDP 數據的應用程序並觀察網路流量。