Правильная терминология для HTTP - PullRequest
2 голосов
/ 11 марта 2011

Я не хочу задавать вопрос с такой маленькой заслугой, учитывая, что он задокументирован, но мне было интересно, может ли кто-нибудь помочь мне понять терминологию, стоящую за HTTP. Я знаю, что могу просто прочитать документы, но иногда это кажется немного толстым, и трудно понять, что они пытаются сказать.

Вот что я получаю до сих пор:


Вся транзакция состоит из сообщений, которые являются запросами или ответами.

Стартовая строка?

[method/verb] [url?] [version?]
GET / HTTP/1.1\r\n

Заголовок сообщения

[name]: [value (which is LWS and content)]
Host: google.com\r\n
\r\n

-

[version?] [status code] [description?]
HTTP/1.1 200 OK\r\n
Content-type: text/plain\r\n
Transfer-Encoding: chunked\r\n
\r\n

Тело сообщения?

d\r\n
Hello, world!\r\n
0\r\n
\r\n

(и тело сущности будет просто «Привет, мир!» / Версия тела сообщения без кодировки? Или это будет только «тело сообщения», а не тело сущности, если оно закодировано?)


Я ценю любые заметки / идеи / исправления, которые у вас могут быть. В настоящее время я пытаюсь написать HTTP-движок, поэтому чувствую, что стоит потратить средства на то, чтобы убедиться, что используется правильная терминология. Спасибо за чтение.

1 Ответ

2 голосов
/ 11 марта 2011

Всю эту терминологию можно найти в документах RFC от IETF. В частности, вы заинтересованы в RFC 2616 . Если вы пишете свой собственный HTTP-движок, необходимо прочитать хотя бы RFC 2616 вместе с RFC 1738 , 1808 и 2396 .

Вот некоторые соответствующие выдержки, которые отвечают на ваши вопросы:

Request       = Request-Line              ; Section 5.1
                *(( general-header        ; Section 4.5
                 | request-header         ; Section 5.3
                 | entity-header ) CRLF)  ; Section 7.1
                CRLF
                [ message-body ]          ; Section 4.3

Request-Line   = Method SP Request-URI SP HTTP-Version CRLF

Response      = Status-Line               ; Section 6.1
                *(( general-header        ; Section 4.5
                 | response-header        ; Section 6.2
                 | entity-header ) CRLF)  ; Section 7.1
                CRLF
                [ message-body ]          ; Section 7.2

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
...