2. Messaggio (Message)
I client e i server HTTP/1.1 comunicano inviando messaggi. Vedere la sezione 3 di [HTTP] per la terminologia generale e i concetti di base di HTTP.
2.1. Formato del messaggio (Message Format)
Un messaggio HTTP/1.1 consiste in una riga iniziale seguita da un CRLF e una sequenza di ottetti in un formato simile al formato dei messaggi Internet [RFC5322]: zero o più righe di campo di intestazione (collettivamente chiamate "intestazioni" o "sezione di intestazione"), una riga vuota che indica la fine della sezione di intestazione e un corpo del messaggio opzionale.
HTTP-message = start-line CRLF
*( field-line CRLF )
CRLF
[ message-body ]
Un messaggio può essere una richiesta dal client al server o una risposta dal server al client. Sintatticamente, i due tipi di messaggi differiscono solo nella riga iniziale.
start-line = request-line / status-line
2.2. Analisi del messaggio (Message Parsing)
La procedura normale per l'analisi di un messaggio HTTP consiste nel leggere la riga iniziale in una struttura, leggere ogni riga di campo di intestazione in una tabella hash per nome di campo fino alla riga vuota, quindi utilizzare i dati analizzati per determinare se è previsto un corpo del messaggio.
Un destinatario DEVE analizzare un messaggio HTTP come una sequenza di ottetti in una codifica che è un superset di US-ASCII [USASCII].
2.3. Versione HTTP (HTTP Version)
HTTP utilizza uno schema di numerazione "<major>.<minor>" per indicare le versioni del protocollo. Questa specifica definisce la versione "1.1". La sezione 2.5 di [HTTP] specifica la semantica dei numeri di versione HTTP.
La versione di un messaggio HTTP/1.x è indicata da un campo HTTP-version nella riga iniziale.
HTTP-version = HTTP-name "/" DIGIT "." DIGIT
HTTP-name = %s"HTTP"