miércoles, 26 de septiembre de 2012

Diferencia entre TCP y UDP

QUE DIFERENCIAS HAY ENTRE LOS PUERTOS (PROTOCOLOS) TCP Y UDP Y COMO SE ABREN O ASIGNAN. 

Aunque normalmente nos referimos a Puertos TCP y UDP, en realidad más que de puertos debemos hablar de protocolos, ya que no se trata de diferentes tipos de puertos, sino de diferentes protocolos utilizados para su gestión. 

TCP (Transport Control Protocol) y UDP (User Datagram Protocol) son dos protocolos de puertos de comunicaciones que resultan imprescindibles para éstas y que se comportan de forma diferente. 

Entre estos dos tipos de protocolos, o más bien entre su comportamiento en cuanto al tratamiento de transmisión de datos se refiere, hay una serie de diferencias que es conveniente conocer. Vamos a ver cuales son esas diferencias: 

Protocolo TCP: 

El protocolo TCP o Transport Control Protocol proporciona un transporte fiable de flujo de bits entre aplicaciones. Se utiliza para enviar de forma fiable grandes cantidades de información, liberando al programador de aplicaciones de tener que gestionar la fiabilidad de la conexión (retransmisiones, pérdidas de paquetes, orden en que llegan los paquetes, duplicados de paquetes...), encargándose el propio protocolo de su gestión. Para ello, cada paquete de datos dedica 20 bytes al envío de información. 

Esto hace que las transmisiones por TCP sean muy seguras... pero también lentas, ya que cada paquete hace una serie de comprobaciones sobre la integridad de los datos enviados, a lo que hay que añadir que al ser los paquetes de tamaño fijo, si aumentamos el tamaño dedicado al envío de información vamos a asegurarnos una mayor fiabilidad, pero también enviamos menos datos. 

Protocolo UDP: 

El protocolo UDP, o User Datagram Protocol en cambio proporciona un nivel no fiable de transporte de datagramas, ya que añade muy poca información sobre los mismos (8 bytes, frente a los 20 bytes que vimos en el protocolo TCP). La primera consecuencia de esto es que por cada paquete enviado se envía una mayor cantidad de datos, pero también al reducir la información y comprobaciones de estos se aumenta la velocidad a la que se transfieren. 

Este sistema lo utilizan, por ejemplo, NFS (Network File System) y RCP, que es un comando utilizado para transferir ficheros entre ordenadores, pero sobre todo es muy utilizado en la transferencia tanto de audio como de vídeo. 

El protocolo UDP no usa ningún retardo para establecer una conexión, no mantiene 
estado de conexión y no hace un seguimiento de estos parámetros. Esto hace que un servidor dedicado a una aplicación determinada pueda soportar más clientes conectados cuando la aplicación corre sobre UDP en lugar de sobre TCP. 

Rango de los puertos: 

El campo de puerto tiene una longitud de 16 bits, lo que permite un rango que va desde 0 a 65535, pero no todos estos puertos son de libre uso. Veamos algunas normas sobre ellos: 

El puerto 0 es un puerto reservado, pero es un puerto permitido si el emisor no permite respuestas del receptor. 

Los puertos 1 a 1023 reciben el nombre de Puertos bien conocidos, y en sistemas Unix, para enlazar con ellos, es necesario tener acceso como superusuario. 

Los puertos 1024 a 49151 son los llamados Puertos registrados, y son los de libre utilización. 

Los puertos del 491552 al 65535 son puertos efímeros, de tipo temporal, y se utilizan sobre todo por losclientes al conectar con el servidor. 

Importancia de la apertura de estos puertos: 

La importancia de la apertura de estos puertos viene dada porque muchos programas de muy diferente tipo los utilizan, y necesitan tenerlos abiertos y, en el caso de redes, correctamente asignados. En general, cualquier programa o servicio que necesite comunicarse necesita un puerto (o varios) por el que hacerlo. Los más habituales (y conocidos) son: 

