Consulta sobre ARP

Consulta sobre ARP

de German Moreira Bellini -
Número de respuestas: 5

Buenas, tengo una duda con un detalle de este protocolo, cuando un host envia un paquete ARP de difusion consultando por la MAC de una determinada IP, el host que recibe este paquete ya aprovecha y almacena en su tabla ARP la entrada (IP-origen, MAC_origen) de este  paquete?

Gracias.

En respuesta a German Moreira Bellini

Re: Consulta sobre ARP

de Matias Richart -
Hola.

No, no funciona así.
En la RFC que describe el protocolo podes encontrar el pseudocódigo del proceso que se sigue cuando se recibe un paquete ARP: https://www.rfc-editor.org/rfc/rfc826

Saludos
En respuesta a Matias Richart

Re: Consulta sobre ARP

de Alejandro Gabriel Clara Mariño -
Primero que nada, gracias por la respuesta rápida.

Puede que esté entendiendo algo mal, pero estuve mirando el RFC y no me termino de convencer de que el receptor de un ARP request no guarde también la info.

Parto de la base que opcode indica si el mensaje ARP es de tipo request o response...

Mirando el pseudocódigo, no estaría el receptor de una request guardando el mapeo en la tabla ARP en las líneas marcadas en negrita (dejo unos comentarios al lado)?:

?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. // Se hace esto sin importar si es request o response
    ?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. // De nuevo, esto se hace sin importar el opcode (este es el caso de si no existía la entrada antes)
      ?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.
De hecho enseguida abajo del pseudocógido el RFC dice:

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.

Gracias desde ya!

Saludos.

Ale.
En respuesta a Alejandro Gabriel Clara Mariño

Re: Consulta sobre ARP

de Matias Richart -
Hola Alejandro.

Estás en lo correcto.
Disculpame que había entendido mal tu pregunta. Como la consulta ARP es broadcast, pensé que preguntabas si todos los que reciben la consulta almacenan la asociación MAC origen, IP origen en su tabla.

Entonces, la respuesta correcta entiendo es:
cuando un host recibe un mensaje ARP, almacena la info de origen solo si él es el "target" o si ya tenía una asociación previa con esa dirección (la del origen del mensaje) en su tabla (seguramente porque fue el "target" de algún mensaje previo).

¿Coincidimos ahora?

Saludos
En respuesta a Matias Richart

Re: Consulta sobre ARP

de Alejandro Gabriel Clara Mariño -
Matías.

No hay problema, releyendo ahora la pregunta original veo que en realidad estaba ambigua. Yo había interpretado que con la frase "el host que recibe este paquete", se refería al target. Pero como vos decís, hay varios hosts que lo reciben dado que es un broadcast.

Quedó clarísimo ahora, gracias.

Saludos!