#sockets #networking #tcp #network-programming #openssl
#сокеты #сеть #tcp #сетевое программирование #openssl
Вопрос:
Я отслеживаю соединение, используя TLS с OpenSSL. Оба приложения работают на одном узле и подключаются через локальный интерфейс. Несмотря на то, что максимальный размер, разрешенный протоколом записи TLS, составляет 16 КБ, а MSS, согласованный TCP, составляет ~ 64 КБ, я вижу, что сообщения протокола приложений TLS отправляются с одного узла на другой в виде 2 TCP-сообщений с полезной нагрузкой 8221 байт (полезная нагрузка TCP). Обратите внимание, что это соединение между двумя приложениями в одном узле и MSS TCP = 65495.
Почему я не вижу одно TCP-сообщение ~ 16 КБ вместо двух TCP-сообщений ~ 8 КБ?
Комментарии:
1. Потому что приложение одновременно предоставляет TLS только 8 КБ.
2. @EJP, как вы думаете, это приложение, предоставляющее 8 КБ данных в OpenSSL с помощью WRITE_ssl, или это OpenSSL, который обрабатывает 8 КБ каждый раз и передает 8 КБ сокету?
3. Я верю в то, что я сказал. Вот почему я это сказал.
4. @rodolk — Это может быть алгоритм медленного запуска или жестко заданный биологический предел. Или это может быть приложение, как указано в EJP. В любом случае проверьте оптимизацию времени TLS NGINX до первого байта (TTTFB) для получения некоторых полезных советов при рассмотрении поведения. Возможно, вы также захотите изучить «длинный толстый канал» , чтобы узнать, помогает ли это объяснить некоторые из наблюдаемых вами поведений. Смотрите, например, Длинные толстые каналы: параметры TCP WSCALE, TCP SACK и Time Stamp .