RTT - это так называемое "Round Trip Time" (Время в пути) время от пакета SYN серверу до ответа от него SYN,ACK .
RTO - Retransmission timeout. Этот параметр не передается в составе tcp пакетов, а вычисляется клиентом и сервером для себя каждый сам, чтобы понимать насколько "тормознутое" устройство с ним работает (хотя по факту тормоза складываются в целом от работы и клиента и сервера ). Вычислять RTO надо для того чтобы знать , когда надо повторно передавать пакет (retransmission), конечно если ответ на него не пришел.
SACK - selective acknowledgements. Опция передаваемая в SYN и ответе SYN/ACK.
TCP DUP ACK tcp duplicate_ack. Это не есть гут и говорит о неправильном обмене между клиентом и сервером.
Если нам (серверу) надо подольше подумать над принимаемыми данными можно искусcтвенно увеличить время ответа на SYN клиенту и тогда пакетов retransmission (от клиента) будет в дальнейшем меньше. Можно попробовать Просто в tcp_listen_input в ветку else if ( flags & TCP_SYN ) добавить задержку например vTaskDelay(100);
IP пакет
TTL - Time To Live - поле (Максимальное значение 0xFF), используемое для предотвращения циклического пути пакета. При прохождении через маршрутизатор, значение уменьшается на единицу, и когда достигает нуля, пакет отбрасывается.
TTS - Type Of Service
TCP SYN клиента
В передачи SYN и ответе SYN/ACK могут быть или не быть несколько опций :
Maximum Segment Size (MSS)
Window Scaling
Selective Acknowledgements (SACK)
Timestamps
Nop
WS - Window Scale - коэффициент масштабирования окна, который в сочетании с 16-битным полем Window в заголовке TCP может увеличивать размер окна приема до максимального значения, составляющего примерно 1 ГБ.
SACK - Selective Acknowledgemen - С помощью выборочного подтверждения получатель данных может оповещать отправителя о любых сегментах, которые прибыли успешно, так что отправителю потребуется повторно передать только фактически утерянные сегменты.
RTO 5 (2500 milliseconds)
Назначение некоторых функций LWIP
Начинать изучение отработки http запросов надо с функции http_recv . Именно сюда залетают данные из установленных tcp соединений с типом HTTP . Код функции http_recv общий для версия 1.4.1 и 2.1.2 в LWIP.
http_parse_request - надо понимать , что функция http_parse_request вызывается только в конце передачи , когда hs->post_content_len_left станет равен 0 . До этого момента вызывается http_post_rxpbuf столько раз сколько пакетов передается в одном post запросе .
http_parse_request делает окончательный парсинг всего http запроса (post , get, ..), когда он получен полностью.
На признаться , что код внедрения отработки post запросов в версию 1.4.1 не оказалось простым делом. Пришлось трассировать и внимательно изучать каждую функцию. Когда понимание пришло в итоге пришлось править родной код, так как изначально работать ничего и не должно было.