# Redes informáticas/Texto completo

* Si imprimes esta página, o eliges la opción de Vista preliminar de impresión de tu navegador, verás que desaparecen este cuadro y los elementos de navegación de arriba y de la izquierda, pues no son útiles en una versión impresa.
* Pulsando antes en Refrescar esta página te asegurarás de obtener los últimos cambios del libro antes de imprimirlo.
* Para más información, puedes ver Wikilibros:Versión para imprimir.

## Índice

Capítulo 0: Introducción
* Versión para imprimir
PARTE I - Conceptos
Capítulo 1: Generalidades
Capítulo 2: Modelo OSI de ISO
* Historia
* Nivel físico
* Nivel de enlace de datos
* Nivel de red
* Nivel de transporte
* Nivel de sesión
* Nivel de presentación
* Nivel de aplicación
Capítulo 3: Medios físicos
* Topologías de red
* Tipos de cableado
** Cable coaxial
** Cable de par trenzado
** Fibra óptica
* Placas adaptadoras
* Redes inalámbricas
* Redes de energía
Capítulo 4: Protocolos de enlace de datos
Capítulo 5: Protocolos de transporte
Capítulo 5: Protocolo IP en el nivel de red
Capítulo 6: Protocolos TCP y UDP en el nivel de transporte
Capítulo 7: Protocolos TCP/IP en el nivel de sesión
Capítulo 8: Protocolos de nivel de presentación
Capítulo 9: Protocolos de nivel de aplicación
PARTE II - Aplicación
Capítulo 10: Clientes de red
* Clientes Windows 9x/Me
* Clientes Windows NT/2000/XP
* Clientes Linux
Capítulo 11: Servidor de archivos
Capítulo 12: Servidor web
* IIS sobre Windows
* Apache sobre Windows
* Apache sobre Linux
Parte III-Construcción de una red
Capítulo 13:Construcción de una red
INDICE GENERAL Especial:Prefixindex/Redes informáticas/Texto completo

## Introducción

Este libro pretende ser una ayuda a la enseñanza de redes informáticas a nivel secundario/polimodal, por lo que muchos temas no son tratados con la profundidad que requiere un estudiante universitario.
Se toma como base teórica para el estudio de las redes, el modelo OSI de ISO.
Esto permite un acercamiento gradual a los conceptos, sin que unos interfieran con otros. De este modo, cuando se analizan los medios físicos, se lo hace sin considerar los protocolos ni los sistemas operativos, con lo que el alumno generaliza sus conocimientos. Al analizar protoclos de nivel superior, los niveles inferiores resultan transparentes, lo que pone en evidencia que ni el medio físico, ni la topología tienen influencia en ellos.
El libro se centra en la instalación de TCP/IP sobre Ethernet. Esto tiene como fundamento el hecho que es la configuración más extendida en redes LAN, y eventualmente lo que más a mano se dispone en centros de enseñanza.
TCP/IP se ha convertido en un estandar de facto en lo referentes a protocolos de comunicación de datos. El hecho que hayan surgido con anterioridad al modelo OSI, hace que, en apariencia, no encajen dentro de ese modelo, pero analizándolos en detalle vemos que cumplen funciones en los niveles 3, 4, y 5 de dicho modelo.
Al momento de realizar la instalación de una red, se implementa, configura y verifica nivel tras nivel, lo que asegura que al instalar las aplicaciones, éstas funcionarán adecuadamente.
Al realizar un mantenimiento correctivo, el alumno aprenderá a utilizar las herramientas adecuadas para realizar una verificación ascendente, nivel tras nivel, lo que proporciona un método de trabajo que en definitiva se traduce en un ahorro de tiempo.
Se hace hincapié en el tema normalización: se hace referencia a las normas, a los organismos de normalización y se incluyen enlaces a documentos que en muchos casos refuerzan los contenidos del libro. Un futuro técnico debe acostumbrarse a respetar las normas en cada aspecto de su desempeño.
A lo largo del libro se asume que los alumnos ya tienen experiencia en la instalación de Windows y de alguna distribución de Linux en modo texto y con interfaz gráfica.
PARTE I - Conceptos

## Capítulo 1: Generalidades

Una red informática es un conjunto de dos o más equipos que intercambian información entre sí.
Si bien estamos acostumbrados a imaginar una red como formada por computadoras, también pueden intervenir otros equipos como impresoras, ...
Las redes pueden clasificarse de acuerdo a diversos criterios:
En base a su extensión:
Redes de área local (LAN= Local Area Network). Son redes cuya extensión física está limitada a un edificio o una porción del mismo, por ejemplo un conjunto de oficinas.
Redes de área amplia (WAN= Wide Area Network). Son redes que abarcan varios edificios más o menos distantes entre sí.
Internets. Una internet es una red formada por la interconexión de varias redes a traves de ruteadores o puertas de enlace.
Internet: Se trata de una red formada por la interconexión de muchísimas redes distribuídas a traves del mundo.
Intranet: Se trata de una red formada por computadoras y ruteadores en forma privada (por lo regular esto se usa en escuelas, comunidades y empresas) y no se puede tener acceso a ella desde internet a menos que tenga la autorizacion necesaria.
En base a su funcionamiento
Redes compañero a compañero (P2P=Peer to peer). Son redes en donde todos los equipos tienen el mismo nivel jerárquico y tanto pueden entregar como recibir información.
Redes cliente-servidor. En estas redes, uno o más servidores almacenan la información y los clientes acceden a la misma para utilizarla o modificarla.

## Generalidades

El modelo de Interconexión de Sistemas Abiertos (OSI, Open System Interconection) lanzado en 1984 fue el modelo de red descriptivo creado por ISO. Proporcionó a los fabricantes un conjunto de estándares que aseguraron una mayor compatibilidad e interoperabilidad entre los distintos tipos de tecnología de red producidos por las empresas a nivel mundial.
Siguiendo el esquema de este modelo se crearon numerosos protocolos que durante muchos años ocuparon el centro de la escena de las comunicaciones informáticas. El advenimiento de protocolos más flexibles, donde las capas no están tan demarcadas y la correspondencia con los niveles no es tan clara, puso a este esquema en un segundo plano. Sin embargo sigue siendo muy usado en la enseñanza como una manera de mostrar como puede estructurarse una "pila" de protocolos de comunicaciones.
El modelo en sí mismo no puede ser considerado una arquitectura, ya que no especifica el protocolo que debe ser usado en cada capa, sino que suele hablarse de modelo de referencia. Este modelo está dividido en siete niveles:
Historia
Nivel físico
Nivel de enlace de datos
Nivel de red
Nivel de transporte
Nivel de sesión
Nivel de presentación
Nivel de aplicación

### Historia

A principios de la década de 1980 el desarrollo de redes fue desordenado. Se produjo un enorme crecimiento en la cantidad y el tamaño de las redes. A medida que las empresas tomaron conciencia de las ventajas de usar tecnologías de conexión, las redes se agregaban o expandían a casi la misma velocidad a la que se introducían las nuevas tecnologías de red.
Para mediados de la década de 1980, estas empresas comenzaron a sufrir las consecuencias de la rápida expansión. De la misma forma en que las personas que no hablan un mismo idioma tienen dificultades para comunicarse, las redes que utilizaban diferentes especificaciones e implementaciones tenían dificultades para intercambiar información. El mismo problema surgía con las empresas que desarrollaban tecnologías de conexiones privadas o propietarias. "Propietario" significa que una sola empresa o un pequeño grupo de empresas controlan todo uso de la tecnología. Las tecnologías de conexión que respetaban reglas propietarias en forma estricta no podían comunicarse con tecnologías que usaban reglas propietarias diferentes.
Para enfrentar el problema de incompatibilidad de redes, la Organización Internacional para la Estandarización (ISO) investigó modelos de conexión como la red de Digital Equipment Corporation (DECnet), la Arquitectura de Sistemas de Red (SNA) y TCP/IP a fin de encontrar un conjunto de reglas aplicables de forma general a todas las redes. Con base en esta investigación, la ISO desarrolló un modelo de red que ayuda a los fabricantes a crear redes que sean compatibles con otras redes.

### Nivel físico

Está formado por todos los componentes de hardware involucrados en la comunicación, así como también las señales electromagnéticas u opticas que circulan a través de ellos, las cuales pueden ser medidas utilizando distintos instrumentos (tester, osciloscopio, etc.).
Entre esos componentes podemos mencionar placas adaptadoras, cables y conectores, hubs, switches, routers, modems, líneas de fibra óptica, antenas, etc.
Las señales electromagnéticas pueden ser ondas eléctricas de distinta forma (senoidal, cuadrada), ondas de radio, microondas, ondas luminosas, etc. Estas señales se modulan en amplitud o frecuencia para representar unos y ceros. Estas señales se manejan como niveles eléctricos, cuando el voltaje tiene un valor n la señal es 1 y si está a 0 volt la señal es 0.
Sin embargo, el medio físico es totalmente ajeno a los datos que se transmiten a través de él, y sólo conecta físicamente dos puntos entre los cuales circula la señal, garantizando únicamente que ésta llegue a su destino.
Las funciones y servicios realizadas por esta capa son:
* Envío bit a bit entre nodos
* Proporcionar un interfaz estandarizado para los medios de transmisión físicos, incluyendo:
* Especificaciones mecánicas de los conector eléctrico y cables, por ejemplo longitud máxima del cable
* Especificación eléctrica de la línea de transmisión, nivel de señal e impedancia
* Interfaz radio, incluyendo el espectro electromagnético, asignación de frecuencia y especificación de la potencia de señal, ancho de banda analógico, etc.
* Especificaciones para IR (radiación infrarroja) sobre fibra óptica o una conexión de comunicación inálambrica mediante IR
* Modulación
* Codificación de línea
* Sincronización de bits en comunicación serie síncrona
* Delimitación de inicio y final, y control de flujo en comunicación serie asíncrona
* Multiplexación de Conmutación de circuitos
* Detección de portadora y CSMA/CD|detección de colisión utilizada por algunos protocolos de acceso múltiple del nivel 2
* Ecualizador, filtrado, secuencias de prueba, forma de onda y otros procesados de señales de las señales física

## Notas al pie

<viva el betis>

### Nivel de enlace de datos

El nivel de enlace de datos, como el resto de los niveles intermedios, funciona en dos sentidos, vinculando el nivel de red con el nivel físico. La capa de enlace de datos es responsable de la transferencia fiable de información a través de un circuito de transmisión de datos.
El nivel de enlace (del inglés data link level) es el segundo nivel del modelo OSI. Recibe peticiones del nivel de red y utiliza los servicios del nivel físico.

#### Objetivo

El objetivo del nivel de enlace es conseguir que la información fluya, libre de errores, entre dos máquinas que estén conectadas directamente (servicio orientado a conexión).
Para lograr este objetivo tiene que montar bloques de información (llamados tramas en este nivel), dotarles de una dirección de nivel de enlace, gestionar la detección o corrección de errores, y ocuparse del control de flujo entre equipos (para evitar que un equipo más rápido desborde a uno más lento).
Cuando el medio de comunicación está compartido entre más de dos equipos es necesario arbitrar el uso del mismo. Esta tarea se realiza en el subnivel de acceso al medio.

#### Ubicación dentro de las normas IEEE 802

Dentro del grupo de normas IEEE 802, el subnivel de enlace lógico se recoge en la norma IEEE 802.2 y es común para todos los demás tipos de redes (Ethernet o IEEE 802.3, IEEE 802.11 o Wi-Fi, IEEE 802.16 o WiMAX, etc.); todas ellas especifican un subnivel de acceso al medio así como un nivel físico distintos.
En la práctica el subnivel de acceso al medio suele formar parte de la propia tarjeta de comunicaciones, mientras que el subnivel de enlace lógico estaría en el programa adaptador de la tarjeta (driver en inglés). En la capa de enlace, los datos se organizan en unidades llamadas tramas. Cada trama tiene una cabecera que incluye una dirección e información de control y una cola que se usa para la detección de errores. Otro tipo de protocolos de nivel de enlace serían PPP (Point to point protocol o protocolo punto a punto), HDLC (High level data link control o protocolo de enlace de alto nivel), por citar dos.
La cabecera de una trama de red de área local (LAN) contiene las direcciones físicas del origen y el destino de la LAN. La cabecera de una trama que se transmite por una red de área extensa (WAN) contiene un identificador de circuito en su campo de dirección.
Recuerde que un enlace es una red de área local, una línea punto a punto o alguna otra facilidad de área extensa por la que se pueden comunicar los sistemas mediante un protocolo de la capa de enlace de datos.

#### Funciones de la capa de enlace

La capa de enlace de datos es responsable de la transferencia fiable de información a través de un Circuito eléctrico de transmisión de datos. La transmisión de datos lo realiza mediante tramas que son las unidades de información con sentido lógico para el intercambio de datos en la capa de enlace. También hay que tener en cuenta que en el modelo TCP/IP se corresponde a la segunda capa
Sus principales funciones son:
* Iniciación, terminación e identificación.
* Segmentación y bloqueo.
* Sincronización de octeto y carácter.
* Delimitación de trama y transparencia.
* Control de errores.
* Control de flujo.
* Recuperación de fallos.
* Gestión y coordinación de la comunicación.
La función de iniciación comprende los procesos necesarios para activar el enlace e implica el intercambio de tramas de control con el fin de establecer la disponibilidad de las estaciones para transmitir y recibir información.
Las funciones de terminación son de liberar los recursos ocupados hasta la recepción/envío de la última trama. También de usar tramas de control. La identificación es para saber a que terminal se debe de enviar una trama o para conocer quien envía la trama. Se lleva a cabo mediante la dirección del nivel de enlace.

#### Segmentación

La segmentación surge por la longitud de las tramas ya que si es muy extensa, se debe de realizar tramas más pequeñas con la información de esa trama excesivamente larga.
Si estas tramas son excesivamente cortas, se ha de implementar unas técnicas de bloque que mejoran la eficiencia y que consiste en concatenar varios mensajes cortos de nivel superior en una única trama de nivel de enlace más larga.
En las transferencias de información en el nivel de enlace es necesario identificar los bits y saber que posición les corresponde en cada carácter u octeto dentro de una serie de bits recibidos.

