jak naprawdę działa polecenie „ping”?

24

Jak naprawdę działa polecenie ping? W szczególności, gdzie pojawia się ARP (Address Resolution Protocol)?

Zadano mi to pytanie w wywiadzie i nie byłem w stanie wymyślić scenariusza, w którym można by zastosować ARP.

liv2hak
źródło
Zajrzyj do ICMP.
3
ARP służy do uzyskania adresu MAC określonego adresu IP. Gdy potrzebujesz wysłać pakiet przez Ethernet, potrzebujesz adresu MAC miejsca docelowego.

Odpowiedzi:

16

Jeśli naprawdę chcesz zrozumieć, znajdziesz tutaj doskonałą (bardzo dobrze napisaną) białą księgę:

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

Oto podsumowanie ->

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

Ponieważ pomiędzy nimi nie ma warstwy TCP, Ping (program)musi monitorować wszystkie przychodzące pakiety ICMP i filtrować tylko te z miejsca docelowego.

Mam nadzieję, że to pomaga.

PlanetUnknown
źródło
9

Zakładając, że ping wymaga wysłania pakietu przez sieć Ethernet lub WiFi, ARP służy do znalezienia adresu sprzętowego Ethernet urządzenia odbierającego pakiet wychodzący. Zazwyczaj jest to router dla sieci LAN, na której znajduje się maszyna inicjująca polecenie ping.

Typowy proces to:

  1. Wprowadź polecenie, aby wysłać polecenie ping do miejsca docelowego.

  2. DNS służy do określania adresu IP (w razie potrzeby).

  3. Tabela routingu jest sprawdzana, aby znaleźć następny przeskok do tego miejsca docelowego.

  4. ARP służy do znalezienia adresu sprzętowego następnego przeskoku.

  5. Pakiet IP jest wysyłany do następnego przeskoku, zamknięty w ramce Ethernet lub WiFi.

David Schwartz
źródło
3
Jedyna odpowiedź tutaj, która faktycznie odpowiada na pytanie!
jmiserez
2

Ping to tak naprawdę dwa różne pakiety ICMP (Internet Control Message Protocol).

Aby wysłać polecenie ping do hosta, najpierw wysyłasz pakiet żądania echa ICMP, host następnie odpowiada odpowiedzią echa ICMP.

Aby uzyskać więcej informacji, zobacz: https://en.wikipedia.org/wiki/Ping_(networking_utility)

Matthias Braun
źródło
1

Ping i ARP to różne rzeczy znajdujące się na różnych warstwach w stosie protokołu sieciowego.

Ping znajduje się w warstwie sieci (lub warstwie internetowej - spójrz na protokół ICMP , jak wskazał @ServerMonkey).

Protokół Arp znajduje się na poziomie łącza (niższy poziom). Protokół Arp umożliwia fizyczne połączenie między sprzętem sieciowym, który jest bezpośrednio podłączony.

W stosie sieciowym TCP / IP każda warstwa wykorzystuje warstwę poniżej do przesyłania swoich danych, hermetyzując je w protokole niskiego poziomu. Każda warstwa jest niezależna od siebie i być może nieświadoma szczegółów i implementacji innych poziomów (nie zawsze jest to prawdą: patrz funkcja między warstwami ).

Heisenbug
źródło
tak. ale implementacja polecenia ping wymagałaby kodu w L2 (warstwa łącza). czy ARP wchodzi w grę w warstwie 2.
@ liv2hak. Nie. Implementacja polecenia ping znajduje się na dolnej warstwie łącza.
@liv arp jest często określany jako warstwa 2.5 ICMP jest często określany jako warstwa 3.5 Warstwy dotyczą bardziej pól niż kodu. A jeśli chcesz powiedzieć, że implementacja ping wymaga kodu na warstwie 2, cóż, przy dowolnej implementacji czegokolwiek, z definicji nie możesz mieć warstwy bez warstw poniżej.
barlop
1

ARP zapewnia adres MAC, ale czasami, jeśli nie ma adresu DMAC, używany jest adres rozgłoszeniowy.

Ta ramka wykorzystująca rozgłaszanie DMAC jest nazywana ramką rozgłoszeniową ARP, dzięki czemu otrzymujemy adres DMAC.

Sagar Vardekar
źródło