come funziona davvero il comando 'ping'?


24

Come funziona davvero il comando ping? In particolare, da dove viene il quadro ARP (Address Resolution Protocol)?

Mi è stata posta questa domanda in un'intervista e non sono stato in grado di elaborare uno scenario in cui ARP potesse essere utilizzato.


Guarda in ICMP.

3
ARP viene utilizzato per ottenere l'indirizzo MAC di un indirizzo IP specifico. Quando è necessario inviare un pacchetto su Ethernet, è necessario l'indirizzo MAC della destinazione.

Risposte:


16

Se vuoi davvero capire, c'è un eccellente white paper (molto ben scritto) qui:

http://images.globalknowledge.com/wwwimages/whitepaperpdf/WP_Mays_Ping.pdf

Ecco il riepilogo ->

Ping (Program on the application layer) ------->
Opens a 'raw' socket to IP Layer ------>
IP layer (Layer 2 on OSI) packages ICMP packet and sends it

Poiché non esiste un livello TCP nel mezzo, Ping (program)è necessario monitorare tutti i pacchetti ICMP in arrivo e filtrare solo quelli dalla destinazione.

Spero che sia d'aiuto.


9

Supponendo che il ping implichi un pacchetto inviato su una rete Ethernet o WiFi, ARP viene utilizzato per trovare l'indirizzo hardware Ethernet del dispositivo che riceve il pacchetto in uscita. In genere questo sarà il router per la LAN su cui è attiva la macchina che ha originato il ping.

Il processo tipico è:

  1. Immettere un comando per eseguire il ping di una destinazione.

  2. Il DNS viene utilizzato per determinare l'indirizzo IP (se necessario).

  3. La tabella di routing viene consultata per trovare l'hop successivo verso quella destinazione.

  4. L'ARP viene utilizzato per trovare l'indirizzo hardware dell'hop successivo.

  5. Il pacchetto IP viene inviato all'hop successivo, incapsulato in un frame Ethernet o WiFi.


3
L'unica risposta qui che risponde effettivamente alla domanda!
jmiserez,


1

Ping e ARP sono elementi diversi posizionati su livelli diversi nello stack del protocollo di rete.

Il ping è a livello di rete (o livello Internet - Dai un'occhiata al protocollo ICMP come sottolineato da @ServerMonkey).

Il protocollo Arp è a livello di collegamento (un livello inferiore). Il protocollo Arp è progettato per consentire la connessione fisica tra l'hardware di rete, che è direttamente collegato.

Nello stack di rete TCP / IP, ogni livello utilizza il livello sottostante per inoltrare i propri dati, incapsulandoli all'interno del protocollo di basso livello. Ogni livello è indipendente dall'altro e forse ignaro degli altri livelli di dettagli e implementazioni specifici (questo non è sempre vero: vedi funzione cross-layer ).


Sì. Ma l'implementazione del ping richiederebbe un po 'di codice su L2 (livello di collegamento). L'ARP entra in gioco al Livello 2.

@ liv2hak. no. l'implementazione del ping si trova sul livello di collegamento sottostante.

Si dice spesso che @liv arp sia il layer 2.5 ICMP si dice che sia il layer 3.5 I layer riguardano più i campi che il codice. E se vuoi dire che l'implementazione del ping richiede il codice al livello 2, beh, con qualsiasi implementazione di qualcosa, per definizione, non puoi avere un livello senza livelli al di sotto di esso.
barlop

1

ARP fornisce un indirizzo MAC, ma a volte se non è presente alcun indirizzo DMAC, viene utilizzato l'indirizzo di trasmissione.

Questo frame che utilizza il DMAC broadcast viene chiamato frame di broadcast ARP, con questo otteniamo l'indirizzo DMAC.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.