我想制作一个没有任何库的简单跟踪路由。
在 Wireshark 中,我看到了传入的响应,但我无法接收到消息。的端口与receive_socket
的端口相同send_socket
,并且指定的协议应该是正确的。
def traceroute
local_host = '0.0.0.0'
remote_host = '8.8.8.8'
traceroute_port = 33434
random_port = rand(10000..20000)
# Create UDP-Socket
udp_socket = UDPSocket::new
udp_socket.bind(local_host, random_port)
udp_socket.setsockopt( 0, Socket::IP_TTL, 3)
# Send Data
udp_socket.connect(remote_host, traceroute_port)
udp_socket.send('Traceroute', 0)
# Create Receive-Socket
receive_socket = Socket.open(Socket::PF_INET, Socket::SOCK_RAW, Socket::IPPROTO_ICMP)
receive_socket.bind(Socket.pack_sockaddr_in(random_port, local_host))
# Receive Data
begin
p receive_socket.recvfrom(1024)
rescue SocketError => exception
puts exception.message
end
end
如果有人能帮助我,那就太好了。