2013-07-03 3 views
4

Фон: Я пытаюсь заставить 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?

ответ

13

В HTTP 0.9 сервер всегда закрывает соединение после отправки ответа. Клиент должен закрыть свой конец соединения после получения ответа.

В HTTP 1.0, сервер всегда закрывает соединение после отправки ответа КРОМЕ клиент послал заголовок Connection: keep-alive запроса, а сервер послал заголовок Connection: keep-alive ответа. Если такой заголовок ответа не существует, клиент должен закрыть свой конец соединения после получения ответа.

В HTTP 1.1, сервер не закрывает соединение после отправки ответа КРОМЕ клиент послал заголовок Connection: close запроса, или сервер послал заголовок Connection: close ответа. Если такой заголовок ответа существует, клиент должен закрыть свой конец соединения после получения ответа.

+0

но, как вы можете видеть, клиент не отправил заголовок Keep-Alive, так что происходит? – chacham15

+0

В отсутствие сохранения, которое должно быть явно запрошено в HTTP 1.0, клиент ** должен ** закрыть соединение после получения ответа, даже если сервер не закрыл соединение после отправки ответа. –

+0

@RemyLebeau крутится крутящий момент _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ – gkiko

Смежные вопросы