Фон: Я пытаюсь заставить ApacheBench работать на моем настраиваемом сервере. Я пробовал выдавать ab -n 1 -c 1 http://localhost:1337/index.html
, и я обнюхиваю соединение (с wirehark). Я вижу, что отправляется более одного запроса.Когда сервер HTTP 1.0 закрывает соединение?
Пример запроса:
GET /index.html HTTP/1.0 Host: localhost:1337 User-Agent: ApacheBench/2.3 Accept: */* (repeats more times than I care to count)
Я предположил, как RFC 1945 говорит «для экспериментальных приложений Кроме этого, современная практика требует, чтобы соединение было установлено клиентом до каждого запроса и закрывается сервером после отправки ответа. " Это работает с ApacheBench, когда я запрашиваю одну страницу. Однако, если я увеличиваю количество запросов до 10, я получаю «Сброс соединения с помощью однорангового узла». Это имеет смысл, учитывая, что я закрыл соединение.
Я пробовал такую же процедуру с Google, однако, она отлично работает для обоих случаев. Итак, как я должен знать, когда закрыть соединение для HTTP 1.0?
но, как вы можете видеть, клиент не отправил заголовок Keep-Alive, так что происходит? – chacham15
В отсутствие сохранения, которое должно быть явно запрошено в HTTP 1.0, клиент ** должен ** закрыть соединение после получения ответа, даже если сервер не закрыл соединение после отправки ответа. –
@RemyLebeau крутится крутящий момент _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ – gkiko