[Python-es] Duda sobre ipv4 y socket.inet_aton(addr)
Ricardo Cárdenes
ricardo.cardenes en gmail.com
Jue Mayo 17 12:59:56 CEST 2012
2012/5/17 Josu R. <jrvilda en gmail.com>:
> Hola a todos,
>
> Estaba realizando unas pruebas me he encontrado esta curiosidad.
> Creéis que es una ip v4 valida "1.3.23452"
Para inet_aton, lo es :P. De la página de manual:
a.b.c.d se interpreta como cuatro octetos
a.b.c se interpreta como dos octetos y un valor de 16 bits
a.b se interpreta como un octeto y un valor de 24 bits
a se interpreta como un valor de 32 bits
Así que tu 23452 (0x5b9c) se interpreta como "91.156"
Además, históricamente no hubo una definición precisa (en RFC) de cómo
se debía escribir una dirección IP. La notación separada por puntos no
se menciona siquiera hasta el RFC 780, que no tiene nada que ver con
IP en sí, sino con un protocolo de capa superior y no se dio una
especificación formal hasta que se empezó a trabajar en IPv6.
inet_aton de 4.2BSD se convirtió en el estándar de facto :)
> Lo pregunto y la curiosidad es la siguiente
>
> import socket
>
> addr ="1.3.23452"
> try:
> socket.inet_aton(addr)
> except socket.error:
> print "error"
>
> '\x01\x03[\x9c'
>
>
> --
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
Más información sobre la lista de distribución Python-es