Estaba leyendo el manual httpd de Apache en línea y encontré una directiva para habilitar esto. Encontró una descripción en la página del manual para tcp
:
TCP_DEFER_ACCEPT (since Linux 2.4)
Allow a listener to be awakened only when data arrives on the
socket. Takes an integer value (seconds), this can bound the
maximum number of attempts TCP will make to complete the
connection. This option should not be used in code intended
to be portable.
Luego encontré este artículo, pero aún no estoy claro para qué tipo de cargas de trabajo sería útil. Supongo que si httpd
tiene una opción específica para esto, debe tener cierta relevancia para los servidores web. También supongo que es una opción y no solo cómo httpd
funcionan las conexiones de red, que hay casos de uso en los que lo desea y otros en los que no.
Incluso después de leer el artículo, no tengo claro cuál sería la ventaja de esperar a que se complete el apretón de manos de tres vías. Parecería ventajoso asegurarse de que no httpd
será necesario intercambiar la instancia relevante haciéndolo mientras el apretón de manos continúa en lugar de potencialmente causar ese retraso después de que se forme una conexión.
Para el artículo, también me parecería que, sin importar el TCP_DEFER_ACCEPT
estado de un socket, todavía necesitarás cuatro paquetes (apretón de manos y luego datos en cada caso). No sé cómo reducen la cuenta a tres, ni cómo eso proporciona una mejora significativa.
Entonces, mi pregunta es básicamente: ¿Es solo una vieja opción obsoleta o hay un caso de uso real para esta opción?