#### Función de sincronización

Esta función de sincronización comprende los procesos necesarios para adquirir, mantener y recuperar la sincronización de carácter u octeto. Es decir, poner en fase los mecanismos de codificación del emisor con los mecanismos de decodificación del receptor.
La capa de enlace debe ocuparse de la delimitación y sincronización de la trama. Para la sincronización puede usar 3 métodos:
* El primero de ellos es "Principio y fin" (carácteres especificos para identificar el principio o el fin de cada trama).
* También puede usar "Principio y cuenta" (Utiliza un carácter para indicar comienzo y seguido por un contador que indica su longitud).
* Por último puede usar el "Guión" (se emplea una agrupación especifica de bits para identificar el principio y fin mediante banderas/flags).
La transparencia se realiza mediante la inserción de bits. Consta de ir contando los unos consecutivos y cuando se encuentra con 5 unos seguidos y consecutivos introduce el bit 0 después del quinto uno. Ejemplo: Las banderas/flag suelen ser 01111110, y al aplicar la transparencia pasa a ser 011111010.
Es opcional en esta capa, la encargada de realizar esta funcion es la capa de transporte , en una WAN es muy problable que la verificacion, la realiza la capa de enlace

#### Identificación de las tramas y detección de errores

Para la Identificación de tramas puede usar distintas técnicas como:
* Contador de caracteres
* Caracteres de inicio y final con caracteres de relleno
* Secuencia de bits indicadora de inicio y final, con bits de relleno
El control de flujo es necesario para no 'agobiar' al receptor. Se realiza normalmente a nivel de transporte, también a veces a nivel de enlace. Utiliza mecanismos de retroalimentación. Suele ir unido a la corrección de errores y no debe limitar la eficiencia del canal.
Los métodos de control de errores son básicamente 2:
* FEC o corrección de errores por anticipado y no tiene control de flujo.
* ARQ: Posee control de flujo mediante parada y espera, o/y ventana deslizante.
Las posibles implementaciones son:
* Parada y espera simple: Emisor envía trama y espera una señal del receptor para enviar la siguiente o la que acaba de enviar en caso de error.
* Envío continuo y rechazo simple: Emisor envía continuamente tramas y el receptor las va validando. Si encuentra una errónea, elimina todas las posteriores y pide al emisor que envíe a partir de la trama errónea.
* Envío continuo y rechazo selectivo: transmisión continua salvo que sólo retransmite la trama defectuosa.
La detección de errores la realiza mediante diversos tipos de códigos del que hay que resaltar:
* CRC (control de redundancia cíclica)
* Simple paridad
* Paridad cruzada (Paridad horizontal y vertical)
* Suma de verificación
La corrección de errores están basados en Código Hamming, por repetición, verificación de paridad cruzada, Reed-Solomon y de goyle.
También cabe destacar los protocolos HDLC que es un control de enlace de datos a alto nivel, orientado a bit y obedece a una ARQ de ventana deslizante o continuo. También existen protocolos orientados a carácter. El control de flujo es necesario para no 'agobiar' al receptor. Se realiza normalmente a nivel de transporte, también a veces a nivel de enlace. Utiliza mecanismos de retroalimentación. Suele ir unido a la corrección de errores y no debe limitar la eficiencia del canal. El control de flujo conlleva dos acciones importantísimas que son la detección de errores y la corrección de errores.
La detección de errores se utiliza para detectar errores a la hora de enviar tramas al receptor e intentar solucionarlos. Se realiza mediante diversos tipos de códigos del que hay que resaltar el CRC (códigos de redundancia cíclica), simple paridad (puede ser par, números de 1´s par, o impar) paridad cruzada (Paridad horizontal y vertical) y Suma de verificación
La corrección de errores surge a partir de la detección para corregir errores detectados y necesitan añadir a la información útil un número de bits redundantes bastante superior al necesario para detectar y retransmitir. Sus técnicas son variadas. El Código Hamming, Repetición, que cada bit se repite 3 veces y en caso de fallo se toma el bit que más se repite; También puede hacerse mediante verificación de paridad cruzada, Reed-Solomon y de goyle.
También cabe destacar los protocolos HDLC que es un control de enlace de datos a alto nivel, orientado a bit y obedece a una ARQ de ventana deslizante o continuo. También existen protocolos orientados a carácter.

#### Recuperación ante fallos

Se refiere a los procedimientos para detectar situaciones y recuperar al nivel de situaciones anómalas como la ausencia de respuesta, recepción de tramas inválidas, etc. Las situaciones más típicas son la pérdida de tramas, aparición de tramas duplicadas y llegada de tramas fuera de secuencia.
Si no se tratasen correctamente estos eventos se perderá información y se aceptarán datos erróneos como si fuesen correctos. Generalmente se suelen utilizar contadores para limitar el número de errores o reintentos de los procesos y procedimientos. También se pueden usar temporizadores para establecer plazos de espera (timeout) de los sucesos. La gestión atiende a 2 tipos:
* El primero de ellos es un sistema centralizado donde existe una máquina maestra y varias esclavas. Estas conexiones se pueden realizar punto a punto o multipunto.
* El segundo de ellos es el distribuido, donde no existe máquina maestra y todas compiten por el control del sistema de comunicación.
La coordinación se puede realizar mediante selección o contienda:
* La selección se puede implementar mediante sondeo/selección, donde el maestro recoge un mensaje de una secundaria y se la entrega a quien seleccione. También es posible asignando un testigo a una máquina que es la que puede emitir mensajes/tramas. Son típicas las configuraciones Token Ring y Token Bus.
* La contienda se basa en que cada ordenador emite su trama/mensaje cuando le apetece. Todos los componentes de la red son tanto emisores como receptores. Son típicos los sistemas ALOHA y CSMA/CD. Hay que tener cuidado con las colisiones.

### Nivel de red

La capa de red, según la normalización OSI, es una capa que proporciona conectividad y selección de ruta entre dos sistemas de nodos que pueden estar ubicados en redes geográficamente distintas. Es el tercer nivel del modelo OSI y su misión es conseguir que los datos lleguen desde el origen al destino aunque no tengan conexión directa. Ofrece servicios al nivel superior (nivel de transporte) y se apoya en el nivel de enlace, es decir, utiliza sus funciones.

#### Funciones y mecanismos

Para la consecución de su tarea, puede asignar direcciones de red únicas, interconectar subredes distintas, encaminar paquetes y utilizar un control de congestión. Hay dos formas en las que el nivel de red puede funcionar internamente, pero independientemente de que la red funcione internamente con datagramas o con circuitos virtuales puede dar hacia el nivel de transporte un servicio orientado a conexión:
* Datagramas: Cada paquete se encamina independientemente, sin que el origen y el destino tengan que pasar por un establecimiento de comunicación previo.
* Circuitos virtuales: En una red de circuitos virtuales dos equipos que quieran comunicarse tienen que empezar por establecer una conexión. Durante este establecimiento de conexión, todos los routers que hayan por el camino elegido reservarán recursos para ese circuito virtual específico.
Hay dos tipos de servicio:
* Servicios Orientados: Sólo el primer paquete de cada mensaje tiene que llevar la dirección destino. Con este paquete se establece la ruta que deberán seguir todos los paquetes pertenecientes a esta conexión. Cuando llega un paquete que no es el primero se identifica a que conexión pertenece y se envía por el enlace de salida adecuado, según la información que se generó con el primer paquete y que permanece almacenada en cada conmutador o nodo.
* Servicios no orientados: Cada paquete debe llevar la dirección destino, y con cada uno, los nodos de la red deciden el camino que se debe seguir. Existen muchas técnicas para realizar esta decisión, como por ejemplo comparar el retardo que sufriría en ese momento el paquete que se pretende transmitir según el enlace que se escoja.

#### Técnicas de encaminamiento

Las técnicas de encaminamiento suelen basarse en el estado de la red, que es dinámico, por lo que las decisiones tomadas respecto a los paquetes de la misma conexión pueden variar según el instante de manera que éstos pueden seguir distintas rutas. El problema, sin embargo, consiste en encontrar un camino óptimo entre un origen y un destino. La bondad de este camino puede tener diferentes criterios: velocidad, retardo, seguridad, regularidad, distancia, longitud media de las colas, costos de comunicación, etc.
Los equipos encargados de esta labor se denominan encaminadores (router en inglés), aunque también realizan labores de encaminamiento los conmutadores (switch en inglés) "multicapa" o "de nivel 3", si bien estos últimos realizan también labores de nivel de enlace. Cuando en una red un nodo recibe más tráfico del que puede cursar se puede dar una congestión. El problema es que una vez que se da congestión en un nodo el problema tiende a extenderse por el resto de la red. Por ello hay técnicas de prevención y control que se pueden y deben aplicar en el nivel de red.
Algunos protocolos de la capa de red son:
* IP (IPv4, IPv6, IPsec)
* OSPF
* IS-IS
* BGP
* ARP, RARP
* RIP
* ICMP, ICMPv6
* IGMP
* DHCP

### Nivel de transporte

La capa de transporte es el cuarto nivel del modelo OSI encargado de la transferencia libre de errores de los datos entre el emisor y el receptor, aunque no estén directamente conectados, así como de mantener el flujo de la red. Es la base de toda la jerarquía de protocolo. La tarea de esta capa es proporcionar un transporte de datos confiable y económico de la máquina de origen a la máquina destino, independientemente de la red de redes física en uno. Sin la capa transporte, el concepto total de los protocolos en capas tendría poco sentido.

#### Objetivo

El objetivo de la capa transporte es proporcionar un servicio eficiente, confiable y económico a sus usuarios, que normalmente son procesos de la capa aplicación. Para lograr este objetivo, la capa transporte utiliza los servicios proporcionados por la capa de red. El hardware o software de la capa transporte que se encarga del trabajo se llama entidad de transporte, la cual puede estar en el núcleo del sistema operativo, en un proceso independiente, en un paquete de biblioteca o en la tarjeta de red.

#### Servicios

Hay dos tipos de servicio en la capa transporte, orientado y no orientado a la conexión. En el servicio orientado a la conexión consta de tres partes: establecimiento, transferencia de datos, y liberación. En el servicio no orientado a la conexión se tratan los paquetes de forma individual.
Es la primera capa que lleva a cabo la comunicaciòn extremo a extremo, y esta condición ya se mantendrá en las capas superiores.
Para permitir que los usuarios accedan al servicio de transporte, la capa de transporte debe proporcionar algunas operaciones a los programas de aplicación, es decir, una interfaz del servicio de transporte. Cada servicio de transporte tiene su propia interfaz. Con el propósito de ver los aspectos básicos, en esta sección examinaremos primero un servicio de transporte sencillo y su interfaz.
El servicio de transporte es parecido al servicio en red, pero hay algunas diferencias importantes. La principal, es que, el propósito del servicio de red es modelar el servicio ofrecido por las redes reales, con todos sus problemas. Las redes reales pueden perder paquetes, por lo que generalmente el servicio no es confiable. En cambio, el servicio de transporte(orientado a la conexión) si es confiable. Claro que las redes reales no están libres de errores, pero ése es precisamente el propósito de la capa de transporte: ofrecer un servicio confiable en una red no confiable.
Otra diferencia entre la capa transporte y la de red es a quien van dirigidos sus servicios. El servicio de red lo usan únicamente las entidades de transporte. Pocos usuarios escriben sus entidades de transporte y pocos usuarios o programas llegan a ver los aspectos internos del servicio de red. En cambio, muchos programas ven primitivas de transporte. En consecuencia el servicio de transporte debe ser adecuado y fácil de usar.

#### Primitivas

Las primitivas de un transporte sencillo serían:
- LISTEN: Se bloquea hasta que algún proceso intenta el contacto.
- CONNECT: Intenta activamente establecer una conexión.
- SEND: Envia información.
- RECEIVE: Se bloque hasta que llegue una TPDU de DATOS.
- DISCONNECT: Este lado quiere liberar la conexión.
Y con estas primitivas podemos hacer un esquema sencillo de manejo de conexiones. Las transiciones escritas en cursiva son causadas por llegadas de paquetes. Las líneas continuas muestran la secuencia de estados del cliente y las líneas punteadas muestran la secuencia del servidor.

#### Implementación

El servicio de transporte se implementa mediante un protocolo de transporte entre dos entidades de transporte. En ciertos aspectos, los protocolos de transporte se parecen a los protocolos de red. Ambos se encargan del control de errores, la secuenciación y el control del flujo.
Pero también existen diferencias importantes entre ambas, como los entornos en que operan, la capa transporte necesita el direccionamiento explícito de los destinos, mientras que la capa de red no, otra diferencia es la cantidad de datos, mucho mayor en la capa de transporte que en la de enlace de datos.
Cuando un proceso desea establecer una conexión con un proceso de aplicación remoto, debe especificar a cuál se conectará. (¿a quién mandó el mensaje?) El método que normalmente se emplea es definir direcciones de transporte en las que los procesos pueden estar a la escucha de solicitudes de conexión. En Internet, estos puntos terminales se denominan puertos, pero usaremos el término genérico de TSAP (Punto de Acceso al Servicio de Transporte). Los puntos terminales análogos de la capa de red se llaman NSAP (Punto de Acceso al Servicio de Red). Las direcciones IP son ejemplos de NSAPs.

#### Establecimiento de una conexión

