Ping một cổng UDP là một việc khó khăn, vì không có kết nối nào cả . Nếu bạn không có quyền kiểm soát máy chủ từ xa, thì bạn có thể không bao giờ thực sự biết liệu các datagram UDP của mình có thực sự được nhận hay không. Tôi giả sử bạn đã biết liệu máy chủ từ xa có thể truy cập, thông qua ping
, traceroute
, mtr
, vv (Nếu không, kiểm tra xem đầu tiên!)
Tiếp theo, vì bạn không có netcat
, bạn sẽ cần một số cách tạo gói UDP.
Các bash
vỏ sẽ gửi các gói tin UDP khi bạn chuyển hướng dữ liệu đến các thiết bị đặc biệt /dev/udp/host/port
. Ví dụ:
#!/bin/bash
host="10.10.10.10"
port=12345
echo "PING" >/dev/udp/$host/$port
Python, tất nhiên, cũng hoàn toàn có khả năng UDP, vd
#!/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))
Bất kể bạn cố gắng tạo gói "ping" UDP như thế nào, bạn sẽ muốn biết liệu mục tiêu có nhận được nó hay không. Nếu cổng đích mở (nghĩa là một dịch vụ đang lắng nghe tại cổng đã cho), thì những gì xảy ra sẽ được xác định bởi ứng dụng. Hy vọng, bạn sẽ nhận thấy một số hành vi hoặc chỉ dẫn từ hệ thống từ xa.
Nếu cổng đích bị đóng (tức là không có dịch vụ nào lắng nghe tại cổng đó), thì bạn sẽ nhận được gói lỗi ICMP phản hồi. Sử dụng trình thám thính mạng cấp dây yêu thích của bạn để xem cho nó. Hoặc, có lẽ hệ thống HP-UX của bạn ghi lại các lỗi ICMP ở đâu đó (xin lỗi, tôi không có bất kỳ kinh nghiệm nào với HP-UX).
Thật không may, nếu mục tiêu được tường lửa, bạn có thể không nhận được phản hồi khi cổng đích bị đóng. Cách chắc chắn duy nhất để biết máy chủ từ xa có phản hồi hay không là chạy ứng dụng phụ thuộc dữ liệu UDP của bạn và xem lưu lượng mạng.