como o comando 'ping' realmente funciona?

24

Como o comando ping realmente funciona? Especificamente de onde o ARP (Protocolo de resolução de endereços) entra em cena?

Fiz essa pergunta em uma entrevista e não consegui criar um cenário em que o ARP pudesse ser usado.

liv2hak
fonte
Olhe para o ICMP.
3
O ARP é usado para obter o endereço MAC de um endereço IP específico. Quando você precisa enviar um pacote pela Ethernet, precisa do endereço MAC do destino.

Respostas:

16

Se você realmente quer entender, existe um excelente white paper (muito bem escrito) aqui:

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

Aqui está o resumo ->

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

Como não existe uma camada TCP no meio, ele Ping (program)precisa monitorar todos os pacotes ICMP recebidos e filtrar apenas os pacotes do destino.

Espero que ajude.

PlanetUnknown
fonte
9

Supondo que o ping envolva um pacote enviado por uma rede Ethernet ou WiFi, o ARP é usado para encontrar o endereço de hardware Ethernet do dispositivo que recebe o pacote de saída. Normalmente, este será o roteador da LAN na qual a máquina que originou o ping está ativada.

O processo típico é:

  1. Você insere um comando para executar ping em um destino.

  2. O DNS é usado para determinar o endereço IP (se necessário).

  3. A tabela de roteamento é consultada para encontrar o próximo salto para esse destino.

  4. O ARP é usado para encontrar o endereço de hardware do próximo salto.

  5. O pacote IP é enviado para o próximo salto, encapsulado em um quadro Ethernet ou WiFi.

David Schwartz
fonte
3
A única resposta aqui que realmente responde à pergunta!
jmiserez
2

Ping é na verdade dois pacotes ICMP (Internet Control Message Protocol) diferentes.

Para executar ping em um host, você primeiro envia um pacote de solicitação de eco ICMP, o host responde com uma resposta de eco ICMP.

Para mais informações, consulte: https://en.wikipedia.org/wiki/Ping_(networking_utility)

Matthias Braun
fonte
1

Ping e ARP são coisas diferentes localizadas em diferentes camadas na pilha de protocolos de rede.

O ping está na camada de rede (ou camada da Internet - veja o protocolo ICMP , como apontado por @ServerMonkey).

O protocolo Arp está no nível do link (um nível inferior). O protocolo Arp foi desenvolvido para permitir a conexão física entre o hardware da rede, diretamente conectado.

Na pilha de rede TCP / IP, cada camada usa a camada abaixo para encaminhar seus dados, encapsulando-os dentro do protocolo de baixo nível. Cada camada é independente da outra e possivelmente desconhece os detalhes e implementações específicas de outros níveis (isso nem sempre é verdade: consulte a função de camada cruzada ).

Heisenbug
fonte
yes.mas a implementação do ping exigiria algum código na L2 (camada de link.). O ARP entra em cena na camada 2.
@ liv2hak. não. A implementação de ping estava na camada de link abaixo.
@liv arp costuma ser a camada 2.5 O ICMP costuma ser a camada 3.5 As camadas são mais sobre campos do que código. E se você quiser dizer que a implementação de ping requer código na camada 2, bem, com qualquer implementação de qualquer coisa, por definição, você não pode ter uma camada sem camadas abaixo dela.
barlop
1

O ARP fornece um endereço MAC, mas, às vezes, se não houver endereço DMAC, o endereço de broadcast é usado.

Esse quadro usando DMAC de transmissão é chamado de quadro de transmissão ARP, com isso obtemos o endereço DMAC.

Sagar Vardekar
fonte