Características de TCP/IP
TCP/IP tiene características que permiten que el protocolo funcione como dictan sus requisitos de implementación estandarizados. Estas características pueden combinarse con las opciones de desarrollo que dan lugar a un rendimiento deficiente. El impacto que tienen estas características tcp/IP en una aplicación depende de si la aplicación es transaccional o de streaming.
Las aplicaciones transaccionales se ven afectadas por la sobrecarga necesaria para el establecimiento y la finalización de la conexión. Por ejemplo, cada vez que se establece una conexión en una red Ethernet, se deben enviar tres paquetes de aproximadamente 60 bytes cada uno y se requiere aproximadamente un RTT para el intercambio. Cuando se produce la terminación de una conexión, se intercambian cuatro paquetes. Esto es para cada conexión; Una aplicación que abre y cierra las conexiones a menudo incurre en esta sobrecarga en cada repetición.
Otro aspecto de TCP/IP es el inicio lento, que tiene lugar siempre que se establece una conexión. El inicio lento es un límite artificial en el número de segmentos de datos que se pueden enviar antes de recibir la confirmación de esos segmentos. El inicio lento está diseñado para limitar la congestión de la red. Cuando se establece una conexión a través de Ethernet, independientemente del tamaño de la ventana del receptor, una transmisión de 4 KB puede tardar hasta 3-4 RTT debido al inicio lento.
Una optimización tcp/IP denominada algoritmo nagle también puede limitar la velocidad de transferencia de datos en una conexión. El algoritmo nagle está diseñado para reducir la sobrecarga de protocolo para las aplicaciones que envían pequeñas cantidades de datos, como Telnet, que envía un solo carácter a la vez. En lugar de enviar inmediatamente un paquete con un montón de encabezados y pocos datos, la pila espera más datos de la aplicación, o una confirmación, antes de continuar.
Las confirmaciones diferidas, normalmente denominadas ACK retrasadas, también están diseñadas en TCP/IP para permitir un piggybacking más eficaz de confirmaciones cuando los datos devueltos van a llegar a la aplicación del lado receptor. Desafortunadamente, si estos datos no están disponibles y el lado de envío está esperando una confirmación, pueden producirse retrasos de aproximadamente 200 milisegundos por envío.
Cuando se cierra una conexión TCP, los recursos de conexión en el nodo que inició el cierre se colocan en un estado de espera, denominado TIME-WAIT, para protegerse contra daños en los datos si los paquetes duplicados permanecen en la red. Esto garantiza que ambos extremos finalicen con la conexión. Esto puede provocar el agotamiento de los recursos necesarios por conexión, como ram y puertos, cuando las aplicaciones abren y cierran las conexiones con frecuencia.
Además de verse afectado por ACK retrasado y otros esquemas de prevención de congestión, las aplicaciones de streaming también pueden verse afectadas por un tamaño de ventana de recepción predeterminado demasiado pequeño en el extremo receptor.
Temas relacionados