El establecimiento de una conexión parece fácil, pero en realidad es sorprendentemente difícil. A primera vista, parecería que es suficiente con mandar una TPDU (Unidad de Datos del Protocolo de Transporte) con la petición de conexión y esperar a que el otro acepte la conexión. El problema viene cuando la red puede perder, almacenar, o duplicar paquetes. El principal problema es la existencia de duplicados retrasados. Esto puede solucionarse de varias maneras (ninguna es muy satisfactoria). Una es utilizar direcciones de transporte desechables. En este enfoque cada vez que necesitemos una dirección la creamos. Al liberarse la conexión descartamos la dirección y no se vuelve a utilizar. O también asignar una secuencia dentro de los datos transmitidos, pero estos plantean los problemas de que si se pierde la conexión perdemos el orden del identificador y ya no funciona. Pero la solución seria más fácil si los paquetes viejos se eliminaran de la subred cada cierto tiempo de vida. Para ello podemos utilizar las siguientes técnicas: Un diseño de subred Restringido. Colocar un contador de saltos en cada paquete. Marcar el tiempo de cada paquete. Pero en la práctica no vale solo con hacer esto sino que tenemos que garantizar que todas las confirmaciones de los paquetes también se eliminan.

#### Liberación de una conexión

La liberación de una conexión es más fácil que su establecimiento. No obstante, hay más escollos de los que uno podría imaginar. Hay dos estilos de terminación de una conexión: liberación asimétrica y liberación simétrica. La liberación asimétrica es la manera en que funciona el mecanismo telefónico: cuando una parte cuelga, se interrumpe la conexión. La liberación simétrica trata la conexión como dos conexiones unidireccionales distintas, y requiere que cada una se libere por separado. La liberación asimétrica es abrupta y puede resultar en la perdida de datos. Por lo que es obvio que se requiere un protocolo de liberación más refinado para evitar la perdida de datos. Una posibilidad es usar la liberación simétrica, en la que cada dirección se libera independientemente de la otra. Aquí, un host puede continuar recibiendo datos aun tras haber enviado una TPDU de desconexión.
La liberación simétrica es ideal cuando un proceso tiene una cantidad fija de datos por enviar y sabe con certidumbre cuándo los ha enviado. En otras situaciones, la determinación de si se ha efectuado o no todo el trabajo y se debe terminarse o no la conexión no es tan obvia. Podríamos pensar en un protocolo en el que el host 1 diga:”Ya termine, ¿Terminaste también?”. Si el host 2 responde “Ya termine también. Adiós”, la conexión puede liberarse con seguridad.
Pero no es tan fiable por el problema de que siempre tendremos que esperar la confirmación de los mensajes recibidos y si esta confirmación no llega no libera la conexión y después puede que necesite la confirmación de que llego la confirmación y entraríamos en un bucle del que no podemos salir.
Podemos hacer que al host 1 si no le llega la confirmación después de N intentos (es que quiere la desconexión), se libere. Esto produce una conexión semiabierta en la que el host 1 está desconectado pero el host 2 no como no le llega la confirmación no se desconecta nunca. Para solucionar esto creamos una regla por la cual si al host 2 no le llega ninguna TPDU durante cierta cantidad de segundos, se libera automáticamente.

#### Manejo de una conexión

Ya examinamos la conexión y la desconexión, veamos la manera en que se manejan las conexiones mientras están en uso. Uno de los aspectos clave es el control de flujo. Necesitamos un esquema para evitar que un emisor rápido desborde a un receptor lento. La diferencia principal es que un enrutador por lo regular tiene relativamente pocas líneas, y un host puede tener numerosas conexiones. Esta diferencia hace poco practico emplear la implementación que se hace en la capa red.
En esta capa lo que se hace es, si el servicio de red no es confiable, el emisor debe almacenar en un buffer todas las TPDUs enviadas, igual que en la capa enlace de datos. Sin embargo, con un servicio de red confiable son posibles otros arreglos. En particular, si el emisor sabe que el receptor siempre tiene espacio de buffer, no necesita tener copias de las TPDUs que envía. Sin embargo, si el receptor no garantiza que se aceptará cada TPDU que llegue, el emisor tendrá que usar buffers de todas maneras. En el último caso, el emisor no puede confiar en la confirmación de recepción de la capa red porque esto sólo significa que ha llegado la TPDU, no que ha sido aceptada.
Los Buffers pueden ser de tres tipos, y usaremos cada uno de ellos cuando más nos convenga.
El equilibrio óptimo entre el almacenamiento del buffer en el origen y en el destino depende del tipo de trafico transportado por la conexión.

#### Multiplexión de conversaciones

La multiplexión de varias conversaciones en conexiones, circuitos virtuales o enlaces físicos desempeña un papel importante en diferentes capas de la arquitectura de red. En la capa de transporte puede surgir la necesidad de multiplexión por varias razones. Por ejemplo, si en un host sólo se dispone de una dirección de red, todas la conexiones de transporte de esa maquina tendrán que utilizarla. Cuando llega una TPDU, se necesita algún mecanismo para saber a cuál proceso asignarla. Esta situación se conoce como multiplexión hacia arriba.
La multiplexión también puede ser útil en la capa transporte para la utilización de circuitos virtuales, que dan más ancho de banda cuando se reasigna a cada circuito una tasa máxima de datos. La solución es abrir múltiples conexiones de red y distribuir el tráfico entre ellas. Esto se denomina multiplexión hacia abajo.

#### Recuperación ante caídas

Si los hosts y los enrutadores están sujetos a caídas, la recuperación es fundamental. Si la entidad de transporte está por entero dentro de los hosts, la recuperación de caídas de red y de enrutadores es sencilla. Si la capa de red proporciona servicio de datagramas, las entidades de transporte esperan pérdida de algunas TPDUs todo el tiempo, y saben cómo manejarla. Si la capa de red proporciona servicio orientado a la conexión, entonces la pérdida de un circuito virtual se maneja estableciendo otro nuevo y sondeando la entidad de transporte remota para saber cuales TPDUs ha recibido y cuales no.
Un problema más complicado es la manera de recuperarse de caídas del host. Al reactivarse, sus tablas están en el estado inicial y no sabe con precisión donde estaba.
En un intento por recuperar su estado previo, el servidor podría enviar una TPDU de difusión a todos los demás host, anunciando que se acaba de caer y solicitando a todos sus clientes que le informen el estado de todas la conexiones abiertas.
Internet tiene dos protocolos principales en la capa de transporte, uno orientado a la conexión y otro no orientado a la conexión. El protocolo no orientado a la conexión es el UDP y el orientado es el TCP. El conjunto de protocolos de Internet soporta un protocolo de transporte no orientado a la conexión UDP (protocolo de datagramas de usuario). Este protocolo proporciona una forma para que las aplicaciones envíen datagramas IP encapsulados sin tener una conexión.
TCP (protocolo de control de transmisión) se diseñó específicamente para proporcionar un flujo de bytes confiable de extremo a extremo a través de una interred no confiable. Una interred difiere de una sola red debido a que diversas partes podrían tener diferentes topologías, anchos de banda, retardos, tamaños de paquete… TCP tiene un diseño que se adapta de manera dinámica a las propiedades de la interred y que se sobrepone a muchos tipos de situaciones.

### Nivel de sesión

Es el quinto nivel del modelo OSI , que proporciona los mecanismos para controlar el diálogo entre las aplicaciones de los sistemas finales. En muchos casos, los servicios de la capa de sesión son parcialmente, o incluso, totalmente prescindibles. No obstante en algunas aplicaciones su utilización es ineludible.
La capa de sesión proporciona los siguientes servicios:
Control del Diálogo: Éste puede ser simultáneo en los dos sentidos (full-duplex) o alternado en ambos sentidos (half-duplex).
Agrupamiento: El flujo de datos se puede marcar para definir grupos de datos.
Recuperación: La capa de sesión puede proporcionar un procedimiento de puntos de comprobación, de forma que si ocurre algún tipo de fallo entre puntos de comprobación, la entidad de sesión puede retransmitir todos los datos desde el último punto de comprobación y no desde el principio.
Todas estas capacidades se podrían incorporar en las aplicaciones de la capa 7. Sin embargo ya que todas estas herramientas para el control del diálogo son ampliamente aplicables, parece lógico organizarlas en una capa separada, denominada capa de sesión.
La capa de sesión surge como una necesidad de organizar y sincronizar el diálogo y controlar el intercambio de datos.
La capa de sesión permite a los usuarios de máquinas diferentes establecer sesiones entre ellos. Una sesión permite el transporte ordinario de datos, como lo hace la capa de transporte, pero también proporciona servicios mejorados que son útiles en algunas aplicaciones. Se podría usar una sesión para que el usuario se conecte a un sistema remoto de tiempo compartido o para transferir un archivo entre dos máquinas.

### Nivel de presentación

El objetivo de la capa de presentación es encargarse de la representación de la información, de manera que aunque distintos equipos puedan tener diferentes representaciones internas de caracteres (ASCII, Unicode, EBCDIC números (little-endian tipo Intel, big-endian tipo Motorola), sonido o imágenes, los datos lleguen de manera reconocible.
Esta capa es la primera en trabajar más el contenido de la comunicación que 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.
Por lo tanto, podemos resumir definiendo a esta capa como la encargada de manejar las estructuras de datos abstractas y realizar las conversiones de representación de datos necesarias para la correcta interpretación de los mismos.
Esta capa también permite cifrar los datos y comprimirlos. Actúa como traductor.

### Nivel de aplicación

Provee servicios de red comunicaciones) a las aplicaciones del usuario Realiza el intercambio de “datos”
Ofrece a las aplicaciones (de usuario o no) 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 (POP y SMTP), gestores de bases de datos y protocolos de transferencia de archivos (FTP)
Cabe aclarar que el usuario normalmente no interactúa directamente con el nivel de aplicación. Suele interactuar con programas que a su vez interactúan con el nivel de aplicación pero ocultando la complejidad subyacente. Así por ejemplo un usuario no manda una petición "HTTP/1.0 GET index.html" para conseguir una página en html, ni lee directamente el código html/xml. O cuando chateamos con el Messenger, no es necesario que codifiquemos la información y los datos del destinatario para entregarla a la capa de Presentación (capa 6) para que realice el envío del paquete.
En esta capa aparecen diferentes protocolos:
* FTP (File Transfer Protocol - Protocolo de Transferencia de Archivos) para transferencia de archivos.
* DNS (Domain Name Service - Servicio de Nombres de Dominio)
* DHCP (Dynamic Host Configuration Protocol - Protocolo de Configuración Dinámica de Anfitrión)
* HTTP (HyperText Transfer Protocol) para acceso a páginas de internet.
* NAT (Network Address Translation - Traducción de Dirección de Red)
* POP (Post Office Protocol) para correo electrónico.
* SMTP (Simple Mail Transport Protocol).
* SSH (Secure SHell)
* TELNET para acceder a equipos remotos
* TFTP (Trival File Transfer Protocol).

## Capítulo 3: Medios físicos

El medio físico es el encargado de transmitir señales electromagnéticas que son interpretadas por el protocolo de enlace de datos como "Bits".
En principio, cualquier medio físico podría ser utilizado, a condición que asegure la transmisión de toda la información sin interferencias.
De hecho, las líneas telefónicas, las de televisión por cable y las de energía eléctrica pueden ser utilizadas con ese fin.
Sin embargo, en redes locales se utilizan cableados dedicados lo que mejora las velocidades de transmisión.
Otra posibilidad es la transmisión a través del aire, en forma de señales de radio, microondas, etc.
La forma en que se interconectan entre sí los distintos nodos de la red, determinan su topología.
Topologías de red
Tipos de cableado
Placas adaptadoras
Redes inalámbricas
Redes de energía

### Topologías de red
## Definición

La topología de red es la disposición física en la que se conectan los nodos de una red de ordenadores o servidores. Estos computadores pueden conectarse de muchas y muy variadas maneras. La conexión más simple es un enlace unidireccional entre dos nodos. Se puede añadir un enlace de retorno para la comunicación en ambos sentidos. Los cables de comunicación modernos normalmente incluyen más de un cable para facilitar esto, aunque redes muy simples basadas en buses tienen comunicación bidireccional en un solo cable.
En casos mixtos se puede usar la palabra topología en un sentido relajado para hablar a la vez de la disposición física del cableado y de como el protocolo considera dicho cableado. Así, en un anillo con una MAU podemos decir que tenemos una topología en anillo, o de que se trata de un anillo con topología en estrella.
La topología de red la determina únicamente la configuración de las conexiones entre nodos. La distancia entre los nodos, las interconexiones físicas, las tasas de transmisión y/o los tipos de señales no pertenecen a la topología de la red, aunque pueden verse afectados por la misma.

## Redes centralizadas

La topología en estrella reduce la posibilidad de fallo de red conectando todos los nodos a un nodo central. Cuando se aplica a una red basada en bus, este concentrador central reenvía todas las transmisiones recibidas de cualquier nodo periférico a todos los nodos periféricos de la red, algunas veces incluso al nodo que lo envió. Todos los nodos periféricos se pueden comunicar con los demás transmitiendo o recibiendo del nodo central solamente. Un fallo en la línea de conexión de cualquier nodo con el nodo central provocaría el aislamiento de ese nodo respecto a los demás, pero el resto de sistemas permanecería intacto.
Si el nodo central es pasivo, el nodo origen debe ser capaz de tolerar un eco de su transmisión. Una red en estrella activa tiene un nodo central activo que normalmente tiene los medios para prevenir problemas relacionados con el eco.
Una topología en árbol (también conocida como topología jerárquica) puede ser vista como una colección de redes en estrella ordenadas en una jerarquía. Éste árbol tiene nodos periféricos individuales (por ejemplo hojas) que requieren transmitir a y recibir de otro nodo solamente y no necesitan actuar como repetidores o regeneradores. Al contrario que en las redes en estrella, la función del nodo central se puede distribuir.
Como en las redes en estrella convencionales, los nodos individuales pueden quedar aislados de la red por un fallo puntual en la ruta de conexión del nodo. Si falla un enlace que conecta con un nodo hoja, ese nodo hoja queda aislado; si falla un enlace con un nodo que no sea hoja, la sección entera queda aislada del resto.
Para aliviar la cantidad de tráfico de red que se necesita para retransmitir todo a todos los nodos, se desarrollaron nodos centrales más avanzados que permiten mantener un listado de las identidades de los diferentes sistemas conectados a la red. Éstos switches de red “aprenderían” cómo es la estructura de la red transmitiendo paquetes de datos a todos los nodos y luego observando de dónde vienen los paquetes respuesta.