- 20 (TCP), utilizado por FTP (File Transfer Protocol) para datos 
- 21 (TCP), utilizado por FTP (File Transfer Protocol) para control 
- 25 (TCP), utilizado por SMTP (Simple Mail Transfer Protocol) 
- 53 (TCP), utilizado por DNS (Domain Name System) 
- 53 (UDP), utilizado por DNS (Domain Name System) 
- 67 (UDP), utilizado por BOOTP BootStrap Protocol (Server) y por DHCP 
- 68 (UDP). utilizado por BOOTP BootStrap Protocol (Client) y por DHCP 
- 69 (UDP), utilizado por TFTP (Trivial File Transfer Protocol) 
- 80 (TCP), utilizado por HTTP (HyperText Transfer Protocol) 
- 88 (TCP), utilizado por Kerberos (agente de autenticación) 
- 110 (TCP), utilizado por POP3 (Post Office Protocol) 
- 137 (TCP), utilizado por NetBIOS (servicio de nombres) 
- 137 (UDP), utilizado por NetBIOS (servicio de nombres) 
- 138 (TCP), utilizado por NetBIOS (servicio de envío de datagramas) 
- 138 (UDP), utilizado por NetBIOS (servicio de envío de datagramas) 
- 139 (TCP), utilizado por NetBIOS (servicio de sesiones) 
- 139 (UDP), utilizado por NetBIOS (servicio de sesiones) 
- 143 (TCP), utilizado por IMAP4 (Internet Message Access Protocol) 
- 443 (TCP), utilizado por HTTPS/SSL (transferencia segura de páginas web) 
- 631 (TCP), utilizado por CUPS (sistema de impresión de Unix) 
- 993 (TCP), utilizado por IMAP4 sobre SSL 
- 995 (TCP), utilizado por POP3 sobre SSL 
- 1080 (TCP), utilizado por SOCKS Proxy 
- 1433 (TCP), utilizado por Microsoft-SQL-Server 
- 1434 (TCP), utilizado por Microsoft-SQL-Monitor 
- 1434 (UDP), utilizado por Microsoft-SQL-Monitor 
- 1701 (UDP), utilizado para Enrutamiento y Acceso Remoto para VPN con L2TP. 
- 1723 (TCP). utilizado para Enrutamiento y Acceso Remoto para VPN con PPTP. 
- 1761 (TCP), utilizado por Novell Zenworks Remote Control utility 
- 1863 (TCP), utilizado por MSN Messenger 

Esta es una pequeña lista de los principales puertos, aunque hay bastantes más. A todos ellos hay que añadir aquellos que utilizan otros programas, ya sean del tipo P2P, de acceso remoto a terminales, de juegos OnLine y un largo etcétera. 

Apertura de puertos: 

Un puerto se puede abrir a dos niveles, a nivel del sistema y a nivel salida de comunicación. 

A nivel del sistema se trata de autorizar en el Firewall el tráfico por un determinado puerto. 

A nivel salida de comunicación se trata básicamente de configurar un enrutador, o Router para que dirija el tráfico de un puerto determinado a un terminal especificado. 

No vamos a entrar aquí en detalle de como abrir un puerto en un router, ya que esto depende del modelo de router del que se trate. La información necesaria para abrirlos la pueden ver en el manual del router que tengan, y también en nuestra sección de Tutoriales tienen una amplia colección de documentos sobre como configurar diferentes routers (ver el tutorial Todo lo que necesites saber sobre configuración de routers), lo que sí vamos a ver es una serie de consideraciones de carácter general que se deben tener en cuenta a este respecto: 

- Antes de abrir un puerto debemos ser plenamente conscientes de los riesgos que esto supone. 

- En un router, un puerto solo se pude redirigir a un terminal (IP) concreto. En el caso de tratarse de un programa que tenga que estar instalado en más de un ordenador de la red, se debe configurar el/los puertos del programa de forma que sean diferentes en cada una de las instalaciones. 

- Debemos asegurarnos de que un puerto que vayamos a abrir queda operativo a ambos niveles. De nada nos sirve asignar un puerto en el router si luego nos lo cierra el Firewall. 

- En conexiones de red con IP controlada por DHCP uno de los problemas que se presentan a nivel router es la asignación de la IP privada que este sistema haga en un momento dado a un ordenador. Cuando trabajamos con puertos asignados en un router es conveniente configurar las IP de forma manual en los terminales. 

Para ello lo mejor es configurar en el router un rango de DHCP que cubra los posibles equipos no asignados de forma manual que puedan tener que conectarse a nuestra red. Es aconsejable que este rango sea lo más ajustado posible, y a ser posible que comience por un número no demasiado bajo. Luego asignamos a nuestros equipos direcciones IP por debajo del rango asignado a DHCP. 

Vamos a poner un ejemplo con tres ordenadores, ambos con puertos asignados. 

Respetando las IP de rango 192.168.1.x, la asignación a la Puerta de enlace sería 192.168.1.1 

