Przeczytałem online instrukcję Apache httpd i natknąłem się na dyrektywę, aby to umożliwić. Znaleziono opis na stronie podręcznika dla 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.
Potem znalazłem ten artykuł, ale nadal nie jestem pewien, do jakiego rodzaju obciążeń byłoby to przydatne. Zakładam, że jeśli httpd
ma taką opcję, musi mieć pewne znaczenie dla serwerów sieciowych. Zakładam również, że jest to opcja, a nie tylko sposób httpd
połączeń sieciowych, że istnieją przypadki użycia, w których chcesz, i inne, w których nie.
Nawet po przeczytaniu artykułu nie jestem pewien, jaka byłaby korzyść z oczekiwania na zakończenie uzgadniania trójstronnego. Wydaje się korzystne, aby upewnić się, że nie trzeba będzie zamieniać odpowiedniej httpd
instancji, robiąc to, podczas gdy uścisk dłoni wciąż trwa, zamiast potencjalnie powodować to opóźnienie po utworzeniu połączenia.
W przypadku tego artykułu wydaje mi się również, że bez względu na TCP_DEFER_ACCEPT
status gniazda nadal będziesz potrzebować czterech pakietów (uzgadnianie, a następnie dane w każdym przypadku). Nie wiem, jak sprowadzają odliczanie do trzech, ani jak zapewnia to znaczące ulepszenie.
Więc moje pytanie jest w zasadzie: czy to tylko stara przestarzała opcja, czy istnieje rzeczywisty przypadek użycia tej opcji?