Ir al contenido principal

Los protocolos TCP/IP [Parte 2]

Hola lectores, sin mas que decir continuamos con el tema.

Una vez definido el direccionamiento de redes y ordenadores en Internet,
mencionaremos la existencia de los servicios de DNS (Domain Name Server).
Debido a que es más fácil recordar un nombre (Centro de cálculo de la Universidad
Autónoma de Barcelona, cc.uab.es) que una dirección numérica (158.109.0.4), se
crearon los servidores de nombres (DNS), que son las máquinas encargadas de
transformar un nombre en su dirección correspondiente.

1.2 El protocolo IP versión 4 
El protocolo IP (Internet Protocol) es la pieza fundamental en la que se sustenta el sistema TCP/IP y por tanto todo el funcionamiento de Internet. Su especificación está recogida en [RFC791]. 
La unidad de datos del protocolo IP es el datagrama (ver figura 1-4), cuyo tamaño máximo es de 65535 bytes (64K).

 El protocolo IP facilita un sistema sin conexión (connectionless) y no fiable (unreliable) de entrega de datagramas entre dos ordenadores cualesquiera conectados a Internet.

IP da un servicio de entrega basado en el mejor intento (best effort). Esto implica que cuando hay algún funcionamiento anómalo de Internet, como podría ser un router colapsado, se contempla un sistema muy simple de tratamiento de errores. Este mecanismo de control de errores viene regulado por el protocolo ICMP (Internet Control Message Protocol).

En nuestro caso, el router colapsado descartaría el datagrama y enviaría un mensaje de error ICMP al ordenador de origen sin encargarse de la retransmisión del datagrama, lo que no implica fiabilidad.

Además, no mantiene ningún tipo de información referente al estado de las conexiones. Cada datagrama es encaminado de forma independiente, lo que le convierte en un protocolo sin conexión.

Debido a estas particulares características, puede pasar que se pierdan datagramas y/o que estos no lleguen en orden. De esta manera, cualquier fiabilidad que se necesite,deberá ser realizada por las capas superiores (TCP...).

La estructura de un datagrama IP está dividida en bloques de 32 bits (4 bytes). El datagrama IP se transmite enviando primero el bit 0, luego el bit 1, 2, 3... y así sucesivamente hasta finalizar el datagrama.

Este orden se denomina network byte order. Es muy importante conocer este orden de transmisión de la información, puesto que los diferentes ordenadores tienen diferentes sistemas de almacenamiento de bits en memoria.

El formato little endian, consiste en almacenar los bits en orden inverso al network byte order (usando por ejemplo en los procesadores Intel), mientras que la otra posibilidad se denomina big endian (usado por ejemplo en los procesadores Motorola).
 La versión (4 bits), sirve para identificar a que versión específica (RFC) hace referencia el formato del datagrama. Esta información sólo es utilizada por los routers y capa IP de origen y final del datagrama. Esto permite la coexistencia de diferentes versiones del protocolo IP de una forma transparente al usuario. La versión actual es la 4 (conocida también cómo IPv4).

El tamaño de la cabecera (Header Length), son 4 bits (2^4 = 16 posiciones, 0...15) que indican el número de palabras de 32 bits que ocupa la cabecera. Estos 4 bits de tamaño máximo nos limitan a un tamaño de cabecera máximo de 60 bytes (15 * 32 bits = 60 bytes). No obstante, el valor usual de este campo es 5 (5 * 32 bits = 20 bytes).

El campo del tipo de servicio (Type Of Service), se compone de 8 bits. Los primeros 3 bits tienen una función obsoleta y no se contemplan actualmente. Los 4 bits siguientes definen el tipo de servicio (ver figura 2-12) y el último bit no se utiliza actualmente y debe tener valor 0. Solo 1 de los 4 bits del tipo de servicio puede estar activo a la vez. El tipo de servicio determina la política a seguir en el envío del datagrama por Internet. Las opciones posibles son:

  1. minimizar el retraso (minimize delay) 
  2. maximizar el rendimiento (maximize throughput)
  3. maximizar la fiabilidad del transporte (maximize reliability)
  4. minimizar el coste económico del transporte (minimize monetary cost).  

