Соответствующий HTTP 1.1 сервер и соединение на стороне клиента наполовину близко - PullRequest
2 голосов
/ 25 марта 2011

Я наблюдал реализацию HTTP 1.1 Server, которая разрывает соединение с клиентом, как только обнаруживает завершение соединения на стороне клиента своего исходящего канала (или, скорее, до или после отправки правильного ответа http). Это соответствующая реализация HTTP 1.1?

RFC 2616 Раздел 8.1.4, похоже, предполагает, что это правильное поведение:

Когда клиент или сервер желает тайм-аут, он ДОЛЖЕН выдавать изящный закрыть на транспортное сообщение. Клиенты и серверы ДОЛЖНЫ оба постоянно следить за другой стороной транспорта, и ответьте на него соответствующим образом.

...

Серверы НЕ ДОЛЖНЫ закрывать соединение во время передачи ответа, если не подозревается сбой сети или клиента.

Я правильно понимаю? Есть ли более явная ссылка на обработку полузакрытых соединений в контексте HTTP 1.1?

1 Ответ

1 голос
/ 25 марта 2011

Насколько я знаю, это все, что нам нужно знать о полузакрытых соединениях.

Сервер закроет соединение, только если обнаружит, что клиент закрыл его (это может произойти, когда сервер собирается записать в сокет) или в конце запроса, если он не поддерживает connection: keep-alive.

Клиент может отключиться в любое время, но он должен сообщить серверу, почему он отключается (time_out, запрос отмены). Но это не очень используется теми, кто пишет компоненты сокетов. Они просто закрывают розетку, когда им нужно заставить time_out.

Но реализация клиента не является проблемой. Вы должны беспокоиться о реализации сервера, так как страдают от этих неожиданных отключений.

EDIT

Может быть, эти ссылки помогут вам.

Протокол управления передачей - функциональная спецификация

ПРОТОКОЛ КОНТРОЛЯ ПЕРЕДАЧИ

...