When I started porting my iPhone network tools to Android, I assumed ping, traceroute and Path MTU were off the table. ICMP needs a raw socket, a raw socket needs root, and without root the options I could see were shelling out to /system/bin/ping or timing TCP connects and calling it ping. Then a simple question stopped me: ping uses ICMP, which has no ports, so why was I planning around TCP ports for it? I had no good answer, so I went and checked: $ adb shell cat /proc/sys/ne...