La longitud del datagrama (Total Length), es un número de 16 bits (2^16 = 65536,0...65535) que indica la longitud total del datagrama. Este valor es muy importante, ya que nos permite saber que tamaño de memoria debemos reservar para la recepción del datagrama. Además, nos indica el número de bytes a leer, lo que nos permite un simple control de error. De esta forma, si el valor es incorrecto, el número de bytes leídos será como máximo de 65535, acotando el error. Además nos limita el número de bytes a enviar en un datagrama (Maximum Transfer Unit, MTU) a 65535 – 20 (tamaño típico de la cabecera) = 65515 bytes.

Si el tamaño del datagrama, es mayor que el tamaño máximo del paquete de red (Ej. Datagrama de 32000 bytes enviado sobre una Ethernet, que tiene un tamaño máximo de paquete de 1500 bytes), éste se fragmenta en N trozos.

El número de identificación del datagrama (Identificartion Field), es un número de 16 bits que en caso de fragmentación de un datagrama nos indica su posición en el datagrama original. Esto nos permite recomponer el datagrama original en la máquina de destino. Este valor nos indica que un datagrama puede ser fragmentado en un máximo de 65535 fragmentos. 

Las banderas (Flags) son 3 bits. El primero permiten señalar si el datagrama recibido es un fragmento de un datagrama mayor, bit M (More) activado. El segundo especifica si el datagrama no debe fragmentarse, bit DF (Don’t fragment) activado y el tercero no se utiliza actualmente, asignándole el valor 0 [San99].

El número de byte en el datagrama (Fragmentation Offset), nos indica la posición en bytes que ocupan los datos en el datagrama original. Sólo tiene sentido si el datagrama forma parte de uno mayor que ha sido fragmentado. Este campo tiene un máximo de 13bits (2^13 = 8192, como nos indica el desplazamiento en bytes 8192 * 8 bits = 65536).
De esta forma, siempre podemos reconstruir el datagrama original con los fragmentos.

El tiempo de vida (Time To Live), es un campo de 8 bits que indica el tiempo máximo que el datagrama será válido y podrá ser transmitido por la red. Esto permite un mecanismo de control para evitar datagramas que circulen eternamente por la red (por ejemplo en el caso de bucles).

Este campo se inicializa en el ordenador de origen a un valor (máximo 2^8 = 256) y se va decrementando en una unidad cada vez que atraviesa un router. De esta forma, si se produce un bucle y/o no alcanza su destino en un máximo de 255 “saltos”, es descartado. En este caso se envía un datagrama ICMP de error al ordenador de origen para avisar de su pérdida.

El tipo de protocolo (Protocol), es un valor que indica a que protocolo pertenece el datagrama (TCP, UDP, ICMP...). Es necesario debido a que todos los servicios de Internet utilizan IP como transporte, lo cual hace necesario un mecanismo de discriminación entre los diferentes protocolos.

El checksum de la cabecera del datagrama (Header Checksum), es una suma de comprobación que afecta sólo a la cabecera del datagrama IP. El resto de protocolos TCP, UDP, IGMP... tienen su propia cabecera y checksum. Su función es simplemente la de un mecanismo de control de errores. De esta forma, si se encuentra un error en el checksum de un datagrama IP, este es simplemente descartado y no se genera ningún mensaje de error. Esto implica que es deber de las capas superiores el control del flujo de los datagramas para asegurarse que estos lleguen correctamente al destino, ya sea utilizando un protocolo fiable (TCP) o implementando internamente algún tipo de control.

Tanto la dirección IP de origen como la de destino (IP address), están formadas por dos números de 32 bits. Estas direcciones se corresponden a una distribución según la figura 1-3.

Creditos: Gabriel Verdejo Alvarez
Click aqui para ir a la parte 1.

Comentarios

Entradas más populares de este blog

Cómo instalar wifislax en un USB booteable para utilizar en tu equipo