## Descentralización

En una red en malla, hay al menos dos nodos con dos o más caminos entre ellos. Un tipo especial de malla en la que se limite el número de saltos entre dos nodos, es un hipercubo. El número de caminos arbitrarios en las redes en malla las hace más difíciles de diseñar e implementar, pero su naturaleza descentralizada las hace muy útiles.
Un red totalmente conectada o completa, es una topología de red en la que hay un enlace directo entre cada pareja de nodos. En una red totalmente conexa con n nodos, hay ${\frac {n\times \left(n-1\right)}{2}}$ enlaces directos. Las redes diseñadas con esta topología, normalmente son caras de instalar, pero son muy fiables gracias a los múltiples caminos por los que los datos pueden viajar. Se ve principalmente en aplicaciones militares.

## Híbridas

Las redes híbridas usan una combinación de dos o más topologías distintas de tal manera que la red resultante no tiene forma estándar. Por ejemplo, una red en árbol conectada a una red en árbol sigue siendo una red en árbol, pero dos redes en estrella conectadas entre sí (lo que se conoce como estrella extendida) muestran una topología de red híbrida. Una topología híbrida, siempre se produce cuando se conectan dos topologías de red básicas. Dos ejemplos comunes son:
   * Red de estrella en anillo, consta de dos o más topologías en estrella conectadas mediante una unidad de acceso multiestación (MAU) como hub centralizado.
   * Una red de estrella en bus, consta de dos o más topologías en estrella conectadas mediante un bus troncal (el bus troncal funciona como la espina dorsal de la red).
Mientras que las redes en rejilla han encontrado su sitio en aplicaciones de computación de alto rendimiento, algunos sistemas han utilizado algoritmos genéticos para diseñar redes personalizadas que tienen el menor número posible de saltos entre nodos distintos. Algunas de las estructuras de redes resultantes son casi incomprensibles, aunque funcionan bastante bien.

## Fuente

* Artículo tomado de Wikipedia en español

### Tipos de cableado

Cable coaxial
Cable de par trenzado
Fibra óptica

#### Cable coaxial

El cable coaxial fue creado en la década de los 30, y es un cable utilizado para transportar señales eléctricas de alta frecuencia que posee dos conductores concéntricos, uno central, encargado de llevar la información, y uno exterior, de aspecto tubular, llamado malla o blindaje, que sirve como referencia de tierra y retorno de las corrientes. Entre ambos se encuentra una capa aislante llamada dieléctrico, de cuyas características dependerá principalmente la calidad del cable. Todo el conjunto suele estar protegido por una cubierta aislante.
Este cable fue el primero utilizado en redes informáticas con topología de bus.
La impedancia característica del cable coaxial utilizado en redes informáticas es de 50 Ω.

#### Cable de par trenzado

El cable UTP (Unshielded Twisted Pair = Pares Retorcidos no Apantallados) es un cable formado por 8 conductores agrupados en 4 pares. Cada par está retorcido en forma helicoidal con un paso diferente, lo cual anula las interferencias externas y evita que interfieran entre sí. Es un cable mucho más económico que el cable coaxial, por lo cual lo ha desplazado en el uso común.

#### Fibra óptica

Cable de fibra óptica : En el cable de fibra óptica las señales que se transportan son señales digitales de datos en forma de pulsos modulados de luz. Esta es una forma relativamente segura de enviar datos debido a que, a diferencia de los cables de cobre que llevan los datos en forma de señales electrónicas, los cables de fibra óptica transportan impulsos no eléctricos. Esto significa que el cable de fibra óptica no se puede pinchar y sus datos no se pueden robar.

### Placas adaptadoras

NIC (Network Interface Card) es la sigla con que se identifican las placas adaptadoras de red.
Una NIC puede ser una tarjeta que se inserta en un zócalo ISA o PCI, o bien estar integrada en la placa madre.
Aún existen instaladas NICs configurables mediante switches o por software, en las cuales se elige la dirección de entrada/salida (I/O adress) y la línea de interrupción (IRQ). Es muy importante configurar adecuadamente estos valores para evitar conflictos con otros dispositivos.
Actualmente, las NICs que se comercializan son PnP(plug and play) por lo que no existen problemas de configuración en el caso de sistemas operativos que tengan ese soporte.
Las nuevas motherboards traen integradas una o dos NICs de tipo Ethernet, las cuales se configuran desde el setup o mediante software que se provee junto con los restantes drivers.

### Redes inalámbricas

Las redes inalámbricas gradualmente van ganando espacio, convirtiéndose en una alternativa a las redes cableadas, presentando la ventaja de la movilidad de los equipos y una reducción considerable de los costos de instalación. Básicamente, tenemos tres tipos de redes inalámbricas:Wi-Fi, Wi-Max y 3G. Todas ellas utilizan ondas de radio para la transmisión.
Wi-Fi está diseñado para redes LAN de corto alcance. La norma IEEE 802.11 solamente modifica la forma en que se transmiten las tramas, pero las mismas no se diferencian fundamentalmente de las 802.3. Esto trae como consecuencia una gran compatibilidad entre Wi-Fi y Ethernet, lo que se traduce en el bajo costo de routers y adaptadores.
Wi-Max es la respuesta a la necesidad de hacer llegar Internet a zonas rurales, en donde el tendido de cables para unos pocos usuarios alejados entre sí resultaría muy costoso. Se la denomina 'solución de última milla' porque es equivalente al cableado que se realiza entre una central telefónica y el domicilio del abonado. La antena de distribución se conecta al resto de la red por medio de microondas, fibra óptica o cualquier otro medio disponible, y cubre un área de abonados de hasta XX Km2 La norma IEEE 802.16, correspondiente a Wi-Max, también establece compatibilidad con Ethernet, con lo que se dispone de un sistema coherente de protocolos etc, etc...

### Redes de energía

Redes informáticas/Medios físicos/Redes de energía

## Capítulo 4: Protocolos de enlace de datos

Los protocolos de nivel de enlace de datos se encargan de codificar los paquetes recibidos del nivel de red para que puedan ser enviados a través del medio físico como señales electromagnéticas, y decodificar las señales electromagnéticas recibidas para ser entregadas como paquetes al nivel de red. En este nivel se utiliza el concepto de trama, que está compuesta por un paquete al cual se le agrega información que permite regular el tráfico de información y verificar la consistencia de la misma. Los protocolos más comunmente usados en redes LAN son Ethernet y Token Ring

## Capítulo 5: Protocolos de transporte

La capa transporte es el cuarto nivel del modelo OSI encargado de la transferencia libre de errores de los datos entre el emisor y el receptor, aunque no estén directamente conectados, así como de mantener el flujo de la red. Es la base de toda la jerarquía de protocolo. La tarea de esta capa es proporcionar un transporte de datos confiable y económico de la máquina de origen a la máquina destino, independientemente de la red de redes física en uno. Sin la capa transporte, el concepto total de los protocolos en capas tendría poco sentido.

### Servicio proporcionados a las capas superiores

La meta final de la capa transporte es proporcionar un servicio eficiente, confiable y económico a sus usuarios, que normalmente son procesos de la capa aplicación. Para lograr este objetivo, la capa transporte utiliza los servicios proporcionados por la capa de red. El hardware o software de la capa transporte que se encarga del trabajo se llama entidad de transporte, la cual puede estar en el núcleo del sistema operativo, en un proceso independiente, en un paquete de biblioteca o en la tarjeta de red.
Hay dos tipos de servicio en la capa transporte, orientado y no orientado a la conexión. En el servicio orientado a la conexión consta de tres partes: establecimiento, transferencia de datos, y liberación. En el servicio no orientado a la conexión se tratan los paquetes de forma individual.
Es la primera capa que lleva a cabo la comunicaciòn extremo a extremo, y esta condición ya se mantendrá en las capas superiores.

### Primitivas del servicio de transporte

Para permitir que los usuarios accedan al servicio de transporte, la capa de transporte debe proporcionar algunas operaciones a los programas de aplicación, es decir, una interfaz del servicio de transporte. Cada servicio de transporte tiene su propia interfaz. Con el propósito de ver los aspectos básicos, en esta sección examinaremos primero un servicio de transporte sencillo y su interfaz.
El servicio de transporte es parecido al servicio en red, pero hay algunas diferencias importantes. La principal, es que, el propósito del servicio de red es modelar el servicio ofrecido por las redes reales, con todos sus problemas. Las redes reales pueden perder paquetes, por lo que generalmente el servicio no es confiable. En cambio, el servicio de transporte(orientado a la conexión) si es confiable. Claro que las redes reales no están libres de errores, pero ése es precisamente el propósito de la capa de transporte: ofrecer un servicio confiable en una red no confiable.
Otra diferencia entre la capa transporte y la de red es a quien van dirigidos sus servicios. El servicio de red lo usan únicamente las entidades de transporte. Pocos usuarios escriben sus entidades de transporte y pocos usuarios o programas llegan a ver los aspectos internos del servicio de red. En cambio, muchos programas ven primitivas de transporte. En consecuencia el servicio de transporte debe ser adecuado y fácil de usar.
Las primitivas de un transporte sencillo serían:
- LISTEN: Se bloquea hasta que algún proceso intenta el contacto.
- CONNECT: Intenta activamente establecer una conexión.
- SEND: Envia información.
- RECEIVE: Se bloque hasta que llegue una TPDU de DATOS.
- DISCONNECT: Este lado quiere liberar la conexión.
Y con estas primitivas podemos hacer un esquema sencillo de manejo de conexiones. Las transiciones escritas en cursiva son causadas por llegadas de paquetes. Las líneas continuas muestran la secuencia de estados del cliente y las líneas punteadas muestran la secuencia del servidor. Sockets de Berkeley [editar/edición rápida]
Este es otro grupo de primitivas de transporte, las primitivas usadas en UNIX para el TCP. En general son muy parecidas a las anteriores pero ofrecen más características y flexibilidad.
El servicio de transporte se implementa mediante un protocolo de transporte entre dos entidades de transporte. En ciertos aspectos, los protocolos de transporte se parecen a los protocolos de red. Ambos se encargan del control de errores, la secuenciación y el control del flujo.
Pero también existen diferencias importantes entre ambas, como los entornos en que operan, la capa transporte necesita el direccionamiento explícito de los destinos, mientras que la capa de red no, otra diferencia es la cantidad de datos, mucho mayor en la capa de transporte que en la de enlace de datos.

### Direccionamiento

Cuando un proceso desea establecer una conexión con un proceso de aplicación remoto, debe especificar a cuál se conectará.(¿a quién mandó el mensaje?) El método que normalmente se emplea es definir direcciones de transporte en las que los procesos pueden estar a la escucha de solicitudes de conexión. En Internet, estos puntos terminales se denominan puertos, pero usaremos el término genérico de TSAP (Punto de Acceso al Servicio de Transporte). Los puntos terminales análogos de la capa de red se llaman NSAP (Punto de Acceso al Servicio de Red). Las direcciones IP son ejemplos de NSAPs.

### Establecimiento de una conexión

El establecimiento de una conexión parece fácil, pero en realidad es sorprendentemente difícil. A primera vista, parecería que es suficiente con mandar una TPDU (Unidad de Datos del Protocolo de Transporte) con la petición de conexión y esperar a que el otro acepte la conexión. El problema viene cuando la red puede perder, almacenar, o duplicar paquetes. El principal problema es la existencia de duplicados retrasados. Esto puede solucionarse de varias maneras (ninguna es muy satisfactoria). Una es utilizar direcciones de transporte desechables. En este enfoque cada vez que necesitemos una dirección la creamos. Al liberarse la conexión descartamos la dirección y no se vuelve a utilizar. O también asignar una secuencia dentro de los datos transmitidos, pero estos plantean los problemas de que si se pierde la conexión perdemos el orden del identificador y ya no funciona. Pero la solución seria más fácil si los paquetes viejos se eliminaran de la subred cada cierto tiempo de vida. Para ello podemos utilizar las siguientes técnicas: Un diseño de subred Restringido. Colocar un contador de saltos en cada paquete. Marcar el tiempo de cada paquete. Pero en la práctica no vale solo con hacer esto sino que tenemos que garantizar que todas las confirmaciones de los paquetes también se eliminan.

### Liberación de una conexión

La liberación de una conexión es más fácil que su establecimiento. No obstante, hay más escollos de los que uno podría imaginar. Hay dos estilos de terminación de una conexión: liberación asimétrica y liberación simétrica. La liberación asimétrica es la manera en que funciona el mecanismo telefónico: cuando una parte cuelga, se interrumpe la conexión. La liberación simétrica trata la conexión como dos conexiones unidireccionales distintas, y requiere que cada una se libere por separado. La liberación asimétrica es abrupta y puede resultar en la perdida de datos. Por lo que es obvio que se requiere un protocolo de liberación más refinado para evitar la perdida de datos. Una posibilidad es usar la liberación simétrica, en la que cada dirección se libera independientemente de la otra. Aquí, un host puede continuar recibiendo datos aun tras haber enviado una TPDU de desconexión.
La liberación simétrica es ideal cuando un proceso tiene una cantidad fija de datos por enviar y sabe con certidumbre cuándo los ha enviado. En otras situaciones, la determinación de si se ha efectuado o no todo el trabajo y se debe terminarse o no la conexión no es tan obvia. Podríamos pensar en un protocolo en el que el host 1 diga:”Ya termine, ¿Terminaste también?”. Si el host 2 responde “Ya termine también. Adiós”, la conexión puede liberarse con seguridad.
Pero no es tan fiable por el problema de que siempre tendremos que esperar la confirmación de los mensajes recibidos y si esta confirmación no llega no libera la conexión y después puede que necesite la confirmación de que llego la confirmación y entraríamos en un bucle del que no podemos salir.
Podemos hacer que al host 1 si no le llega la confirmación después de N intentos (es que quiere la desconexión), se libere. Esto produce una conexión semiabierta en la que el host 1 está desconectado pero el host 2 no como no le llega la confirmación no se desconecta nunca. Para solucionar esto creamos una regla por la cual si al host 2 no le llega ninguna TPDU durante cierta cantidad de segundos, se libera automáticamente.

