Non conosco java ma essenzialmente posso dirti la teoria che è comune a tutti i linguaggi. Devi lavorare a basso livello creando:
un pacchetto ip contenente ip sorgente e destinazione.
un pacchetto icmp definendo tipo (ECHO_REQUEST), ID number, checksum e il payload con cui riempire il campo data (il ping di windows ad es ci inserisce tutte le lettere dell'alfabeto).
Successivamente crei un socket di tipo RAW:
s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)
s.setsockopt(IPPROTO_IP, IP_HDRINCL, 1)
...mandi il tutto (pacchetto ICMP incapsulato in quello IP) all'ip di destinazione e con lo stesso socket attendi gli ECHO REPLY di risosta che potrai stampare a video.
Penso che trimite google puoi facilmente trovare esempi di codice (il ping è uno dei primi esercizi che si fanno con le socket raw).
Saluti

Rispondi quotando