# data[].attributes.body
Cuando se envía un segmento se arranca un temporizador para
esperar su asentimiento. Transcurrido el plazo marcado en el
temporizador (timeout), si no se ha recibido el ACK, se
retransmite. ¿Qué plazo ponemos?
Se utiliza un algoritmo adaptativo, que se adapta a lo que ocurre
en la conexión
Para cada segmento se calcula el Tiempo de Ronda (Round Trip
Time → RTT): tiempo entre que se envía el segmento y se recibe
su asentimiento
Existen diferentes algoritmos, pero el original usa un plazo de 2
veces el RTT

# data[].attributes.headline
Diagrama de estados en el cierre de la conexión

# data[].attributes.subject
Diagrama de estados en el cierre de la conexión

# data[].attributes.headline
Diagrama de estados en el establecimiento de la conexión

# data[].attributes.subject
Diagrama de estados en el establecimiento de la conexión

# data[].attributes.body
TCP utiliza segmentos para determinar si el sistema de recepción está listo para recibir los datos. Cuando el protocolo TCP de envío desea establecer conexiones, envía un segmento denominado SYN al protocolo TCP del host de recepción.

# data[].attributes.body
El control de flujo permite mantener la confiabilidad de la transmisión de TCP mediante el ajuste de la velocidad del flujo de datos entre el origen y el destino para una sesión dada. Para lograr esto, el encabezado TCP incluye un campo de 16 bits llamado “tamaño de la ventana”
Se usa un protocolo de ventana anunciada para coordinar el
envío de segmentos de datos
El receptor indica en el campo AdvertisedWindow el número
de bytes (a partir del indicado en el número de asentimiento)
que está dispuesto a recibir del emisor
El emisor puede transmitir esos bytes aunque no reciba
asentimientos, pero una vez enviados tendrá que parar hasta
recibir un nuevo asentimiento (con un nuevo valor de ventana)

# data[].attributes.headline
PLANIFICACIÓN Y ADMINISTRACIÓN DE REDES: El nivel de transporte 

# data[].attributes.subject
PLANIFICACIÓN Y ADMINISTRACIÓN DE REDES: El nivel de transporte 

# data[].attributes.body
El nivel de transporte gobierna el acceso múltiple a la red de los
distintos procesos de la misma máquina que quieran usarla: en
TCP/IP esto se consigue a través de los puertos.
Hay dos protocolos principales que ofrecen nivel de transporte:
● UDP: no orientado a conexión y no fiable
● TCP: orientado a conexión y fiable

# data[].attributes.body
TCP (Protocolo de Control de Transmisión, por sus siglas en inglés Transmission Control Protocol) es protocolo de red importante que permite que dos anfitriones (hosts) se conecten e intercambien flujos de datos. TCP garantiza la entrega de datos y paquetes (en-US) en el mismo orden en que se enviaron. Vint Cerf y Bob Kahn, científicos de DARPA por aquél entonces, diseñaron TCP en la década de los 70.

# data[].attributes.body
Éste es el primer nivel en TCP/IP en el que se proporciona
fiabilidad. Su objetivo es recuperarse de las posibles pérdidas y
desorden producido por IP
Idea básica:
● Los segmentos con datos llevan un
número de secuencia
● El receptor de los datos debe mandar
asentimientos (ACK)
● TimeOut y protocolo de ventana
● El receptor reordena segmentos y
descarta duplicados

# data[].attributes.body
En informática, un puerto es una interfaz a través de la cual se pueden enviar y recibir los diferentes tipos de datos. En electrónica, telecomunicaciones y hardware, una interfaz es el puerto (circuito físico) a través del que se envían o reciben señales desde un sistema o subsistemas hacia otros.

# data[].attributes.body
Se dice que un servicio de comunicación entre dos entidades es orientado a conexión cuando antes de iniciar la comunicación se verifican determinados datos (disponibilidad, alcance, etc.) entre estas entidades y se negocian unas credenciales para hacer esta conexión más segura y eficiente.

# data[].attributes.body
El Protocolo de datagrama de usuario (UDP) es un protocolo ligero de transporte de datos que funciona sobre IP. UDP proporciona un mecanismo para detectar datos corruptos en paquetes, pero no intenta resolver otros problemas que surgen con paquetes, como cuando se pierden o llegan fuera de orden.

# data[].attributes.body
Cada segmento con datos lleva un número de secuencia
SequenceNum de 32 bits
El número de secuencia numera bytes y no segmentos
Al establecerse la comunicación se elige un número de
secuencia inicial

Número de asentimiento (ACK)
El receptor de segmentos de datos tiene que asentir los que le
llegan correctamente, activando el flag ACK y rellenando el
campo AcknowledgementNum
No es necesario enviar un asentimiento por cada segmento con
datos recibido
El número de asentimiento indica el número de secuencia que
se espera recibir, asintiendo de esta forma hasta el byte anterior
incluido
No hay rechazo selectivo
Si hay datos que enviar, se aprovecha ese segmento para enviar
un asentimiento a recucas (piggybacking)