### Control de Flujo y almacenamiento en buffer

Ya examinamos la conexión y la desconexión, veamos la manera en que se manejan las conexiones mientras están en uso. Uno de los aspectos clave es el control de flujo. Necesitamos un esquema para evitar que un emisor rápido desborde a un receptor lento. La diferencia principal es que un enrutador por lo regular tiene relativamente pocas líneas, y un host puede tener numerosas conexiones. Esta diferencia hace poco practico emplear la implementación que se hace en la capa de enlace
En esta capa lo que se hace es, si el servicio de red no es confiable, el emisor debe almacenar en un buffer todas las TPDUs enviadas, igual que en la capa enlace de datos. Sin embargo, con un servicio de red confiable son posibles otros arreglos. En particular, si el emisor sabe que el receptor siempre tiene espacio de buffer, no necesita tener copias de las TPDUs que envía. Sin embargo, si el receptor no garantiza que se aceptará cada TPDU que llegue, el emisor tendrá que usar buffers de todas maneras. En el último caso, el emisor no puede confiar en la confirmación de recepción de la capa red porque esto sólo significa que ha llegado la TPDU, no que ha sido aceptada.
Los Buffers pueden ser de tres tipos, y usaremos cada uno de ellos cuando más nos convenga.
El equilibrio óptimo entre el almacenamiento del buffer en el origen y en el destino depende del tipo de trafico transportado por la conexión.

### Multiplexión

La multiplexión de varias conversaciones en conexiones, circuitos virtuales o enlaces físicos desempeña un papel importante en diferentes capas de la arquitectura de red. En la capa de transporte puede surgir la necesidad de multiplexión por varias razones. Por ejemplo, si en un host sólo se dispone de una dirección de red, todas la conexiones de transporte de esa maquina tendrán que utilizarla. Cuando llega una TPDU, se necesita algún mecanismo para saber a cuál proceso asignarla. Esta situación se conoce como multiplexión hacia arriba.
La multiplexión también puede ser útil en la capa transporte para la utilización de circuitos virtuales, que dan más ancho de banda cuando se reasigna a cada circuito una tasa máxima de datos. La solución es abrir múltiples conexiones de red y distribuir el tráfico entre ellas. Esto se denomina multiplexión hacia abajo.

### Recuperación de caídas

Si los hosts y los enrutadores están sujetos a caídas, la recuperación es fundamental. Si la entidad de transporte está por entero dentro de los hosts, la recuperación de caídas de red y de enrutadores es sencilla. Si la capa de red proporciona servicio de datagramas, las entidades de transporte esperan pérdida de algunas TPDUs todo el tiempo, y saben cómo manejarla. Si la capa de red proporciona servicio orientado a la conexión, entonces la pérdida de un circuito virtual se maneja estableciendo otro nuevo y sondeando la entidad de transporte remota para saber cuales TPDUs ha recibido y cuales no.
Un problema más complicado es la manera de recuperarse de caídas del host. Al reactivarse, sus tablas están en el estado inicial y no sabe con precisión donde estaba.
En un intento por recuperar su estado previo, el servidor podría enviar una TPDU de difusión a todos los demás host, anunciando que se acaba de caer y solicitando a todos sus clientes que le informen el estado de todas la conexiones abiertas.

## Capítulo 5: Protocolo IP en el nivel de red

El protocolo IP (Internet Protocol o protocolo de Internet) se ocupa del direccionamiento de los nodos y el ruteado de paquetes.
Actualmente, se utiliza la versión 4 de dicho protocolo (IPv4), si bien ya está implementada y en funcionamiento la versión IPv6.

### Cabecera IP

El protocolo IP es el que se ocupa del direccionamiento y ruteo de paquetes de datos. A cada paquete de datos se le agrega una cabecera con la información necesaria para realizar el ruteo. Cada nodo de la red, al recibir un paquete determina a que otro nodo debe ser enviado o en caso que el paquete haya agotado su tiempo de vida, simplemente no lo retransmite.
La cabecera IP esta dividida en 6 niveles: 1) Version/IHL/Tipo de servicios/Longitud Total 2) Identificacion/Indicadores/Desplazamiento de fragmentos 3) Tiempo de vida/Protocolo/Suma de comprobacion de la cabecera 4) Direccion IP de origen 5) Direccion IP de destino 6) Opciones/Relleno
Versión (4 bits): versión del protocolo IP (IPv4 o IPv6). IHL (4 bits): longitud total de la cabecera en unidades de 4 bytes. Tipo de servicios (8 bits): solicita determinadas calidad de transmicion: bajo retardo, alta tasa de transferencia, alta finalidad, bajo costo. Longitud total (16 bits): longitud del paquete que se envia Identificacion (16 bits): permite ensamblar paquetes fragmentados Indicadores (3 bits): permiten determinar si un paquete es fragmento de un paquete mayor o si se pueden fragmentar. Desplazamiento de fragmentos: indica la posicion de un fragmento dentro del paquete original. Tiempo de vida (8 bits): tiempo en segundos que el paquete puede existir en la red. Protocolo (8 bits): indica el protocolo utilizado en la parte de datos: -1 ICMP, internet control message -6 TCP, transsmision control -17 UDP, user datagram Suma de comprobacion de la cabecera (16 bits): verificacion de la informacion de la cabecera continua inalterada. Direccion IP de origen (32 bits): numero de 32 bits que identifica univocamente el modo emisor. Direccion IP de destino (32 bits): numero de 32 bits que identifica univocamente el modo receptor. Opciones (variable): los campos de opciones pueden ocupar un cierto espacio al final de la cabecera IP. Relleno (1..31 bits): conjunto de 0s para asegurar que la cabecera IP para asegurar que la cabecera es divisible en unidades de 4 bytes.
Cabecera IP :
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
| Versión (4 bits) | Versión (4 bits) | Versión (4 bits) | Versión (4 bits) | Tamaño Cabecera (4 bits) | Tamaño Cabecera (4 bits) | Tamaño Cabecera (4 bits) | Tamaño Cabecera (4 bits) | TOS Tipo de Servicio (8 bits) | TOS Tipo de Servicio (8 bits) | TOS Tipo de Servicio (8 bits) | TOS Tipo de Servicio (8 bits) | TOS Tipo de Servicio (8 bits) | TOS Tipo de Servicio (8 bits) | TOS Tipo de Servicio (8 bits) | TOS Tipo de Servicio (8 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) | Longitud Total (16 bits) |
| Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Identificador (ID del Fragmento) (16 bits) | Flags R-DF-MF (4 bits) | Flags R-DF-MF (4 bits) | Flags R-DF-MF (4 bits) | Flags R-DF-MF (4 bits) | Posición de Fragmento (13 bits) | Posición de Fragmento (13 bits) | Posición de Fragmento (13 bits) | Posición de Fragmento (13 bits) | Posición de Fragmento (13 bits) | Posición de Fragmento (13 bits) | Posición de Fragmento (13 bits) | Posición de Fragmento (13 bits) | Posición de Fragmento (13 bits) | Posición de Fragmento (13 bits) | Posición de Fragmento (13 bits) | Posición de Fragmento (13 bits) | Posición de Fragmento (13 bits) |
| TTL (8 bits) | TTL (8 bits) | TTL (8 bits) | TTL (8 bits) | TTL (8 bits) | TTL (8 bits) | TTL (8 bits) | TTL (8 bits) | Protocolo (8 bits) | Protocolo (8 bits) | Protocolo (8 bits) | Protocolo (8 bits) | Protocolo (8 bits) | Protocolo (8 bits) | Protocolo (8 bits) | Protocolo (8 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) | Checksum (16 bits) |
| Dirección IP de Origen (32 bits) ||||||||||||||||||||||||||||||||
| Dirección IP Destino (32 bits) ||||||||||||||||||||||||||||||||
| Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Opciones (Longitud variable) | Relleno (Longitud variable) | Relleno (Longitud variable) | Relleno (Longitud variable) | Relleno (Longitud variable) | Relleno (Longitud variable) | Relleno (Longitud variable) | Relleno (Longitud variable) | Relleno (Longitud variable) |
| Datos (Longitud variable) ||||||||||||||||||||||||||||||||

### Asignación de Direcciones IP

La asignación de direcciones IP puede hacerse en forma manual o automática.
En una LAN, la asignación manual tiene la ventaja de un mayor control por parte del administrador, lo cual, por ejemplo, permite identificar la ubicación física del equipo en base a su dirección IP.
Supongamos un edificio de oficinas, donde se decide utilizar una dirección privada clase A (10.0.0.0). Los tres bytes que identifican al host podrían indicar piso-oficina-equipo. De este modo, la dirección 10.4.5.12 identificaría a la PC 12, ubicada en la oficina 5 del cuarto piso.
El inconveniente que presenta la asignación manual, es que requiere de un control administrativo delicado para evitar direcciones duplicadas.
La asignación automática se realiza mediante DHCP (Dinamic Host Configuration Protocol). Esto requiere tener instalado un servidor DHCP (que puede correr en el servidor principal de la red) el cual se encarga de asignar a cada equipo que se conecta una dirección IP dentro de un rango determinado por el administrador. La configuración de los servidores DHCP permite reservar direcciones para asignación de IP fija a ciertos equipos (servidor principal, puerta de enlace, el propio servidor DHCP, etc).
La asignación automática desliga al administrador de la tarea de configurar cada nuevo equipo que se conecte a la red.

## Capítulo 6: Protocolos TCP y UDP en el nivel de transporte

En el nivel de transporte, encontramos dos protocolos ampliamente utilizados: TCP y UDP.

### Protocolo TCP

La descripción completa del protocolo TCP se encuentra en el documento RFC793 o su traducción al español. TCP (Transmission-Control-Protocol, en español Protocolo de Control de Transmisión) es de los protocolos fundamentales en Internet. Fue creado entre los años 1973 - 1974 por Vint Cerf y Robert Kahn.
Muchos programas dentro de una red de datos compuesta por computadoras pueden usar TCP para crear conexiones entre ellos a través de las cuales puede enviarse un flujo de datos. El protocolo garantiza que los datos serán entregados en su destino sin errores y en el mismo orden en que se transmitieron. También proporciona un mecanismo para distinguir distintas aplicaciones dentro de una misma máquina, a través del concepto de puerto.
TCP da soporte a muchas de las aplicaciones más populares de Internet, incluidas HTTP, SMTP, SSH y FTP.
TCP es un protocolo de comunicación orientado a conexión y fiable del nivel de transporte, actualmente documentado por IETF en el RFC 793. Es un protocolo de capa 4 según el modelo OSI.

#### Funciones de TCP

En la pila de protocolos TCP/IP, TCP es la capa intermedia entre el protocolo de internet (IP) y la aplicación. Habitualmente, las aplicaciones necesitan que la comunicación sea fiable y, dado que la capa IP aporta un servicio de datagramas no fiable (sin confirmación), TCP añade las funciones necesarias para prestar un servicio que permita que la comunicación entre dos sistemas se efectúe libre de errores, sin pérdidas y con seguridad.
Los servicios provistos por TCP corren en el anfitrión (host) de cualquiera de los extremos de una conexión, no en la red. Por lo tanto, TCP es un protocolo para manejar conexiones de extremo a extremo. Tales conexiones pueden existir a través de una serie de conexiones punto a punto, por lo que estas conexiones extremo-extremo son llamadas circuitos virtuales. Las características del TCP son:
* Orientado a la conexión: dos computadoras establecen una conexión para intercambiar datos. Los sistemas de los extremos se sincronizan con el otro para manejar el flujo de paquetes y adaptarse a la congestión de la red.
* Operación Full-Duplex: una conexión TCP es un par de circuitos virtuales, cada uno en una dirección. Sólo los dos sistemas finales sincronizados pueden usar la conexión.
* Error Checking: una técnica de checksum es usada para verificar que los paquetes no estén corruptos.
* Acknowledgements: sobre recibo de uno o más paquetes, el receptor regresa un acknowledgement (reconocimiento) al transmisor indicando que recibió los paquetes. Si los paquetes no son notificados, el transmisor puede reenviar los paquetes o terminar la conexión si el transmisor cree que el receptor no está más en la conexión.
* Flow Control: si el transmisor está desbordando el buffer del receptor por transmitir demasiado rápido, el receptor descarta paquetes. Los acknowledgement fallidos que llegan al transmisor le alertan para bajar la tasa de transferencia o dejar de transmitir.
* Servicio de recuperación de Paquetes: el receptor puede pedir la retransmisión de un paquete. Si el paquete no es notificado como recibido (ACK), el transmisor envía de nuevo el paquete.
Los servicios confiables de entrega de datos son críticos para aplicaciones tales como transferencias de archivos (FTP por ejemplo), servicios de bases de datos, proceso de transacciones y otras aplicaciones de misión crítica en las cuales la entrega de cada paquete debe ser garantizada.

#### Formato de los Segmentos TCP

En el nivel de transporte, los paquetes de bits que constituyen las unidades de datos de protocolo o PDU ('Protocol Data Unit') se llaman "segmentos". El formato de los segmentos TCP se muestra en el siguiente esquema:
| + | Bits 0 - 3 | Bits 0 - 3 | Bits 0 - 3 | Bits 0 - 3 | 4 - 7 | 4 - 7 | 4 - 7 | 4 - 7 | 8 - 15 | 8 - 15 | 8 - 15 | 8 - 15 | 8 - 15 | 8 - 15 | 8 - 15 | 8 - 15 | 16 - 31 | 16 - 31 | 16 - 31 | 16 - 31 | 16 - 31 | 16 - 31 | 16 - 31 | 16 - 31 | 16 - 31 | 16 - 31 | 16 - 31 | 16 - 31 | 16 - 31 | 16 - 31 | 16 - 31 | 16 - 31 |
| 0 | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Origen | Puerto Destino | Puerto Destino | Puerto Destino | Puerto Destino | Puerto Destino | Puerto Destino | Puerto Destino | Puerto Destino | Puerto Destino | Puerto Destino | Puerto Destino | Puerto Destino | Puerto Destino | Puerto Destino | Puerto Destino | Puerto Destino |
| 32 | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia | Número de Secuencia |
| 64 | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) | Número de Acuse de Recibo (ACK) |
| 96 | longitud cabecera TCP | longitud cabecera TCP | longitud cabecera TCP | longitud cabecera TCP | Reservado | Reservado | Reservado | Reservado | Flags | Flags | Flags | Flags | Flags | Flags | Flags | Flags | Ventana | Ventana | Ventana | Ventana | Ventana | Ventana | Ventana | Ventana | Ventana | Ventana | Ventana | Ventana | Ventana | Ventana | Ventana | Ventana |
| 128 | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Suma de Verificación (Checksum) | Puntero Urgente | Puntero Urgente | Puntero Urgente | Puntero Urgente | Puntero Urgente | Puntero Urgente | Puntero Urgente | Puntero Urgente | Puntero Urgente | Puntero Urgente | Puntero Urgente | Puntero Urgente | Puntero Urgente | Puntero Urgente | Puntero Urgente | Puntero Urgente |
| 160 | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) | Opciones + Relleno (opcional) |
| 224 | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos | Datos |

#### Datos

Las aplicaciones envían flujos de bytes a la capa TCP para ser enviados a la red. TCP divide el flujo de bytes llegado de la aplicación en segmentos de tamaño apropiado (normalmente esta limitación viene impuesta por la unidad máxima de transferencia (MTU) del nivel de enlace de datos de la red a la que la entidad está asociada) y le añade sus cabeceras. Entonces, TCP pasa el segmento resultante a la capa IP, donde a través de la red, llega a la capa TCP de la entidad destino. TCP comprueba que ningún segmento se ha perdido dando a cada uno un número de secuencia, que es también usado para asegurarse de que los paquetes han llegado a la entidad destino en el orden correcto. TCP devuelve un reconocimiento por bytes que han sido recibidos correctamente; un temporizador en la entidad origen del envío causará un timeout si el asentimiento no es recibido en un tiempo razonable, y el (presuntamente desaparecido) paquete será entonces retransmitido. TCP revisa que no haya bytes dañados durante el envío usando un checksum; es calculado por el emisor en cada paquete antes de ser enviado, y comprobado por el receptor.
* Puerto de origen (16 bits): Identifica el puerto a través del que se envía.
* Puerto destino (16 bits): Identifica el puerto del receptor.
* Número de secuencia (32 bits): Sirve para comprobar que ningún segmento se ha perdido, y que llegan en el orden correcto. Su significado varía dependiendo del valor de SYN:
* Si el flag SYN está activo (1), entonces este campo indica el número inicial de secuencia (con lo cual el número de secuencia del primer byte de datos será este número de secuencia más uno).
* Si el flag SYN no está activo (0), entonces este campo indica el número de secuencia del primer byte de datos.
* Número de acuse de recibo (ACK) (32 bits): Si el flag ACK está puesto a activo, entonces en este campo contiene el número de secuencia del siguiente paquete que el receptor espera recibir.
* Longitud de la cabecera TCP (4 bits): Especifica el tamaño de la cabecera TCP en palabras de 32-bits. El tamaño mínimo es de 5 palabras, y el máximo es de 15 palabras (lo cual equivale a un tamaño mínimo de 20 bytes y a un máximo de 60 bytes). En inglés el campo se denomina “Data offset”, que literalmente sería algo así como “desplazamiento hasta los datos”, ya que indica cuántos bytes hay entre el inicio del paquete TCP y el inicio de los datos.
* Reservado (4 bits): Bits reservados para uso futuro, deberían ser puestos a cero.
* Bits de control (flags) (8 bits): Son 8 flags o banderas. Cada una indica “activa” con un 1 o “inactiva” con un 0.
* CWR o “Congestion Window Reduced” (1 bit): Este flag se activa (se pone a 1) por parte del emisor para indicar que ha recibido un paquete TCP con el flag ECE activado. El flag ECE es una extensión del protocolo que fue añadida a la cabecera en el RFC 3168. Se utiliza para el control de la congestión en la red.
* ECE o “ECN-Echo” (1 bit): Indica que el receptor puede realizar notificaciones ECN. La activación de este flag se realiza durante la negociación en tres pasos para el establecimiento de la conexión. Este flag también fue añadido a la cabecera en el RFC 3168.
* URG o “urgent” (1 bit, ver URG): Si está activo significa que el campo “Urgente” es significativo, si no, el valor de este campo es ignorado.
* ACK o “acknowledge” (1 bit, ver ACK): Si está activo entonces el campo con el número de acuse de recibo es válido (si no, es ignorado).
* PSH o “push” (1 bit, ver PSH): Activa/desactiva la función que hace que los datos de ese segmento y los datos que hayan sido almacenados anteriormente en el buffer del receptor deben ser transferidos a la aplicación receptora lo antes posible.
* RST o “reset” (1 bit, ver Flag RST): Si llega a 1, termina la conexión sin esperar respuesta.
* SYN o “synchronize” (1 bit, ver SYN): Activa/desactiva la sincronización de los números de secuencia.
* FIN (1 bit, ver FIN): Si se activa es porque no hay más datos a enviar por parte del emisor, esto es, el paquete que lo lleva activo es el último de una conexión.
* Ventana (16 bits): Es el tamaño de la ventana de recepción, que especifica el número de bytes que el receptor está actualmente esperando recibir.
* Suma de verificación (checksum) (16 bits): Es una suma de verificación utilizada para comprobar si hay errores tanto en la cabecera como en los datos.
* Puntero urgente (16 bits): Si el flag URG está activado, entonces este campo indica el desplazamiento respecto al número de secuencia que indica el último byte de datos marcados como “urgentes”.
* Opciones (número de bits variable): La longitud total del campo de opciones ha de ser múltiplo de una palabra de 32 bits (si es menor, se ha de rellenar al múltiplo más cercano), y el campo que indica la longitud de la cabecera ha de estar ajustado de forma adecuada.
* Datos (número de bits variable): No forma parte de la cabecera, es la carga (payload), la parte con los datos del paquete TCP. Pueden ser datos de cualquier protocolo de nivel superior en el nivel de aplicación; los protocolos más comunes para los que se usan los datos de un paquete TCP son HTTP, telnet, SSH, FTP, etcétera.

#### Detalles del funcionamiento

Las conexiones TCP se componen de tres etapas: establecimiento de conexión, transferencia de datos y fin de la conexión. Para establecer la conexión se usa el procedimiento llamado negociación en tres pasos (3-way handshake). Una negociación en cuatro pasos (4-way handshake) es usada para la desconexión. Durante el establecimiento de la conexión, algunos parámetros como el número de secuencia son configurados para asegurar la entrega ordenada de los datos y la robustez de la comunicación.

#### Establecimiento de la negociación

Aunque es posible que un par de entidades finales comiencen una conexión entre ellas simultáneamente, normalmente una de ellas abre un socket en un determinado puerto tcp y se queda a la escucha de nuevas conexiones. Es común referirse a esto como apertura pasiva, y determina el lado servidor de una conexión. El lado cliente de una conexión realiza una apertura activa de un puerto enviando un paquete SYN inicial al servidor como parte de la negociación en tres pasos. En el lado del servidor se comprueba si el puerto está abierto, es decir, si existe algún proceso escuchando en ese puerto. En caso de no estarlo, se envía al cliente un paquete de respuesta con el bit RST activado, lo que significa el rechazo del intento de conexión. En caso de que sí se encuentre abierto el puerto, el lado servidor respondería a la petición SYN válida con un paquete SYN/ACK. Finalmente, el cliente debería responderle al servidor con un ACK, completando así la negociación en tres pasos (SYN, SYN/ACK y ACK) y la fase de establecimiento de conexión.

#### Transferencia de datos

Durante la etapa de transferencia de datos, una serie de mecanismos claves determinan la fiabilidad y robustez del protocolo. Entre ellos están incluidos el uso del número de secuencia para ordenar los segmentos TCP recibidos y detectar paquetes duplicados, checksums para detectar errores, y asentimientos y temporizadores para detectar pérdidas y retrasos.
Durante el establecimiento de conexión TCP, los números iniciales de secuencia son intercambiados entre las dos entidades TCP. Estos números de secuencia son usados para identificar los datos dentro del flujo de bytes, y poder identificar (y contar) los bytes de los datos de la aplicación. Siempre hay un par de números de secuencia incluidos en todo segmento TCP, referidos al número de secuencia y al número de asentimiento. Un emisor TCP se refiere a su propio número de secuencia cuando habla de número de secuencia, mientras que con el número de asentimiento se refiere al número de secuencia del receptor. Para mantener la fiabilidad, un receptor asiente los segmentos TCP indicando que ha recibido una parte del flujo continuo de bytes. Una mejora de TCP, llamada asentimiento selectivo (SACK, Selective Acknowledgement) permite a un receptor TCP asentir los datos que se han recibido de tal forma que el remitente solo retransmita los segmentos de datos que faltan.
A través del uso de números de secuencia y asentimiento, TCP puede pasar los segmentos recibidos en el orden correcto dentro del flujo de bytes a la aplicación receptora. Los números de secuencia son de 32 bits (sin signo), que vuelve a cero tras el siguiente byte después del 232-1. Una de las claves para mantener la robustez y la seguridad de las conexiones TCP es la selección del número inicial de secuencia (ISN, Initial Sequence Number).
Un checksum de 16 bits, consistente en el complemento a uno de la suma en complemento a uno del contenido de la cabecera y datos del segmento TCP, es calculado por el emisor, e incluido en la transmisión del segmento. Se usa la suma en complemento a uno porque el acarreo final de ese método puede ser calculado en cualquier múltiplo de su tamaño (16-bit, 32-bit, 64-bit...) y el resultado, una vez plegado, será el mismo. El receptor TCP recalcula el checksum sobre las cabeceras y datos recibidos. El complemento es usado para que el receptor no tenga que poner a cero el campo del checksum de la cabecera antes de hacer los cálculos, salvando en algún lugar el valor del checksum recibido; en vez de eso, el receptor simplemente calcula la suma en complemento a uno con el checksum incluido, y el resultado debe ser igual a 0. Si es así, se asume que el segmento ha llegado intacto y sin errores.
Hay que fijarse en que el checksum de TCP también cubre los 96 bit de la cabecera que contiene la dirección origen, la dirección destino, el protocolo y el tamaño TCP. Esto proporciona protección contra paquetes mal dirigidos por errores en las direcciones.
El checksum de TCP es una comprobación bastante débil. En niveles de enlace con una alta probabilidad de error de bit quizá requiera una capacidad adicional de corrección/detección de errores de enlace. Si TCP fuese rediseñado hoy, muy probablemente tendría un código de redundancia cíclica (CRC) para control de errores en vez del actual checksum. La debilidad del checksum está parcialmente compensada por el extendido uso de un CRC en el nivel de enlace, bajo TCP e IP, como el usado en el PPP o en Ethernet. Sin embargo, esto no significa que el checksum de 16 bits es redundante: sorprendentemente, inspecciones sobre el tráfico de Internet han mostrado que son comunes los errores de software y hardware[cita requerida] que introducen errores en los paquetes protegidos con un CRC, y que el checksum de 16 bits de TCP detecta la mayoría de estos errores simples.
Los asentimientos (ACKs o Acknowledgments) de los datos enviados o la falta de ellos, son usados por los emisores para interpretar las condiciones de la red entre el emisor y receptor TCP. Unido a los temporizadores, los emisores y receptores TCP pueden alterar el comportamiento del movimiento de datos. TCP usa una serie de mecanismos para conseguir un alto rendimiento y evitar la congestión de la red (la idea es enviar tan rápido como el receptor pueda recibir). Estos mecanismos incluyen el uso de ventana deslizante, que controla que el transmisor mande información dentro de los límites del buffer del receptor, y algoritmos de control de flujo, tales como el algoritmo de Evitación de la Congestión (congestion avoidance), el de comienzo lento (Slow-start), el de retransmisión rápida, el de recuperación rápida (Fast Recovery), y otros.
Es interesante notar que existe un número de secuencia generado por cada lado, ayudando de este modo a que no se puedan establecer conexiones falseadas (spoofing).

#### Tamaño de ventana

El tamaño de la ventana de recepción TCP es la cantidad de datos recibidos (en bytes) que pueden ser metidos en el buffer de recepción durante la conexión. La entidad emisora puede enviar una cantidad determinada de datos pero antes debe esperar un asentimiento con la actualización del tamaño de ventana por parte del receptor.
Un ejemplo sería el siguiente: un receptor comienza con un tamaño de ventana x y recibe y bytes, entonces su tamaño de ventana será (x - y) y el transmisor sólo podrá mandar paquetes con un tamaño máximo de datos de (x - y) bytes. Los siguientes paquetes recibidos seguirán restando tamaño a la ventana de recepción. Esta situación seguirá así hasta que la aplicación receptora recoja los datos del buffer de recepción. Para una mayor eficiencia en redes de gran ancho de banda, debe ser usado un tamaño de ventana mayor. El campo TCP de tamaño de ventana controla el movimiento de datos y está limitado a 16 bits, es decir, a un tamaño de ventana de 65.535 bytes.

#### Escalado de ventana

Como el campo de ventana no puede expandirse se usa un factor de escalado. La escala de ventana TCP (TCP window scale) es una opción usada para incrementar el máximo tamaño de ventana desde 65.535 bytes, a 1 Gigabyte.
La opción de escala de ventana TCP es usada solo durante la negociación en tres pasos que constituye el comienzo de la conexión. El valor de la escala representa el número de bits desplazados a la izquierda de los 16 bits que forman el campo del tamaño de ventana. El valor de la escala puede ir desde 0 (sin desplazamiento) hasta 14. Hay que recordar que un número binario desplazado un bit a la izquierda es como multiplicarlo en base decimal por 2.

#### Fin de la conexión

La fase de finalización de la conexión usa una negociación en cuatro pasos (four-way handshake), terminando la conexión desde cada lado independientemente. Cuando uno de los dos extremos de la conexión desea parar su "mitad" de conexión transmite un paquete FIN, que el otro interlocutor asentirá con un ACK. Por tanto, una desconexión típica requiere un par de segmentos FIN y ACK desde cada lado de la conexión.
Una conexión puede estar "medio abierta" en el caso de que uno de los lados la finalice pero el otro no. El lado que ha dado por finalizada la conexión no puede enviar más datos pero la otra parte si podrá.

#### Puertos TCP

TCP usa el concepto de número de puerto para identificar a las aplicaciones emisoras y receptoras. Cada lado de la conexión TCP tiene asociado un número de puerto (de 16 bits sin signo, con lo que existen 65536 puertos posibles) asignado por la aplicación emisora o receptora. Los puertos son clasificados en tres categorías: bien conocidos, registrados y dinámicos/privados. Los puertos bien conocidos son asignados por la Internet Assigned Numbers Authority (IANA), van del 0 al 1023 y son usados normalmente por el sistema o por procesos con privilegios. Las aplicaciones que usan este tipo de puertos son ejecutadas como servidores y se quedan a la escucha de conexiones. Algunos ejemplos son: FTP (21), SSH (22), Telnet (23), SMTP (25) y HTTP (80). Los puertos registrados son normalmente empleados por las aplicaciones de usuario de forma temporal cuando conectan con los servidores, pero también pueden representar servicios que hayan sido registrados por un tercero (rango de puertos registrados: 1024 al 49151). Los puertos dinámicos/privados también pueden ser usados por las aplicaciones de usuario, pero este caso es menos común. Los puertos dinámicos/privados no tienen significado fuera de la conexión TCP en la que fueron usados (rango de puertos dinámicos/privados: 49152 al 65535, recordemos que el rango total de 2 elevado a la potencia 16, cubre 65536 números, del 0 al 65535).

#### Desarrollo de TCP

TCP es un protocolo muy desarrollado y complejo. Sin embargo, mientras mejoras significativas han sido propuestas y llevadas a cabo a lo largo de los años, ha conservado las operaciones más básicas sin cambios desde el RFC 793, publicado en 1981. El documento RFC 1122 (Host Requirements for Internet Hosts), especifica el número de requisitos de una implementación del protocolo TCP. El RFC 2581 (Control de Congestión TCP) es uno de los más importantes documentos relativos a TCP de los últimos años, describe nuevos algoritmos para evitar la congestión excesiva. En 2001, el RFC 3168 fue escrito para describir la Notificación de Congestión Explícita (ECN), una forma de eludir la congestión con mecanismos de señalización. En los comienzos del siglo XXI, TCP es usado en el 95% de todos los paquetes que circulan por Internet. Entre las aplicaciones más comunes que usan TCP están HTTP/HTTPS (World Wide Web), SMTP/POP3/IMAP (correo electrónico) y FTP (transferencia de ficheros). Su amplia extensión ha sido la prueba para los desarrolladores originales de que su creación estaba excepcionalmente bien hecha.
Recientemente, un nuevo algoritmo de control de congestión fue desarrollado y nombrado como FAST TCP (Fast Active queue management Scalable Transmission Control Protocol) por los científicos de Caltech (California Institute of Technology). Es similar a TCP Vegas en cuanto a que ambos detectan la congestión a partir de los retrasos en las colas que sufren los paquetes al ser enviados a su destino. Todavía hay un debate abierto sobre si éste es un síntoma apropiado para el control de la congestión.

### Protocolo UDP

La descripción completa del protocolo UDP se encuentra en el documento RFC768 o su traducción al español.
User Datagram Protocol (UDP) es un protocolo del nivel de transporte basado en el intercambio de datagramas. Permite el envío de datagramas a través de la red sin que se haya establecido previamente una conexión, ya que el propio datagrama incorpora suficiente información de direccionamiento en su cabecera. Tampoco tiene confirmación ni control de flujo, por lo que los paquetes pueden adelantarse unos a otros; y tampoco se sabe si ha llegado correctamente, ya que no hay confirmación de entrega o recepción. Su uso principal es para protocolos como DHCP, BOOTP, DNS y demás protocolos en los que el intercambio de paquetes de la conexión/desconexión son mayores, o no son rentables con respecto a la información transmitida, así como para la transmisión de audio y vídeo en tiempo real, donde no es posible realizar retransmisiones por los estrictos requisitos de retardo que se tiene en estos casos.

#### Descripción

User Datagram Protocol (UDP) es un protocolo mínimo de nivel de transporte orientado a mensajes documentado en el RFC 768 de la IETF.
En la familia de protocolos de Internet UDP proporciona una sencilla interfaz entre la capa de red y la capa de aplicación. UDP no otorga garantías para la entrega de sus mensajes y el origen UDP no retiene estados de los mensajes UDP que han sido enviados a la red. UDP sólo añade multiplexado de aplicación y suma de verificación de la cabecera y la carga útil. Cualquier tipo de garantías para la transmisión de la información deben ser implementadas en capas superiores.
La cabecera UDP consta de 4 campos de los cuales 2 son opcionales (con fondo rojo en la tabla). Los campos de los puertos fuente y destino son campos de 16 bits que identifican el proceso de origen y recepción. Ya que UDP carece de un servidor de estado y el origen UDP no solicita respuestas, el puerto origen es opcional. En caso de no ser utilizado, el puerto origen debe ser puesto a cero. A los campos del puerto destino le sigue un campo obligatorio que indica el tamaño en bytes del datagrama UDP incluidos los datos. El valor mínimo es de 8 bytes. El campo de la cabecera restante es una suma de comprobación de 16 bits que abarca la cabecera, los datos y una pseudo-cabecera con las IP origen y destino, el protocolo, la longitud del datagrama y 0's hasta completar un múltiplo de 16. pero no los datos. El checksum también es opcional, aunque generalmente se utiliza en la práctica.
El protocolo UDP se utiliza por ejemplo cuando se necesita transmitir voz o vídeo y resulta más importante transmitir con velocidad que garantizar el hecho de que lleguen absolutamente todos los bytes.

#### Puertos

UDP utiliza puertos para permitir la comunicación entre aplicaciones. El campo de puerto tiene una longitud de 16 bits, por lo que el rango de valores válidos va de 0 a 65.535. El puerto 0 está reservado, pero es un valor permitido como puerto origen si el proceso emisor no espera recibir mensajes como respuesta.
Los puertos 1 a 1023 se llaman puertos "bien conocidos" y en sistemas operativos tipo Unix enlazar con uno de estos puertos requiere acceso como superusuario.
Los puertos 1024 a 49.151 son puertos registrados.
Los puertos 49.152 a 65.535 son puertos efímeros y son utilizados como puertos temporales, sobre todo por los clientes al comunicarse con los servidores.

#### Ejemplo en python

El siguiente ejemplo muestra cómo usar el protocolo UDP para una comunicación cliente/servidor:
Servidor:

#### Ejemplo en C++

El siguiente ejemplo muestra cómo usar el protocolo UDP para una comunicación cliente/servidor:
Servidor:
Cliente (Cambia "127.0.0.1" por la dirección IP del servidor):

### Comparativa entre UDP y TCP
#### UDP

    Proporciona un nivel de transporte no fiable de datagramas, ya que apenas añade la información necesaria para la comunicación extremo a extremo al paquete que envía al nivel inferior. Lo utilizan aplicaciones como NFS (Network File System) y RCP (comando para copiar ficheros entre ordenadores remotos), pero sobre todo se emplea en tareas de control y en la transmisión de audio y vídeo a través de una red. No introduce retardos para establecer una conexión, no mantiene estado de conexión alguno y no realiza seguimiento de estos parámetros. Así, un servidor dedicado a una aplicación particular puede soportar más clientes activos cuando la aplicación corre sobre UDP en lugar de sobre TCP.

#### TCP

    Es el protocolo que proporciona un transporte fiable de flujo de bits entre aplicaciones. Está pensado para poder enviar grandes cantidades de información de forma fiable, liberando al programador de la dificultad de gestionar la fiabilidad de la conexión (retransmisiones, pérdida de paquetes, orden en el que llegan los paquetes, duplicados de paquetes...) que gestiona el propio protocolo. Pero la complejidad de la gestión de la fiabilidad tiene un coste en eficiencia, ya que para llevar a cabo las gestiones anteriores se tiene que añadir bastante información a los paquetes que enviar. Debido a que los paquetes para enviar tienen un tamaño máximo, cuanta más información añada el protocolo para su gestión, menos información que proviene de la aplicación podrá contener ese paquete (el segmento TCP tiene una sobrecarga de 20 bytes en cada segmento, mientras que UDP solo añade 8 bytes). Por eso, cuando es más importante la velocidad que la fiabilidad, se utiliza UDP. En cambio, TCP asegura la recepción en destino de la información para transmitir.

#### Transmisión de vídeo y voz

UDP es generalmente el protocolo usado en la transmisión de vídeo y voz a través de una red. Esto es porque no hay tiempo para enviar de nuevo paquetes perdidos cuando se está escuchando a alguien o viendo un vídeo en tiempo real.
Ya que tanto TCP como UDP circulan por la misma red, en muchos casos ocurre que el aumento del tráfico UDP daña el correcto funcionamiento de las aplicaciones TCP. Por defecto, TCP pasa a un segundo lugar para dejar a los datos en tiempo real usar la mayor parte del ancho de banda. El problema es que ambos son importantes para la mayor parte de las aplicaciones, por lo que encontrar el equilibrio entre ambos es crucial.

#### Lista de puertos UDP

Números de puerto bien conocidos usados por TCP y UDP. También se añade algún otro puerto no asignado oficialmente por IANA, pero de interés general dado el uso extendido que le da alguna aplicación.
| Puerto/protocolo | Descripción |
| n/d / GRE | GRE (protocolo IP 47) Enrutamiento y acceso remoto |
| n/d / ESP | IPSec ESP (protocolo IP 50) Enrutamiento y acceso remoto |
| n/d / AH | IPSec AH (protocolo IP 51) Enrutamiento y acceso remoto |
| 1/tcp | Multiplexor TCP |
| 7/tcp | Protocolo Echo (Eco) Reponde con eco a llamadas remotas |
| 7/udp | Protocolo Echo (Eco) Reponde con eco a llamadas remotas |
| 9/tcp | Protocolo Discard Elimina cualquier dato que recibe |
| 9/udp | Protocolo Discard Elimina cualquier dato que recibe |
| 13/tcp | Protocolo Daytime Fecha y hora actuales |
| 17/tcp | Quote of the Day (Cita del Día) |
| 19/tcp | Protocolo Chargen Generador de caractéres |
| 19/udp | Protocolo Chargen Generador de caractéres |
| 20/tcp | FTP File Transfer Protocol (Protocolo de Transferencia de Ficheros) - datos |
| 21/tcp | FTP File Transfer Protocol (Protocolo de Transferencia de Ficheros) - control |
| 22/tcp | SSH, scp, SFTP |
| 23/tcp | Telnet comunicaciones de texto inseguras |
| 25/tcp | SMTP Simple Mail Transfer Protocol (Protocolo Simple de Transferencia de Correo) |
| 37/tcp | time |
| 43/tcp | nicname |
| 53/tcp | DNS Domain Name System (Sistema de Nombres de Dominio) |
| 53/udp | DNS Domain Name System (Sistema de Nombres de Dominio) |
| 67/udp | BOOTP BootStrap Protocol (Server), también usado por DHCP |
| 68/udp | BOOTP BootStrap Protocol (Client), también usado por DHCP |
| 69/udp | TFTP Trivial File Transfer Protocol (Protocolo Trivial de Transferencia de Ficheros) |
| 70/tcp | Gopher |
| 79/tcp | Finger |
| 80/tcp | HTTP HyperText Transfer Protocol (Protocolo de Transferencia de HiperTexto) (WWW) |
| 88/tcp | Kerberos Agente de autenticación |
| 110/tcp | POP3 Post Office Protocol (E-mail) |
| 111/tcp | sunrpc |
| 113/tcp | ident (auth) antiguo sistema de identificación |
| 119/tcp | NNTP usado en los grupos de noticias de usenet |
| 123/udp | NTP Protocolo de sincronización de tiempo |
| 123/tcp | NTP Protocolo de sincronización de tiempo |
| 135/tcp | epmap |
| 137/tcp | NetBIOS Servicio de nombres |
| 137/udp | NetBIOS Servicio de nombres |
| 138/tcp | NetBIOS Servicio de envío de datagramas |
| 138/udp | NetBIOS Servicio de envío de datagramas |
| 139/tcp | NetBIOS Servicio de sesiones |
| 139/udp | NetBIOS Servicio de sesiones |
| 143/tcp | IMAP4 Internet Message Access Protocol (E-mail) |
| 161/tcp | SNMP Simple Network Management Protocol |
| 161/udp | SNMP Simple Network Management Protocol |
| 162/tcp | SNMP-trap |
| 162/udp | SNMP-trap |
| 177/tcp | XDMCP Protocolo de gestión de displays en X11 |
| 177/udp | XDMCP Protocolo de gestión de displays en X11 |
| 389/tcp | LDAP Protocolo de acceso ligero a Bases de Datos |
| 389/udp | LDAP Protocolo de acceso ligero a Bases de Datos |
| 443/tcp | HTTPS/SSL usado para la transferencia segura de páginas web |
| 445/tcp | Microsoft-DS (Active Directory, compartición en Windows, gusano Sasser, Agobot) |
| 445/udp | Microsoft-DS compartición de ficheros |
| 500/udp | IPSec ISAKMP, Autoridad de Seguridad Local |
| 512/tcp | exec |
| 513/tcp | login |
| 514/udp | syslog usado para logs del sistema |
| 520/udp | RIP |
| 591/tcp | FileMaker 6.0 (alternativa para HTTP, ver puerto 80) |
| 631/tcp | CUPS sistema de impresión de Unix |
| 666/tcp | identificación de Doom para jugar sobre TCP |
| 993/tcp | IMAP4 sobre SSL (E-mail) |
| 995/tcp | POP3 sobre SSL (E-mail) |
| 1080/tcp | SOCKS Proxy |
| 1337/tcp | suele usarse en máquinas comprometidas o infectadas |
| 1352/tcp | IBM Lotus Notes/Domino RCP |
| 1433/tcp | Microsoft-SQL-Server |
| 1434/tcp | Microsoft-SQL-Monitor |
| 1434/udp | Microsoft-SQL-Monitor |
| 1494/tcp | Citrix MetaFrame Cliente ICA |
| 1512/tcp | WINS |
| 1521/tcp | Oracle listener por defecto |
| 1701/udp | Enrutamiento y Acceso Remoto para VPN con L2TP. |
| 1723/tcp | Enrutamiento y Acceso Remoto para VPN con PPTP. |
| 1761/tcp | Novell Zenworks Remote Control utility |
| 1863/tcp | MSN Messenger |
| 1935/??? | FMS Flash Media Server |
| 2049/tcp | NFS Archivos del sistema de red |
| 2082/tcp | CPanel puerto por defecto |
| 2086/tcp | Web Host Manager puerto por defecto |
| 2427/upd | Cisco MGCP |
| 3030/tcp | NetPanzer |
| 3030/upd | NetPanzer |
| 3128/tcp | HTTP usado por web caches y por defecto en Squid cache |
| 3128/tcp | NDL-AAS |
| 3306/tcp | MySQL sistema de gestión de bases de datos |
| 3389/tcp | RDP (Remote Desktop Protocol) |
| 3396/tcp | Novell agente de impresión NDPS |
| 3690/tcp | Subversion (sistema de control de versiones) |
| 4662/tcp | eMule (aplicación de compartición de ficheros) |
| 4672/udp | eMule (aplicación de compartición de ficheros) |
| 4899/tcp | RAdmin (Remote Administrator), herramienta de administración remota (normalmente troyanos) |
| 5000/tcp | Universal plug-and-play |
| 5060/udp | Session Initiation Protocol (SIP) |
| 5190/tcp | AOL y AOL Instant Messenger |
| 5222/tcp | XMPP/Jabber conexión de cliente |
| 5223/tcp | XMPP/Jabber puerto por defecto para conexiones de cliente SSL |
| 5269/tcp | XMPP/Jabber conexión de servidor |
| 5432/tcp | PostgreSQL sistema de gestión de bases de datos |
| 5517/tcp | Setiqueue proyecto SETI@Home |
| 5631/tcp | PC-Anywhere protocolo de escritorio remoto |
| 5632/udp | PC-Anywhere protocolo de escritorio remoto |
| 5400/tcp | VNC protocolo de escritorio remoto (usado sobre HTTP) |
| 5500/tcp | VNC protocolo de escritorio remoto (usado sobre HTTP) |
| 5600/tcp | VNC protocolo de escritorio remoto (usado sobre HTTP) |
| 5700/tcp | VNC protocolo de escritorio remoto (usado sobre HTTP) |
| 5800/tcp | VNC protocolo de escritorio remoto (usado sobre HTTP) |
| 5900/tcp | VNC protocolo de escritorio remoto (conexión normal) |
| 6000/tcp | X11 usado para X-windows |
| 6112/udp | Blizzard |
| 6129/tcp | Dameware Software conexión remota |
| 6346/tcp | Gnutella compartición de ficheros (Limewire, etc.) |
| 6347/udp | Gnutella |
| 6348/udp | Gnutella |
| 6349/udp | Gnutella |
| 6350/udp | Gnutella |
| 6355/udp | Gnutella |
| 6667/tcp | IRC IRCU Internet Relay Chat |
| 6881/tcp | BitTorrent puerto por defecto |
| 6969/tcp | BitTorrent puerto de tracker |
| 7100/tcp | Servidor de Fuentes X11 |
| 7100/udp | Servidor de Fuentes X11 |
| 8000/tcp | iRDMI por lo general, usado erróneamente en sustitución de 8080. También utilizado en el servidor de streaming ShoutCast. |
| 8080/tcp | HTTP HTTP-ALT ver puerto 80. Tomcat lo usa como puerto por defecto. |
| 8118/tcp | privoxy |
| 9009/tcp | Pichat peer-to-peer chat server |
| 9898/tcp | Gusano Dabber (troyano/virus) |
| 10000/tcp | Webmin (Administración remota web) |
| 19226/tcp | Panda SecurityPuerto de comunicaciones de Panda Agent. |
| 12345/tcp | NetBus en:NetBus (troyano/virus) |
| 31337/tcp | Back Orifice herramienta de administración remota (por lo general troyanos) |

## Capítulo 7: Protocolos TCP/IP en el nivel de sesión

Para que dos equipos puedan intercambiar información entre sí, debe establecerse una sesión o conexión entre ambos.
Esta sesión hace transparente los niveles inferiores, vale decir que es independiente de los protocolos de enlace de datos o los medios físicos involucrados.
Para que esto sea posible, en cada equipo se habilita un puerto para cada protocolo de presentación utilizado.
Un puerto es un número de 2 bytes que puede asignarse arbitrariamente, si bien existe una serie de números de puerto que se asignan a protocolos determinados, aún cuando no están normalizados.
La combinación de un número de puerto con una dirección IP se denomina conector o socket.
La combinación de dos sockets, es lo que se denomina sesión o conexión.
Esto permite que un mismo equipo inicie sesiones con varios otros (multiplexado de datos).
En el caso de un servidor, para un servicio determinado tendrá habilitado un socket (IP+puerto) pero los clientes, aún cuando se conecten a traves del mismo puerto, al tener direcciones IP distintas tendrán distintos sockets, con lo que el servidor verá conexiones distintas.
En el caso de los clientes, sucede algo similar, con el agregado que para un mismo servicio se pueden habilitar diferentes puertos lo que permite, por ejemplo, navegar simultáneamente por varias páginas alojadas en el mismo servidor: el socket remoto es el mismo, pero localmente se abre un socket para cada una de ellas.

## Capítulo 8: Protocolos de nivel de presentación

El objetivo de la capa de presentación es encargarse de la representación de la información, de manera que aunque distintos equipos puedan tener diferentes representaciones internas de caracteres (ASCII, Unicode, EBCDIC), números (little-endian tipo Intel, big-endian tipo Motorola), sonido o imágenes, los datos lleguen de manera reconocible.
Esta capa es la primera en trabajar más el contenido de la comunicación que 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.
Por lo tanto, podemos resumir definiendo a esta capa como la encargada de manejar las estructuras de datos abstractas y realizar las conversiones de representación de datos necesarias para la correcta interpretación de los mismos.
Esta capa también permite cifrar los datos y comprimirlos. Actúa como traductor.

## Capítulo 9: Protocolos de nivel de aplicación

En informática, la capa de aplicación es el nivel 7 del modelo OSI.
Ofrece a las aplicaciones (de usuario o no) 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 (POP y SMTP), gestores de bases de datos y protocolos de transferencia de archivos (FTP)
Cabe aclarar que el usuario normalmente no interactúa directamente con el nivel de aplicación. Suele interactuar con programas que a su vez interactúan con el nivel de aplicación pero ocultando la complejidad subyacente. Así por ejemplo un usuario no manda una petición "HTTP/1.0 GET index.html" para conseguir una página en html, ni lee directamente el código html/xml. O cuando chateamos con el Messenger, no es necesario que codifiquemos la información y los datos del destinatario para entregarla a la capa de Presentación (capa 6) para que realice el envío del paquete.
En esta capa aparecen diferentes protocolos:
* FTP (File Transfer Protocol - Protocolo de transferencia de archivos) para transferencia de archivos.
* DNS (Domain Name Service - Servicio de nombres de dominio).
* DHCP (Dynamic Host Configuration Protocol - Protocolo de configuración dinámica de anfitrión).
* HTTP (HyperText Transfer Protocol) para acceso a páginas web.
* NAT (Network Address Translation - Traducción de dirección de red).
* POP (Post Office Protocol) para correo electrónico.
* SMTP (Simple Mail Transport Protocol).
* SSH (Secure SHell)
* TELNET para acceder a equipos remotos.
* TFTP (Trival File Transfer Protocol).
PARTE II - Aplicación

## Capítulo 10: Clientes de red

Un cliente de red es un computador configurado para conectarse a un servidor. Habitualmente, resulta necesario configurar la NIC, los protocolos TCP/IP, la puerta de enlace y los servidores DNS.
Si bien actualmente es habitual que la NIC esté integrada a la placa madre. y sea del tipo plug and play, existe un parque instalado de PCs con NICs configurables por software.
En este caso, los parámetros a configurar son la dirección de entrada/salida (I/O) y la línea de interrupción (IRQ).
¿Qué dirección de entrada/salida debemos elegir? Debemos seleccionar una dirección que no esté asignada a otro dispositivo y que pueda ser configurada en el sistema operativo a instalar. Por ejemplo, una dirección 0x300 (300 en hexadecimal) suele ser ofrecida por defecto, pero puede estar asignada a una tarjeta de sonido. La dirección 0x280 suele estar disponble, pero en Windows NT no puede asignarse. La dirección 0x240 generalmente no representa problema en ningún SO y habitualmente se encuentra disponible.
¿Qué interrupción elegiremos? Puede usarse una interrupción asignada a un dispositivo que no se encuentre activo. Por ejemplo, la interrupción 7 está reservada para el puerto paralelo, pero si no tenemos impresora conectada podemos usarla. La interrupción 9/2 parece ser una buena opción en cualquier caso.
Clientes Windows 9x/Me
Clientes Windows NT/2000/XP
Clientes Linux

### Clientes Windows 9x/Me

Redes informáticas/Clientes de red/Clientes Windows 9x/Me

### Clientes Windows NT/2000/XP

Redes informáticas/Clientes de red/Clientes Windows NT/2000/XP

### Clientes Linux

Redes informáticas/Clientes de red/Clientes Linux

## Capítulo 11: Servidor de archivos

Tipo de servidor en una red de ordenadores cuya función es permitir el acceso remoto a Archivo informático|archivos almacenados en él o directamente accesibles por este. En principio, cualquier ordenador conectado a una red con un software apropiado, puede funcionar como servidor de archivos. Desde el punto de vista del cliente de un servidor de archivos, la localización de los archivos compartidos es transparente. O sea, normalmente no hay diferencias perceptibles si un archivo está almacenado en un servidor de archivos remoto o en el disco de la propia máquina.
Algunos protocolos comúnmente utilizados en servidores de archivos:
* SMB/CIFS (Windows, Samba (software) en Unix)
* NFS (Unix)

## Capítulo 12: Servidor web

Cuando navegamos por Internet, la mayor cantidad de páginas que visitamos está soportada por un servidor web Apache, y una porción menos por Internet Information Server (IIS).
IIS sobre Windows
Apache sobre Windows
Apache sobre Linux
Parte III-Construcción de una red

## Capítulo 13:Construcción de una red
### Una red simple

Una red de ordenadores sencilla se puede construir de dos ordenadores, agregando un adaptador de la red (controlador de interfaz de red (NIC)) a cada ordenador y conectándolos mediante un cable especial llamado "cable cruzado" (el cual es un cable de red con algunos cables invertidos, para evitar el uso de un router o switch). Este tipo de red es útil para transferir información entre dos ordenadores que normalmente no se conectan entre sí por una conexión de red permanente o para usos caseros básicos del establecimiento de red.
Alternativamente, una red entre dos ordenadores se puede establecer sin aparato dedicado adicional, usando una conexión estándar, tal como el puerto serial RS-232 en ambos ordenadores, conectándolos entre sí vía un cable especial cruzado nulo del módem.
En este tipo de red solo es necesario configurar una dirección IP, pues no existe un servidor que les asigne IP automáticamente.
En el caso de querer conectar más de dos ordenadores, o con vista a una posible ampliación de la red, es necesario el uso de un concentrador que se encargará de repartir la señal y el ancho de banda disponible entre los equipos conectados a él.
Simplemente le llega el paquete de datos al concentrador, el cual lo reenvía a todos los equipos conectados a él; el equipo destinatario del paquete lo recoge, mientras que los demás simplemente lo descartan.
Esto afecta negativamente al rendimiento de la red, ya que solo se puede enviar un paquete a la vez, por lo que mientras ese paquete se encuentra en circulación ningún otro paquete será enviado.

### Redes prácticas

Las redes prácticas constan generalmente de más de dos ordenadores interconectados y generalmente requieren dispositivos especiales además del controlador de interfaz de red con el cual cada ordenador se debe equipar. Ejemplos de algunos de estos dispositivos especiales son: los concentradores, conmutadores y enrutadores (routers).
Las características más importantes que se utilizan para describir una red son: velocidad, seguridad, disponibilidad, escalabilidad y confiabilidad. La consideración de estas características permite dimensionar de manera adecuada una red de computadoras solucionando las necesidades de los usuarios.
* Velocidad: Es una medida de la rapidez con que los datos son transmitidos sobre la red.
* Seguridad: Indica el grado de seguridad de la red incluyendo los datos que son transmitidos por ella.
* Disponibilidad: Es una medida de la probabilidad de que la red va a estar disponible para su uso.
* Escalabilidad: Indica la capacidad de la red de permitir más usuarios y requerimientos de transmisión de datos.
* Confiabilidad: Es una medida de la probabilidad de falla.
* ↑ Se denomina nodo a cada una de las computadoras de la red