Pues bien, yo asignaría a DHCP el rango de 192.168.1.33 a 192.168.1.37 (dejo solo 5 direcciones disponibles, aunque se pueden dejar menos o incluso inhabilitar DHCP, que a efectos de seguridad es lo mejor) y asignaría la IP 192.168.1.10 al ordenador principal, 192.168.1.11 al segundo y 192.168.1.12 al tercero. 

Esta asignación se hace en cada equipo, dentro de las Propiedades TCP/IP de la conexión. Con ello nos aseguramos que un ordenador va a conectar siempre con la misma IP, ya que evidentemente si hemos asignado un puerto a una IP determinada solo va a funcionar en el ordenador que conecte con dicha IP, y esto, de no cumplirse, nos puede causar complicaciones y efectos no deseados. 

  




Capa de red del modelo OSI



INTRODUCCIÓN

Modelo OSI

El modelo de interconexión de sistemas abiertos (ISO/IEC 7498-1), también llamado OSI (en inglés open system interconnection) es el modelo de red descriptivo creado por la Organización Internacional para la Estandarización (ISO) en el año 1984. Es decir, es un marco de referencia para la definición de arquitecturas de interconexión de sistemas de comunicaciones.
El núcleo de este estándar es el modelo de referencia OSI, una normativa formada por siete capas que define las diferentes fases por las que deben pasar los datos para viajar de un dispositivo a otro sobre una red de comunicaciones.

Las siete capas del modelo OSI son:

Capa física (Señal y transmisión binaria): Es la que se encarga de las conexiones globales de la computadora hacia la red, tanto en lo que se refiere al medio físico como a la forma en la que se transmite la información.
Capa de enlace de datos(Direccionamiento físico, MAC y LLC): Esta capa se ocupa del direccionamiento físico, de la topología de la red, del acceso al medio, de la detección de errores, de la distribución ordenada de tramas y del control del flujo.
Capa de red (Determinación de ruta e IP): Capa de red que analizaremos mas a fondo.

Capa de trasporte (Conexión de extremo a extremo y fiabilidad de los datos): Capa encargada de efectuar el transporte de los datos (que se encuentran dentro del paquete) de la máquina origen a la de destino, independizándolo del tipo de red física que se esté utilizando. La PDU de la capa 4 se llama Segmento o Datagrama, dependiendo de si corresponde a TCP o UDP. Sus protocolos son TCP y UDP; el primero orientado a conexión y el otro sin conexión. Trabajan, por lo tanto, con puertos lógicos y junto con la capa red dan forma a los conocidos como Sockets IP:Puerto (191.16.200.54:80). 
Capa de sesión (Comunicación entre los dispositivos de la red): Esta capa es la que se encarga de mantener y controlar el enlace establecido entre dos computadores que están transmitiendo datos de cualquier índole. Por lo tanto, el servicio provisto por esta capa es la capacidad de asegurar que, dada una sesión establecida entre dos máquinas, la misma se pueda efectuar para las operaciones definidas de principio a fin, reanudándolas en caso de interrupción. En muchos casos, los servicios de la capa de sesión son parcial o totalmente prescindibles. 
Capa de presentación (Representación de los datos): El objetivo es encargarse de la representación de la información, de manera que aunque distintos equipos puedan tener diferentes representaciones internas de caracteres los datos lleguen de manera reconocible.
Esta capa es la primera en trabajar más el contenido de la comunicación que el cómo se establece la misma. En ella se tratan aspectos tales como la semántica y la sintaxis de los datos transmitidos, ya que distintas computadoras pueden tener diferentes formas de manejarlas. Esta capa también permite cifrar los datos y comprimirlos.
 Capa de aplicación (Servicios de red a aplicaciones): Ofrece a las aplicaciones la posibilidad de acceder a los servicios de las demás capas y define los protocolos que utilizan las aplicaciones para intercambiar datos, como correo electrónico (Post Office Protocol y SMTP), gestores de bases de datos y servidor de ficheros (FTP), por UDP pueden viajar (DNS y Routing Information Protocol). Hay tantos protocolos como aplicaciones distintas y puesto que continuamente se desarrollan nuevas aplicaciones el número de protocolos crece sin parar.



