+ All Categories
Home > Documents > Hypertext Transfer Protocol (HTTP/1.1 –...

Hypertext Transfer Protocol (HTTP/1.1 –...

Date post: 01-Feb-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
30
Hypertext Transfer Protocol (HTTP/1.1 – RFC 2616) Počítačové sítě Pavel Šinták 25.4.2005
Transcript
Page 1: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

Hypertext Transfer Protocol(HTTP/1.1 – RFC 2616)

Počítačové sítěPavel Šinták25.4.2005

Page 2: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 2/30

Obsah

ÚvodVrstvy podle TCP/IPPožadavek / OdpověďMetody požadavkuHlavičkyKódy odpovědiUkázka

Page 3: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 3/30

Úvod

protokol aplikační úrovněběžně na TCP portu 80bezestavový (požadavek / odpověď)textově orientovaný

1991 – HTTP verze 0.9 (CERN)1996 – HTTP/1.0 RFC19451999 – HTTP/1.1 RFC2616

Page 4: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 4/30

HTTP/1.1! Host hlavičkavíce požadavků přes jedno TCP spojení(pipelining)

jinak musí přidat Connection: closevíce domén na jedné IP adresechunked encoding – tělo po částech

server může odpovídat HTTP/1.1 100 Continuevylepšená podpora cacheserver musí přidat Date hlavičkupřidané hlavičky

Page 5: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 5/30

Vrstvy podle TCP/IP

HTTP

TCP

IP

Ethernet,TokenRing,...

Aplikačnívrstva

Transportnívrstva

Síťová vrstva

Vrstva síťového rozhraní

Page 6: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 6/30

Postup spojení

1. klient naváže TCP spojení na IP adresu (adresa serveru) a port (standardně 80)

2. klient zašle HTTP požadavek na server3. server zašle HTTP odpověď klientovi

a. server uzavře TCP spojeníb. klient zašle další požadavky v rámci TCP

Page 7: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 7/30

Vrstvení zprávy (Ethernet II)Ethernet II

Destination: 00:50:fc:32:ea:a5 (EdimaxTe_32:ea:a5)Source: 00:10:dc:c2:ed:0c (Micro-St_c2:ed:0c)Type: IP (0x0800)

Internet ProtocolTransmission Control ProtocolHypertext Transfer Protocol

Page 8: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 8/30

Vrstvení zprávy (IP)Internet Protocol

Version: 4Header length: 20 bytesDifferentiated Services Field: 0x00Total Length: 222Identification: 0x3b66 (15206)Flags: 0x04Fragment offset: 0Time to live: 128Protocol: TCP (0x06)Header checksum: 0xe204 (correct)Source: psintak.kk.zcu.cz (10.40.5.153)Destination: titan.zcu.cz (147.228.57.10)

Transmission Control ProtocolHypertext Transfer Protocol

Page 9: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 9/30

Vrstvení zprávy (TCP)Transmission Control Protocol

Source port: 1620 (1620)Destination port: http (80)Sequence number: 1Next sequence number: 183Acknowledgement number: 1Header length: 20 bytes Flags: 0x0018 (PSH, ACK)Window size: 8760Checksum: 0xce2b (correct)

Hypertext Transfer Protocol

Page 10: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 10/30

Vrstvení zprávy (HTTP)Hypertext Transfer Protocol

GET / HTTP/1.0 \r\nAccept: */* \r\nAccept-Language: cs \r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;

.NET CLR 1.1.4322) \r\nHost: www.zcu.cz \r\nConnection: Keep-Alive \r\n\r\n

Page 11: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 11/30

Požadavek (Request)

<metoda> <URI> <verze> CRLF

<hlavička>* CRLF

CRLF

<tělo>GET / HTTP/1.1Host: www.zcu.cz

Page 12: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 12/30

Odpověď (Response)

<verze> <kód> <popis> CRLF

<hlavička>* CRLF

CRLF

<tělo>

HTTP/1.1 200 OKContent-Type: text/htmlContent-Length: 8969Connection: close

<HTML><HEAD>...

Page 13: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 13/30

Verze protokolu

podle podporované verze HTTPHTTP/<hlavní>.<vedlejší>HTTP/0.9, HTTP/1.0, HTTP/1.1klient požadavek 1.0 server umí 1.1

server odpovídá 1.1zpětná kompatibilita

Page 14: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 14/30

URI

Uniform Resource IdentifiersRFC 2396relativní (i absolutní pro 1.0) adresa

do budoucna opět absolutní (HTTP/1.2)

http://host[:port][path[?query]]

Page 15: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 15/30

Metody požadavku

GET – obdržení cíle (od 0.9)HEAD – cíl bez těla (od 1.0 ...)POST – odeslání dat + získání cíleOPTIONS – podporované metody (od 1.1 ...)PUT – nahrání na cílDELETE – smazání cíleTRACE – sledování cestyCONNECT – tunel pro proxy

Page 16: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 16/30

GET

pro obdržení zadaného cíle z URIparametry předává v URIdélka URI není RFC omezena (ale 255)

HTTP/0.9GET / HTTP/1.0

GET http://www.zcu.cz/ HTTP/1.0HTTP/1.1GET / HTTP/1.1Host: www.zcu.cz

Page 17: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 17/30

HEAD

pro obdržení hlavičky od zadaného cílestejný jako GET, jen bez těla odpovědi

HEAD / HTTP/1.1Host: www.zcu.cz

Page 18: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 18/30

POST

pro odeslání dat na serverodesílání argumentů, nahrávání souborůdata v těle za hlavičkouPOST /test.php HTTP/1.1Host: www.zcu.czContent-Type: application/x-www-form-urlencodedContent-Length: 8

text=nic

Page 19: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 19/30

OPTIONS

OPTIONS * HTTP/1.1Host: www.zcu.cz

HTTP/1.1 200 OKAllow: GET,HEAD,POST,OPTIONS,TRACE

zjištění metod podporovaných serveremodpověď bez těla

Page 20: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 20/30

Obecné hlavičkyCache-Control – nastavení cacheConnection (close) – uzavření spojeníDatePragma – původní nastavení cacheTrailerTransfer-Encoding – kódování přenosuUpgrade – přidané protokolyViaWarning

Page 21: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 21/30

Hlavičky požadavkuAccept (*/*) - MIME Accept-CharsetAccept-Encoding - obsahAccept-Language (cs)AuthorizationExpectFrom - emailHost !!!If-MatchIf-Modified-Since

If-None-MatchIf-RangeIf-Unmodified-SinceMax-ForwardsProxy-AuthorizationRangeRefererTEUser-Agent

Page 22: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 22/30

Hlavičky odpovědiAccept-RangesAgeETagLocation – přesměrováníProxy-AuthenticateRetry-AfterServer – popis serveruVaryWWW-Authenticate (Basic/Digest)

Page 23: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 23/30

Hlavičky pro těloAllow – podporované metodyContent-Encoding (gzip) - kódování tělaContent-LanguageContent-Length – velikost tělaContent-Location – externí těloContent-MD5Content-RangeContent-Type (MIME; charset=)ExpiresLast-Modified

Page 24: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 24/30

Kódy odpovědi

<kód> <popis>1xx informační2xx úspěch3xx přesměrování4xx chyba na straně klienta5xx chyba na straně serveru

Page 25: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 25/30

Běžně používané kódy100 Continue200 OK301 Moved permanently304 Not Modified400 Bad request401 Unauthorized403 Forbidden404 Not found500 Internal error501 Not implemented503 Service Unavailable

Page 26: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 26/30

Ukázka (1) - požadavekGET / HTTP/1.0Accept: */*Accept-Language: csUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)Host: www.zcu.czConnection: Keep-Alive

Page 27: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 27/30

Ukázka (2) - odpověďHTTP/1.1 200 OKDate: Sat, 23 Apr 2005 12:52:40 GMTServer: Apache/2.0.48 (Unix) mod_ssl/2.0.48 OpenSSL/0.9.7cAccept-Ranges: bytesConnection: closeContent-Type: text/html

<html><head><title>Zapadoceska univerzita v Plzni</title>

Page 28: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 28/30

Ukázka (3) - požadavekGET /zcu/zcu.css HTTP/1.0Accept: */*Referer: http://www.zcu.cz/Accept-Language: csIf-Modified-Since: Mon, 03 Jan 2005 08:57:01 GMTIf-None-Match: "1800455-15b-ef7e3140"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)Host: www.zcu.czConnection: Keep-Alive

Page 29: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 29/30

Ukázka (4) - odpověďHTTP/1.1 304 Not ModifiedDate: Sat, 23 Apr 2005 12:52:40 GMTServer: Apache/2.0.48 (Unix) mod_ssl/2.0.48 OpenSSL/0.9.7cConnection: Keep-AliveKeep-Alive: timeout=15, max=100ETag: "1800455-15b-ef7e3140"

Page 30: Hypertext Transfer Protocol (HTTP/1.1 – RFC2616)ledvina/vyuka/PSI/Presentace/HTTP-sintak.pdf25.4.2005 Pavel Šinták 4/30 HTTP/1.1 ! Host hlavička více požadavkůpřes jedno TCP

25.4.2005 Pavel Šinták 30/30

Použité zdroje

http://www.rfc.net/rfc2616.htmlhttp://www.jmarshall.com/easy/http/http://www.root.cz/clanky/protokol-http-1-1-pod-lupou/http://www.kiv.zcu.cz/~brada/vyuka/pia/slides/05-HTTP.pdf


Recommended