AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1169696
Accepted
Deepanjan Das
Deepanjan Das
Asked: 2025-01-02 06:15:03 +0800 CST2025-01-02 06:15:03 +0800 CST 2025-01-02 06:15:03 +0800 CST

Como um host realmente processa uma solicitação ARP transmitida a ele cujo endereço IP solicitado corresponde ao seu?

  • 772

Quando eu tenho pingum endereço IP de host na minha LAN, meu host transmite uma ARPsolicitação. Após receber uma ARPresposta do host de destino, ele inicia uma sessão de ICMP echomensagens com suas respostas.

Quando o host de destino está recebendo do ARP requestmeu host de origem, o host de destino está atualizando o ARPcache com as informações incorporadas na solicitação (já que a origem MAC addressestá presente no ARP request)?

Se sim, por que o host de destino às vezes envia outro ARP requestendereço IP para o meu host de origem e descarta todas ICMP echoas solicitações até receber um ARP replyretorno?

Observe que esse comportamento é ocasional e, às vezes, a ICMP echoresposta é feita antes de um ARP requestdo meu host de destino, mas esse tipo de resposta ARP requestsempre ocorre em algum lugar no meio de uma sessão de ping.

Não sei se isso se deve à atualização das tabelas ARP dos hosts de sessões de ping anteriores ou se o segundo ARP requesté apenas um protocolo e o host de destino já tem as informações do host de origem MAC addressdo primeiro ARP request.

Ou será que o host de destino nem precisa do host de origem MAC addressem primeiro lugar, já que ele é sempre encapsulado em cada ICMP echosolicitação e a resposta a cada uma dessas solicitações usa as informações recebidas sobre eles MAC addressese os alterna no quadro de resposta?

Edição 1: Após alguma pesquisa, descobri que o host de destino não preenche seu próprio ARP cachepassivo ARP requests, ou seja, de solicitações de outros hosts. Ele preenche seu ARP cachesomente das ARPrespostas que recebe de suas próprias solicitações.

Edição 2: Seguindo de Edit 1, o segundo ARP requestdo host de destino antes de qualquer ICMP echoresposta indica que a origem MAC addressnão está em seu ARP cacheou se tornou STALE, acionando assim outro ARP requestantes de responder à ICMP echosolicitação. (Às vezes, um STALEendereço é primeiro verificado por meio de uma sondagem e, se o mapeamento for inválido ou a sondagem expirar, a nova sondagem ARP requestocorre.

Assim, o segundo ARP requestocorrendo no meio da pingsessão, indica que a fonte MAC addresstinha se tornado STALEno meu host de destino ARP cachedevido a alguns ARP timeout value(configurado em 60 segundos em meus hosts), o que disparou um segundo ARP request. Além disso, essas segundas ARPsolicitações esclarecem que, embora o host de destino não precise que a fonte MAC addressseja preenchida em seu ARP cachee use as informações sobre ARP requesta fonte MAC addresspara responder a ela, ele realmente precisa saber a fonte MAC addresspara responder a uma TCMP echosolicitação.

Ainda assim, quaisquer respostas que elaborem ou corrijam quaisquer erros nas descobertas acima são muito apreciadas.

networking
  • 1 1 respostas
  • 48 Views

1 respostas

  • Voted
  1. Best Answer
    Ron Maupin
    2025-01-02T06:55:25+08:002025-01-02T06:55:25+08:00

    quando o host de destino está recebendo a solicitação ARP do meu host de origem, ele está atualizando seu cache ARP com as informações incorporadas na solicitação (já que o endereço MAC de origem está presente na solicitação ARP). Se sim, por que o host de destino às vezes envia outra solicitação ARP para o endereço IP do meu host de origem e descarta todas as solicitações de eco ICMP até receber uma resposta ARP de volta?

    O host de destino deve atualizar sua tabela ARP quando vir uma solicitação ARP se já tiver a entrada em sua tabela ARP. Se a entrada não estiver em sua tabela ARP, então ele pode não criar uma entrada em sua tabela ARP.

    Após alguma pesquisa, descobri que o host de destino não preenche seu cache ARP de solicitações ARP passivas, ou seja, de solicitações de outros hosts. Ele preenche seu cache ARP somente das respostas ARP que recebe de suas próprias solicitações.

    Se o host for o alvo da solicitação ARP, ele deve atualizar sua tabela ARP, mas isso nem sempre acontece na prática. Se o host vir uma solicitação ARP de transmissão que não seja para ele, ele deve atualizar sua tabela ARP somente se já tiver a fonte em sua tabela ARP.

    A implementação específica do sistema operacional determina como isso acontece, mas o RFC 892, um protocolo de resolução de endereços Ethernet, tem pseudocódigo para explicar o processo de recepção de pacotes.

    Packet Reception:
    -----------------
    
    When an address resolution packet is received, the receiving
    Ethernet module gives the packet to the Address Resolution module
    which goes through an algorithm similar to the following.
    Negative conditionals indicate an end of processing and a
    discarding of the packet.
    
    ?Do I have the hardware type in ar$hrd?
    Yes: (almost definitely)
      [optionally check the hardware length ar$hln]
      ?Do I speak the protocol in ar$pro?
      Yes:
        [optionally check the protocol length ar$pln]
        Merge_flag := false
        If the pair <protocol type, sender protocol address> is
            already in my translation table, update the sender
            hardware address field of the entry with the new
            information in the packet and set Merge_flag to true.
        ?Am I the target protocol address?
        Yes:
          If Merge_flag is false, add the triplet <protocol type,
              sender protocol address, sender hardware address> to
              the translation table.
          ?Is the opcode ares_op$REQUEST?  (NOW look at the opcode!!)
          Yes:
            Swap hardware and protocol fields, putting the local
                hardware and protocol addresses in the sender fields.
            Set the ar$op field to ares_op$REPLY
            Send the packet to the (new) target hardware address on
                the same hardware on which the request was received.
    
    Notice that the <protocol type, sender protocol address, sender
    hardware address> triplet is merged into the table before the
    opcode is looked at.  This is on the assumption that communcation
    is bidirectional; if A has some reason to talk to B, then B will
    probably have some reason to talk to A.  Notice also that if an
    entry already exists for the <protocol type, sender protocol
    address> pair, then the new hardware address supersedes the old
    one.  Related Issues gives some motivation for this.
    

    Seguindo a Edição 1, a segunda solicitação ARP do host de destino antes de qualquer resposta de eco ICMP indica que o endereço MAC de origem não está em seu cache ARP ou se tornou OBSOLETO, acionando assim outra solicitação ARP antes de responder à solicitação de eco ICMP.

    Há uma seção no final do RFC que discute isso. Não há nada no RFC que exija que uma entrada de tabela ARP atinja o tempo limite, mas é uma prática comum entre fornecedores de SO fazer isso. A discussão do RFC começa assim:

    Related issue:
    ---------------
    
    It may be desirable to have table aging and/or timeouts.  The
    implementation of these is outside the scope of this protocol.
    
    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve