<html>
<body>
<font size=3>Hola, Roque,<br><br>
Millones de gracias por tus comentarios. Mis respuestas van entre lineas
(seguí leyendo)....<br><br>
<br>
<blockquote type=cite class=cite cite="">Muy bueno el documento, como
comentario general creo que a estas alturas habria que aclarar cuando se
refiere a IP, es en general, es sobre IPv4 o IPv6 en
particular.</font></blockquote><br>
Si, es cierto. Lo arreglaré en la próxima revisión del
documento.<br><br>
<br><br>
<blockquote type=cite class=cite cite=""><font size=3>Otro comentario:
<br>
En la sección 3.1, Header dice: in practice different versions of IP are
identified by a different “Protocol Type”<br>
number in the link-layer protocol header. For example, IPv4 datagrams are
encapsulated<br>
in Ethernet frames using a “Protocol Type” field of 0x0800, while IPv6
datagrams are<br>
encapsulated in Ethernet frames using a “Protocol Type” field of 0x86DD
[IANA, 2006a].<br>
Therefore if an IPv4 module receives a packet, the <b>Version </b>field
must be checked to be 4.<br>
If this check fails the packet should be silently dropped<br><br>
Eso no es correcto para medios que no son Ethernet. En particular hay
otros medios como PPP IPv6 utiliza Ox0057 como Protocol field, y hay
otros ejemplos como AAL5, etc. . Creo que debería quedar claro que el
caso ethernet es un ejemplo.</font></blockquote><br>
La idea acá es que el campo "versión" nunca se utiliza para
demultiplexar los paquetes IP.<br><br>
En teoría, todas las versiones de IP se podrían identificar con el mismo
valor de "Protocol Type" en la link layer y entonces todos los
paquetes correspondientes a las distintas versiones del protocolo IP
serían procesados por un <b>mismo</b> modulo de código
("general" para el protocolo IP... sin importar su versión).
Luego, en base al campo "Version" del header IP, el paquete en
cuestión se demultiplexaría al modulo de la versión particular del
protocolo IP (por ej., el modulo de IPv4 o el módulo de IPv6).<br><br>
Sin embargo, debido a que directamente las distintas versiones de IP
utilizan distintos valores para el campo "Protocol Type" de la
link layer, es como que las distintas versiones del protocolo IP se
consideran como "distintos protocolos". Y no hace falta
utilizar el campo "Version" del header IP para distinguir de
que version de IP se trata, ya que el valor del campo "Protocol
Type" de la link layer indica implicitamente dicha
información.<br><br>
Entonces no hay algo asi como un modulo de codigo "general"
para lo que es el protocolo IP, sino que hay un modulo IPv4 al que se le
demultiplexan unicamente los paquetes IPv4, y un modulo IPv6 al que se le
demultiplexan unicamente los paquetes IPv6.<br><br>
Si el modulo IPv4 encuentra que el campo Version de un paquete que está
procesando contiene por ejemplo el valor "6", entonces quiere
decir que por ejemplo el campo "Protocol Type" del paquete
Ethernet indicaba IPv4 (mediante el valor 0x0800), mientras que el campo
Version del IP header indica IPv6. Esto es un error, y por ello el
paquete debería ser descartado.<br><br>
<font size=3>Lo que vos decís es que el texto parece indicar que en la
link layer *siempre* se utiliza el valor 0x0800 para indicar
IPv4?<br><br>
</font>Muchas gracias por tu feedback!<br><br>
<font size=3>Saludos codiales,<br>
<x-sigsep><p></x-sigsep>
--<br>
Fernando Gont<br>
e-mail: fernando@gont.com.ar || fgont@acm.org<br>
PGP Fingerprint: 7809 84F5 322E 45C7 F1C9 3945 96EE A9EF D076
FFF1<br><br>
<br><br>
</font></body>
</html>