Modelo de Servicio TCP
Servicio TCP se obtiene estableciendo una conexión entre un socket (punto terminal) de la máquina transmisora y un socket de la máquina receptora.
Dirección de Socket= [ dir.IP del host (32b) ; #port del host (16b) ]
Port=TSAP en TCP
Ej. de Conexión: (175.77.13.178,21), (170.210.88.193,21)
TCP puede guardar datos en buffer ó enviarla de inmediato.Si la aplicación usa la bandera PUSH, sin esperar completar buffer, y Con opción de bandera URGENT, TCP deja de acumular datos y transmite todo lo que tiene para esa conexión.
Protocolo TCP
Cabecera TCP (20 B) + Datos (³0 B), con 2 límites de tamaño segmento:
Cabecera de Segmento TCP
Cabecera de formato fijo de 20 B + Opciones de cabecera + Datos opcional de 0 (acuses recibo y control) a Máx [65535 - 20 H_IP- 20 H_TCP=65495].
.Seteo de Carga útil TCP máxima / si ambos lados anuncian su máx., el más pequeño de ambos es el ganador. Si no usa opción, 536 Bytes,
.Uso de RFC 1323 para Escala de ventana, desplazando campo Ventana 16 bits a izquierda, máx. 232 Bytes.
.Uso de RFC 1106 para Repetición selectiva de segmento, en lugar de protocolo Regresar n, usando NACK.
Gestión de Conexión TCP
Establecimiento de conexiones TCP emplean Protocolo de Acuerdo de 3 vías (Three-way Handshake).
Caso Normal:
Servidor espera pasivamente una conexión ejecutando primitivas LISTEN y ACCEPT. El Cliente ejecuta primitiva CONNECT especificando Dir. y Port IP con el que desea la conexión y tamaño máx. segmento TCP , ®Primitiva CONNECT envía segmento TCP con bit SYN=1 y ACK=0, y espera respuesta.
Si proceso escucha en el port, recibe segmento TCP entrante y puede aceptar (ó rechazar conexión), devolviendo segmento con acuse recibo.
Colisión llamadas sólo se establecerá una conexión, no dos, identificada por (x,y)
Para Liberar Conexiones, cualquiera de las partes envía segmento TCP con bit FIN seteado, y al reconocer el FIN, ese sentido se apaga. Cuando ambos sentidos se apagan, se libera conexión.
Control de Congestión con TCP
Congestión: cuando carga ofrecida a red es mayor que la que puede manejar
Solución de Internet a 2 problemas potenciales de Capacidad del Rx y capacidad de la red, es que Tx mantiene,
Ventana = mín { Ventana anunciada por Rx ; Ventana de Congestión }
- Vent_Congestión / si acuse recibo segmento OK ® Vent_Cong se duplica,..., y crece exponencialmente hasta alcanzar 1/2 Tamaño Vent_Receptora, en que reduce razón del incremento, pasando a ser lineal (+1): Algoritmo de Arranque Lento (Jacobson,1988), en implementaciones de TCP.
- Si ocurre un Timeout, se establece el Umbral (inicial de 64kB) en la 1/2.Vent_Cong. Actual y la Vent_Cong se restablece a 1 kB. Luego usa arranque lento para determinar lo que puede manejar la red, hasta alcanzar el umbral.
Algoritmo de Retransmisión Adaptable en TCP
RTT = a.RTT + (1-a).M , con a=7/8 : Factor Amortiguamiento.
ÞTimeout= b.RTT , normalmente, con b=2 inicialmente, pero experiencia demuestra que era inflexible y no respondía cuando existen variaciones.
® Se propone b proporcional a Desviación Media de Función y mantener otra variable Desviación
D = a.D +(1-a).|RTT-M| Þ Timeout= RTT + 4.D, usado en mayoría de implementaciones TCP.