Hola lectores. Quiero explicar como  instalar Wifislax en un USB  para iniciar el Pc o laptop en  Linux  sin renunciar a la versión de Windows que esté instalada. ¿Que es Wifislax? Wifislax  es una de las distribuciones de  Linux  más importantes para el estudio y análisis de la seguridad en redes. Con  Wifislax  podremos analizar y comprobar la seguridad de nuestra red wifi y ponérselo difícil a aquellos que se empeñan en vulnerar nuestra seguridad y en conectarse a nuestra red wifi. Wifislax incluye una amplia gama de herramientas que nos servirán para monitorizar nuestra red y comprobar su seguridad. Podemos instalar  Wifislax  en un equipo, crear un LiveCD o bien  crear un LiveUSB de wifislax  para utilizar en nuestro equipo. Cómo instalar Wifislax en un USB booteable Necesitaremos un Pendrive de una capacidad de 4Gb como mínimo y haberlo formateado en FAT32. Descomprimimos el archivo ISO co...

Crackeando redes WPA/WPA2--- Wifislax!!..Linset

Bueno, antes de nada, presentar la herramienta. Para los que no la sepan, es una herramienta de ingeniería social, basada en el MITM para comprobar la seguridad (o ignorancia) de los clientes de nuestra red. Hay varias versiones pero casi todas cumplen las mismas funciones, solo se van agregando algunas mejoras. La herramienta tiene capasidad para: 1. Escanea la red. 2. Selecciona la red. 3. Busca handshake (se puede usar sin handshake) 4. Se elige una de las varias interfaces web adaptadas por mi (gracias a la colaboración de los users) 5. Se monta un FakeAP imitando al original 6. Se crea un servidor DHCP sobre el FakeAP 7. Se crea un servidor DNS para redirigir todas las peticiones al Host 8. Se lanza el servidor web con la interface seleccionada 9. Se lanza el mecanismo para comprobar la validez de las contraseñas que se van a introducir 10. Se desautentifica a todos los usarios de la red, esperando que se conecten al FakeAP e introduzcan la contraseña. 11. Se detien...

Comandos para configurar VPS ubuntu 14/16 como SSH y proxy squid(http injector), juegos online ,llamadas de voz,etc...

Hola lectores. Tal como dice el titulo, aqui les dejare una serie de comandos para configurar tu VPS como SSH, proxy squid, ademas de como abrir los puertos UDP necesarios para activar las llamadas de Whatsapp(Voz y video), como tambien los juegos online. Este pequeño tutorial parte desde despues de haber cromprado tu VPS. Abrir la terminal desde alguna aplicacion(Juice SSH) Ejecutar el comando siguiente;  wget https://raw.githubusercontent.com/JosephLinuxOf/vps/master/squid.sh && bash squid.sh Seguir los pasos del autoinstalador( No requiere mucho conocimiento ) Al finalizar te pedira que crees un usuario( Este ya puede ser utilizado para conectar con http injector ) Reiniciar el VPS desde la paguina de tu proveedor. Ahora activaremos los puertos para las llamadas y juegos en linea. En la terminal nuevamente ajecutaremos los comandos siguientes;  wget https://raw.githubusercontent.com/mauricionet/BadVPN-Setup-0.9/master/badvpnsetup.sh chmod +x ba...

Dendroid --- RAT android Malware, configurar y descarga.

Hola lectores antes de comenzar debo aclarar algunos puntos; Jonax Lab's  no se responsabiliza por cualquier mal uso de esta informacion. Este articulo es publicado con fines informaticos. Bueno eso es todo ahora si a comezar. Requisitos antes de comenzar; Disponer de un servidor Web con PHP y MySQL PhpMyAdmin OpenJDK JRE X64 JavaJDK Vamos a crear el panel de administracion Este subdominio redirige a una carpeta montada en public_html/dendroid , lugar donde vamos a subir nuestros archivos. La primera parte del tutorial la dedicaré a mostraros como crear el panel de administración de nuestro DENDROID, desde él podremos controlar todos los dispositivos que tengamos infectados. Si descomprimimos nuestro archivo .rar con el código fuente de DENDROID, nos encontraremos con 3 carpetas y un archivo, podemos echar un vistazo antes de empezar a montar el panel al archivo readme.md, en él nos explica como realizar todo el proceso, eso sí, en inglés. En la carpe...