Странные задержки при туннелировании HTTP через сокеты net .Conn TCP - PullRequest
0 голосов
/ 06 мая 2020

Код сервера: https://play.golang.org/p/tMF8uRmNMQG

Код клиента: https://play.golang.org/p/GepYizWNeIH

Приведенный выше код предполагает, что локальный HTTP-сервер прослушивает порт 8080.

Когда я пытаюсь отправить запрос GET на http://localhost: 1234 , туннель, кажется, останавливается после прохождения GET (я вижу, что это происходит на tee'd вывод).

Затем, в случае локального python3 -m http.server, сервер отвечает через короткое время. Этот ответ не попадает в браузер (опять же, я вижу ответ в выводе tee'd).

При попытке сделать это с сайтом publi c (я использовал textfiles.com для тестирования), ответы также возвращаются медленно. В одном из моих предыдущих тестов я рассчитал интервал между ответами примерно на 5 секунд.

Однако, когда вы привязываете прослушиватель netcat к localhost и используете туннель для подключения, задержки нет и все данные переходит от сервера к клиенту почти мгновенно.

Связано ли это с установленным флагом TCP P SH? Почему пять секунд (время поддержки активности)?

...