No entiendo por qué crear una nueva conexión TCP se considera una tarea costosa. Básicamente, configurar una nueva conexión se refiere a realizar el protocolo de enlace de 3 vías de TCP. Eso es enviar dos paquetes y recibir uno. Teniendo en cuenta que seguirán miles de paquetes (de datos), el apretón de manos no puede ser la parte costosa. ¿Puede?
9
Respuestas:
En general, creo que abrir una conexión TCP se considera costoso en comparación con la capacidad de reutilizar conexiones ya abiertas al mantenerla abierta. Tiene razón, abrir una conexión tomará solo 3 paquetes / turnos, pero esa vez, 3 veces su RTT, va mucho más allá del costo de reutilizar una conexión ya abierta, que está mucho más cerca de 0. La disparidad aumenta aún más rápido si usted Estamos abriendo y cerrando conexiones con frecuencia.
Sin embargo, ciertamente tiene razón, en comparación con la cantidad de vueltas que verá, ya que la aplicación "hace las cosas", esos 3 paquetes pueden parecer bastante pequeños, pero de nuevo, depende de cómo desee comparar las opciones Y cómo se comporta su aplicación / cuántas veces planea abrir una conexión.
Editar Sin embargo, si estamos hablando de UDP vs. TCP, Cheekaleek aquí es 100% correcto: la sobrecarga es masiva a largo plazo en comparación con las operaciones sin conexión de UDP
fuente
Ciertamente es más sobrecarga que enviar un paquete UDP y no importarle lo que pase después de eso.
TCP también viene con más datos de encabezado y mantiene el estado de conexión, que consumirá recursos.
Entonces, sí, en comparación con UDP, TCP es más caro, pero caro es un término relativo.
"¿Las conexiones TCP son las mejores amigas de una chica?"
fuente
"TCP connections are a girl's best friend???"
No, no lo son. Obtuve miles de ellas para su cumpleaños y todo lo que hizo fue dejar de devolver mis correos electrónicos. :(No se trata solo de enviar y recibir paquetes. Se debe asignar memoria adicional y, como mínimo, actualizar las tablas de estado de red en cada paso hasta que se establezca la sesión. Sin mencionar las comprobaciones de seguridad adicionales que se pueden realizar (protección de falsificación de rutas, etc.).
Simplemente usando algunos números de ejemplo (porque no estamos hablando de ningún sistema operativo específico) si un paquete para una sesión establecida tiene un costo de CPU de 1 unidad, el costo de una nueva sesión puede ser 10x o 100x ese costo en la cantidad de operaciones realizadas La mayoría de los firewalls de hardware con los que he trabajado pueden manejar un orden de magnitud menos conexiones nuevas por segundo de lo que pueden manejar sesiones establecidas.
A menudo no es tan importante, especialmente porque un SYN-SYN / ACK-ACK ocurre en milisegundos, pero para sistemas grandes con muchos clientes, las nuevas sesiones pueden convertirse en una sobrecarga significativa .
fuente
La cantidad o tipo de tráfico importa mucho menos que el código asociado con la asignación real de memoria y el seguimiento asociado de la información de estado. Si desea tener una idea muy aproximada de lo que esto implica, eche un vistazo a la cantidad de código en el kernel de Linux asociado con TCP versus el asociado con UDP o ICMP. Una comparación increíblemente aproximada muestra que TCP requiere algo como 10 veces el número de líneas de código encontradas en UDP.
En las redes IP, la cantidad de mantenimiento de estado requerida es uno de los determinantes más importantes de la escalabilidad. Para los puntos finales TCP, esto se expresa no solo en SYN / ACK, sino también en el mantenimiento continuo de ventanas deslizantes, números de secuencia, gestión de búfer y acciones de QoS, etc. Compruebe la complejidad del FSM para tcp y considere la falta inherente de los mismos en UDP ...
fuente