RFC 7230
RFC 7230 – „Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing” – jest jednym z dokumentów RFC (Request for Comments) opublikowanych przez Internet Engineering Task Force w 2014 roku. Dokument ten uzupełnia i zastępuje poprzedni standard RFC 2616, definiując składnię i zasady routingu komunikatów w protokole HTTP w wersji 1.1.
Historia i cel powstania
Wraz z rosnącą złożonością aplikacji internetowych oraz potrzebą lepszego dopasowania protokołu HTTP do współczesnych wymagań, grupy robocze IETF podjęły decyzję o podziale RFC 2616 na cztery odrębne dokumenty: RFC 7230, RFC 7231, RFC 7232 i RFC 7233. Dzięki temu każdy z nich mógł skupić się na konkretnym aspekcie protokołu:
- RFC 7230 – składnia i routing komunikatów
- RFC 7231 – semantyka metod, statusów i nagłówków
- RFC 7232 – warunki i modyfikacje zasobów
- RFC 7233 – obsługa zakresów i wieloczęściowych odpowiedzi
Zakres dokumentu
RFC 7230 specyfikuje:
- Strukturę komunikatów HTTP/1.1 – request line, status line, nagłówki i ciało wiadomości.
- Reguły parsowania i walidacji składni, w tym definicję ABNF (Augmented Backus–Naur Form).
- Mechanizmy routingu, w tym URI, nagłówek Host i obsługę połączeń wielokrotnych (persistent connections).
- Obsługę znakowania ciągów (tokenów), kodowanie znaków (Unicode/UTF-8) oraz zasady dopuszczalnych kombinacji znaków w nagłówkach.
- Wymagania dotyczące wersji protokołu (HTTP/1.1 vs. HTTP/2) i sposobu negocjacji wersji.
- Mechanizmy ochrony przed atakami typu „request smuggling” i inne kwestie bezpieczeństwa.
Główne elementy składni
Komunikaty HTTP opisane w RFC 7230 składają się z trzech części:
- Start line – w przypadku żądania jest to
method SP request-target SP HTTP-version CRLF, a w odpowiedziHTTP-version SP status-code SP reason-phrase CRLF. - Headers – zestaw pól nagłówka, oddzielonych znakiem
CRLF. Każde pole ma postaćfield-name ":" OWS field-value OWS. Wartości mogą być rozciągane na wiele linii przy użyciuobs-fold(przestarzały mechanizm). - Message body – opcjonalna część zawierająca dane przesyłane pomiędzy klientem a serwerem. Jego obecność i długość są określane przez nagłówki Content-Length oraz Transfer-Encoding.
Routing i połączenia
RFC 7230 wprowadza precyzyjne zasady dotyczące:
- nagłówka Host – konieczność jego obecności w każdym żądaniu HTTP/1.1, co umożliwia wirtualne hostowanie wielu domen na jednym adresie IP.
- Obsługi połączeń utrzymywanych (persistent connections) poprzez nagłówek Connection oraz zasady zamykania połączeń (
Connection: close). - Użycia Upgrade do przejścia na nowsze protokoły, np. HTTP/2, przy zachowaniu zgodności wstecznej.
Powiązane dokumenty
RFC 7230 jest częścią szerszego zestawu specyfikacji opisujących HTTP/1.1. Najważniejsze z nich to:
- RFC 7231 – semantyka metod, kodów statusu i nagłówków.
- RFC 7232 – warunki i modyfikacje zasobów.
- RFC 7233 – zakresy i wieloczęściowe odpowiedzi.
- RFC 7234 – cache’owanie w HTTP.
- RFC 7235 – uwierzytelnianie w HTTP.
Znaczenie i wpływ
Od momentu publikacji w 2014 roku RFC 7230 stał się podstawą współczesnych implementacji serwerów i klientów internetowych. Jego wytyczne zapewniają:
- Jednolitość interpretacji komunikatów pomiędzy różnymi platformami.
- Poprawę bezpieczeństwa poprzez eliminację niejednoznaczności parsowania.
- Lepszą obsługę nowoczesnych technik, takich jak TLS w połączeniach HTTPS.
Dzięki temu HTTP/1.1 pozostaje jednym z najważniejszych protokołów warstwy aplikacji w Internecie, pomimo rozwoju nowszych wersji, takich jak HTTP/2 i HTTP/3.
Podsumowanie
RFC 7230 jest kluczowym dokumentem definiującym HTTP w wersji 1.1. Jego precyzyjna specyfikacja składni i routingu komunikatów umożliwia interoperacyjność i bezpieczeństwo współczesnych aplikacji internetowych. Dokument stanowi fundament dla kolejnych specyfikacji z serii RFC 723x oraz dla dalszego rozwoju protokołu HTTP.