From 31129a0186fc1d885bc653280105303f1fc42f88 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Fri, 18 Nov 2005 18:37:59 +0000 Subject: [PATCH] =?utf8?q?Correcciones=20m=C3=ADnimas.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/c/ip.c | 6 ++++-- src/c/udp.h | 28 ++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/c/ip.c b/src/c/ip.c index b9f5fb4..3f07cb2 100644 --- a/src/c/ip.c +++ b/src/c/ip.c @@ -3,16 +3,18 @@ /** protocolos soportados */ enum { ICMP = 0x01, UDP = 0x11 }; -extern byte ip_addr_local[IP_ADDR_SIZE]; +byte ip_addr_local[IP_ADDR_SIZE]; -extern byte ip_addr_remote[IP_ADDR_SIZE]; +byte ip_addr_remote[IP_ADDR_SIZE]; byte ip_packet_len; bool ip_proto_icmp; +/* para calcular checksum */ uint16 checksum; +/* agrega un word al checksum calculado */ static void sum(uint16 w) { checksum += w; diff --git a/src/c/udp.h b/src/c/udp.h index 5e2d727..9530a13 100644 --- a/src/c/udp.h +++ b/src/c/udp.h @@ -7,6 +7,7 @@ /** @file * Datagrama UDP. * + *
  *  0      7 8     15 16    23 24    31  
  * +--------+--------+--------+--------+ 
  * |     Source      |   Destination   | 
@@ -18,12 +19,35 @@
  * |                                     
  * |          data octets ...            
  * +---------------- ...                 
+ * 
* * Aceptamos sólo datagramas UDP que vayan a el puerto de nuestra aplicación y * cuyo tamaño sea menor a 255. El resto es descartado. * El Length es tanto de la cabecera como datos, por lo tanto el tamaño mínimo - * es 8. El checksum no se calcula ni se verifica, ya que sabemos que la capa - * inferior (ethernet) tiene verificación de errores de los datos. + * es 8. + * + * El checksum se calcula utilizando algunos datos de la capa inferior e incluye + * a los datos. Entonces es calculado sobre el siguiente paquete 'virtual': + * + *
+ *  0      7 8     15 16    23 24    31  
+ * +--------+--------+--------+--------+
+ * |         ip source address         |
+ * +--------+--------+--------+--------+
+ * |      ip destination address       |
+ * +--------+--------+--------+--------+
+ * |  zero  |protocol|   UDP length    |
+ * +--------+--------+--------+--------+
+ * |     Source      |   Destination   | 
+ * |      Port       |      Port       | 
+ * +--------+--------+--------+--------+ 
+ * |                 |                 | 
+ * |     Length      |    Checksum     | 
+ * +--------+--------+--------+--------+ 
+ * |                                     
+ * |          data octets ...            
+ * +---------------- ...                 
+ * 
*/ /** Puerto UDP nuestro */ -- 2.43.0