CAPA DE RED DEL MODELO OSI (Determinación de ruta e IP)
Se encarga de identificar el enrutamiento existente entre una o más redes. Las unidades de información se denominan paquetes, y se pueden clasificar en protocolos enrutables y protocolos de enrutamiento.
·                     Enrutables: viajan con los paquetes (IP, IPX, APPLETALK)
·                     Enrutamiento: permiten seleccionar las rutas (RIP,IGRP,EIGRP,OSPF,BGP)
El objetivo de la capa de red es hacer que los datos lleguen desde el origen al destino, aún cuando ambos no estén conectados directamente. Los dispositivos que facilitan tal tarea se denominan encaminadores, aunque es más frecuente encontrarlo con el nombre en inglés routers. Los routers trabajan en esta capa, aunque pueden actuar como switch de nivel 2 en determinados casos, dependiendo de la función que se le asigne. Los firewalls actúan sobre esta capa principalmente, para descartar direcciones de máquinas.
En este nivel se realiza el direccionamiento lógico y la determinación de la ruta de los datos hasta su receptor final.
Para la consecución de su tarea, puede asignar direcciones de red únicas, interconectar subredes distintas, encaminar paquetes, utilizar un control de congestión y control de errores. Ofrece servicios al nivel superior (nivel de transporte) y se apoya en el nivel de enlace, es decir, utiliza sus funciones.
La Capa de red o Capa 3 de OSI provee servicios para intercambiar secciones de datos individuales a través de la red entre dispositivos finales identificados. Para realizar este transporte de extremo a extremo la Capa 3 utiliza cuatro procesos básicos:
• direccionamiento,
• encapsulamiento,
• enrutamiento , y
• desencapsulamiento.

Direccionamiento
Primero, la Capa de red debe proveer un mecanismo para direccionar estos dispositivos finales. Si las secciones individuales de datos deben dirigirse a un dispositivo final, este dispositivo debe tener una dirección única. En una red IPv4, cuando se agrega esta dirección a un dispositivo, al dispositivo se lo denomina host.

Encapsulación
Segundo, la capa de Red debe proveer encapsulación. Los dispositivos no deben ser identificados sólo con una dirección; las secciones individuales, las PDU de la capa de Red, deben, además, contener estas direcciones. Durante el proceso de encapsulación, la Capa 3 recibe la PDU de la Capa 4 y agrega un encabezado o etiqueta de Capa 3 para crear la PDU de la Capa 3. Cuando nos referimos a la capa de Red, denominamos paquete a esta PDU. Cuando se crea un paquete, el encabezado debe contener, entre otra información, la dirección del host hacia el cual se lo está enviando. A esta dirección se la conoce como dirección de destino. El encabezado de la Capa 3 también contiene la dirección del host de origen. A esta dirección se la llama dirección de origen.
Después de que la Capa de red completa el proceso de encapsulación, el paquete es enviado a la capa de enlace de datos que ha de prepararse para el transporte a través de los medios.

Enrutamiento
Luego, la capa de red debe proveer los servicios para dirigir estos paquetes a su host destino. Los host de origen y destino no siempre están conectados a la misma red. En realidad, el paquete podría recorrer muchas redes diferentes. A lo largo de la ruta, cada paquete debe ser guiado a través de la red para que llegue a su destino final. Los dispositivos intermediarios que conectan las redes son los routers. La función del router es seleccionar las rutas y dirigir paquetes hacia su destino. A este proceso se lo conoce como enrutamiento.
Durante el enrutamiento a través de una internetwork, el paquete puede recorrer muchos dispositivos intermediarios. A cada ruta que toma un paquete para llegar al próximo dispositivo se la llama salto. A medida que el paquete es enviado, su contenido (la PDU de la Capa de transporte) permanece intacto hasta que llega al host destino.

Desencapsulamiento
Finalmente, el paquete llega al host destino y es procesado en la Capa 3. El host examina la dirección de destino para verificar que el paquete fue direccionado a ese dispositivo. Si la dirección es correcta, el paquete es desencapsulado por la capa de Red y la PDU de la Capa 4 contenida en el paquete pasa hasta el servicio adecuado en la capa de Transporte.

A diferencia de la capa de Transporte (Capa 4 de OSI), que administra el transporte de datos entre los procesos que se ejecutan en cada host final, los protocolos especifican la estructura y el procesamiento del paquete utilizados para llevar los datos desde un host hasta otro host. Operar ignorando los datos de aplicación llevados en cada paquete permite a la capa de Red llevar paquetes para múltiples tipos de comunicaciones entre hosts múltiples.

Protocolos de capa de Red
Los protocolos implementados en la capa de Red que llevan datos del usuario son:
• versión 4 del Protocolo de Internet (IPv4),
• versión 6 del Protocolo de Internet (IPv6),
• intetercambio Novell de paquetes de internetwork (IPX),
• AppleTalk, y
• servicio de red sin conexión (CLNS/DECNet).
El Protocolo de Internet (IPv4 y IPv6) es el protocolo de transporte de datos de la capa 3 más ampliamene utilizado.