From: john maclean Date: 2008-08-30T13:01:36+09:00 Subject: Re: Ping.pingecho 2008/8/29 John Pritchard-williams : > john maclean wrote: >> Cisco.com don't normally allow pings so tracroutes and pings won't get >> echo requests. >> >> >> irb(main):003:0> Ping.pingecho('cisco.com', 10, 80) >> => true >> >> How come this works and `ping` does not? From irb I see that Ruby's >> ping uses a TCP echo. Also I've run tcpdump whilst running ping.echo >> and could not determine the port that it uses. What port does Ruby's >> Ping use? > > check out: > > http://www.noobkit.com/show/ruby/ruby/standard-library/ping/pingecho.html > > According to this the 'echo' port. > > grep'ing 'echo' in my /etc/services reveals this is port 7...apparently. > (UDP and TCP). > > > > -- > Posted via http://www.ruby-forum.com/. > > Thanks for the reply. pinging on the echo port makes sense. However one can ping a host for service and get a response even if that service is not actually running on the host. services = %w{bacula-dir distcc echo fax git hostname http https icmpd kermit keyserver ldap mbus msexch-routing mysql nmap postgres quake rsync rwhois shell squid ssh svn telnet traceroute tunnel whoami wins x11} wooota = '192.168.1.1' services.each do |x| p %Q{checking host #{host} for protocol #{x}} p Socket.getaddrinfo(host, x) end I get responses even though I __know__ that these services are __not__ running on my router. Is this because pingecho sends packets on port 7 regardless of the service that one requests? -- John Maclean - 07739 171 531 MSc (DIC)