Protokoly služeb Internetu
Telnet
- RFC 854
- emulátor terminálu přes síť (TCP/23)
- na serveru démon telnetd, s daty z TCP spojení od klienta
zacházeno jako s daty z fyzického terminálu
- používá NVT ASCII (viz dále)
- příkazy pro oboustranné dohadování voleb
- návrh a potvrzení/zamítnutí volby
- zvlášť pro lokální i vzdálenou
stranu
- příklady voleb: echo, typ terminálu, rychlost terminálu, flow
control, ...- klávesa přerušeni (Ctrl-C) - implementováno s
použitím TCP Urgent Pointer
- znakový a řádkový režim
Network Virtual Terminal (NVT)
- virtuální znakové zařízení s klávesnicí a tiskárnou
- nejmenší možná množina společných parametrů splňovaných všemi
reálnými terminály
- znaky kódovány na 7 bitů
- end-of-line: CR, LF
File Transfer Protocol (FTP)
- RFC 959
- (obousměrný) přenos souborů mezi dvěma systémy
- přenos klient-server (nebo mezi dvěma vzdálenými počítači řízený
třetím)
- podpora autentizace uživatele (a autorizace)
- samostatné řídící (TCP/21) a datové (TCP/20) spojení
- řídící spojení - příkazy
- datové spojení - přenos souborů (RETR,STOR), výpis adresáře
(LIST)
- podpora transparentního přenosu i konverzí kódování (ASCII,
EBCDIC) - přes NVT ASCII (příkaz TYPE)
- přenášená data chápana jako soubor (běžně), volitelně jako
záznamy/stránky
- příkazy řídícího spojení:
USER PASS - zaslání autentizačních údajů
LIST - výpis adresáře
PORT - stanovení portu klienta, kam má server navazovat datové spojení
TYPE - určení typu dat (ascii/binary]
RETR STOR - stažení, resp. zaslání souboru
ABORT - ukončení přenosu (řídící kanál aktivní i po dobu přenosu)
PASV - přechod do pasivního režimu
QUIT - ukončení relace a spojení
- odpovědi:
- 3-místný kód (dělení do skupin) + doprovodný volitelný text
- možnost víceřádkových odpovědí s označením posledního řádku
- standardně aktivní režim
- datové spojení navazuje server (z portu 20 na klientův port
zadaný příkazem PORT)
- volitelně pasivní režim
- příkaz PASV
- datové spojení navazuje klient
- možnost průchodu přes firewally s jednosměrně dovoleným
navazováním spojením
Trivial FTP (TFTP)
- RFC 1350
- jednoduchá implementace přenosu souborů
- nad UDP
- stop and wait protokol
- první paket s povelem pro zaslání/uložení souboru,
- číslování a potvrzování paketů
- bez autentizace
- často použití pro upload software a konfigurace síťových prvků
nebo zavedení bootovací image stanice
Elektronická pošta
Základní pojmy:
User agent (UA), Message Transfer Agent (MTA), mailbox
Struktura a návaznost jednotlivách protokolů: SMTP, POP3, IMAP

Upozornění:
- protokoly orientované textově, neprovádí se šifrování,
- u SMTP bez autentizace, u POP a IMAP autentizace zpravidla
cleartextovým heslem
- možnost zabalení do SSL (POP3S, IMAPS)
Struktura zprávy
obálka
- identifikace odesílatele a příjemce
- definováno v RFC 821
hlavička
- definována v RFC 822 jako seznam dvojic "jméno: hodnota" na
zvláštních řádcích
- od těla zprávy oddělena prázdným řádkem
- mezilehlé poštovní servery (MTA) mohou hlavičku modifikovat
tělo zprávy
- podle RFC 822 v NVT ASCII 7-bit, bez struktury
- délka řádku obvykle max 1kB, celková délka zprávy 64kB (dnes
obvykle rozšířeno)
- dnes lze použít MIME (binární obsah různých typů médií, multipart
zprávy) - informace o něm v hlavičce
Přeposílání zpráv mezi MTA - relaying
- SW poštovního serveru (sendmail,postfix, ...)
- relay host (poštovní brána)
- brány do sítí s jinými protokoly
Simple Mail Transfer Protocol (SMTP)
- RFC 821
- šíření zpráv od poštovního klienta k poštovnímu serveru nebo mezi
poštovními servery
- používá TCP, port 25
- na jednom spojení může následovat mnoho zpráv (i v obou
směrech-příkaz TURN)
- příkazy orientovány textově
- HELO - identifikace "klienského" MTA (spíše
formální)
- MAIL FROM: - identifikace odesílatele
- RCPT TO: - identifikace příjemce
- DATA - zahájení přenosu samotné zprávy (hlavička + tělo)
- . - tečka jako první znak na samostatném řádku ukončí zprávu
- VRFY - ověření existence mailing listu
- EXPN - rozvinutí mailing listu do seznamu účastníků (kvůli
bezpečnosti někdy zakázáno)
- TURN - výměna rolí klient-server mezi MTA (možnost předání
zpráv ve druhém směru, jsou-li nějaké)
- QUIT - ukončení relace a spojení
Multimedia Mail Extension (MIME)
- RFC 1521
- možnost strukturovat tělo zprávy
- možnost definice interpretace (multimediálních) dat (typ/podtyp,
např. text/html)
- definuje způsob kódování binárních dat
- přidává další pole hlavičky informující příjemce o struktuře těla
zprávy:
MIME-Version:
Content-Type:
text, multipart, message, application, image, audio, video
Content-Transfer-Encoding
7bit (NVT ASCII, default), quoted-printable, base64, 8-bit,
binary (osmibitová data)
Content-Description:
Post Office Protocol v. 3 (POP3)
- RFC 1939
- protokol pro vybírání obsahu poštovních schránek
- architektura klient-server
- nad TCP, port 110
- textově orientované příkazy:
- USER PASS - zaslání autentizačních údajů
- APOP - autentikace heslem kódovaným MD5
- LIST - výpis seznamu uložených zpráv
- RETR - výpis zadané zprávy (do stejného TCP spojení)
- DELE - označení zprávy jako smazané
- RSET - zruší označení zpráv pro smazání
- QUIT - smazání označených zpráv, ukončí relaci a spojení
- UIDL - na základě pořadového čísla zprávy server vrátí
jednoznačný identifikátor této zprávy (přetrvává mezi relacemi)
- TOP - výpis prvních N řádků zadané zprávy
Internet Message Access Protocol IMAP
- RFC 2060
- dokonalejší obdoba POP3
- architektura klient-server, TCP spojení
- předpokládá uchovávání zpráv na serveru (podpora "složek")
- vhodné zejména pro mobilní klienty
- vylepšené autentizační mechanismy
- cílem omezení dat přenášených na klienta
- možnost selektivního načítání zpráv a jejich částí
- možnost vyhledávání ve zprávách přímo na serveru
World Wide Web
- http://www.w3.org

Uniform Resource Locator (URL)
protokol://uživatel:heslo@stroj:port/cesta
Hypertext Transfer Protocol (HTTP)
- model klient-server, požadavek-odpověď
- TCP, port 80
- návaznost na adresy URL
- využívá MIME (data se obalují hlavičkou MIME)
=> rozšiřitelný o formáty různých médií- na rozdíl od MIME
předpokládá, že spojení je binární
- podpora pro autorizaci přístupu
- podpora pro relokaci stránek
Formát zpráv
příkaz odpověď-stav
hlavička hlavička
PRAZDNY_RADEK PRAZDNY_RADEK
(data-obsah formulare) data
Příkazy (metody)
GET xxx HTTP/1.x
- získání dokumentu specifikovaného zadanou cestou/URL
HEAD xxx
- získání hlavičky dokumentu
POST, PUT
- zaslání obsahu formuláře na server
DELETE
- smazání dokumentu (zpravidla nepodporováno nebo jen po
autentizaci)
LINK, UNLINK
- vytvoření/smazání linku na dokument (zpravidla
nepodporováno nebo jen po autentizaci)
OPTIONS
- zjištění metod podporovaných serverem
TRACE
- sledování zpracování požadavku (pro debugging internetových
aplikací)
Pole hlavičky
Vybrané hlavičky používané v
požadavku:
Accept
- typ klientem akceptovatelného média, většinou *
Accept-Charset
- klientem akceptovatelné znakové sady
Accept-Encoding
- klientem akceptovatelná kódování
Content-Encoding
Accept-Language
- klientem akcetovatelné jazyky
Authorization
- klientovy autentizační údaje
If-Modified-Since
- provést metodu, jen pokud byl dokument od zadaného data
modifikován
Referer
- klient může zaslat URL, odkud získal odkaz na požadované URL
- pro účely reklamy a dohledávání chybných odkazů
User-Agent
- jméno a verze WWW prohlížeče
Vybrané hlavičky
používané v odpovědi:
Allow
- výčet serverem podporovaných příkazů (metod)
Content-Encoding
- kódování dokumentu
Content-Language
- jazyk dokumentu
Content-Length
- délka dokumentu (důležité pro HTTP 1.1, kde po odpovědi serveru
není spojení ukončováno)
Content-Type
- MIME typ těla zprávy (např.: text/html)
MIME-Version
- verze MIME
Date
- datum zaslání dokumentu
Expires
- datum expirace platnosti obsahu dokumentu
Last Modified
- datum poslední modifikace dokumentu
Location
- URL, kde se požadovaný dokument právě nachází
- pro automatické
přesměrovávání
Retry After
- čas doporučený pro další pokus při odpovědí Service Unavailable
Server
- jméno a software HTTP serveru
WWW-Authenticate
- serverem podporované autentikační
mechanismy
Refresh
- přikazuje klientovi obnovit obsah dokumentu po určeném počtu
sekund
HTTP 1.0 (RFC 1945)
- spojení iniciuje klient, ukončuje server po odeslání odpovědi
- sestává-li stránka z více dokumentů, každý se získává zvlášť po
zvláštním TCP spojení
HTTP 1.1 (RFC 2068)
- klient může požádat o podržení TCP spojení po vyřízení
požadavku serverem
(=není třeba zřizovat TCP spojení zvlášť pro každý požadavek)
- podpora "virtual hosts" - více logických serverů se stejnou
IP adresou
- v příkazu GET musí být uvedeno celé URL, včetně jména
(virtuálního) WWW serveru
- podpora komprese dat
- možnost přenosu části dokumentu (při výpadku spojení a
novém načítání dokumentu)
- prostor pro "download akcelerátory" při omezování propustnosti
jednotlivých TCP spojení ISP :-)
HTTPS
- "secure" HTTP
- HTTP over SSL (Secure Sockets Layer, dohoda na symetrickém
klíči pomocí asymetrického šifrování a Diffie-Hellmanova algoritmu)
Cookies
- podpora pro stavové transakce
- RFC 2109
- pole hlavičky Cookie, Set-Cookie
Struktura (obsah) cokie
- jméno, hodnota,
- server, path (=kdy zasílat)
- flag secure (=použít výhradně přes HTTPS)
- comment
- max-age
- verze specifikace cookie
Protokoly pro podporu automatické konfigurace
Bootstrap Protocol BOOTP
- konfigurace parametrů protokolu TCP/IP stanice na základě MAC
adresy
- BOOTP server udržuje databázi mapování
- BOOTP klienti požadují přidělení parametrů pro komunikaci
- poskytuje IP adresu, masku podsítě, default gateway, boot TFTP
server, boot
image
- šíří se v UDP broadcastech (lze zajistit průchod přes
směrovače - převod na unicast)
Dynamic Host Configuration Protocol (DHCP)
- dočasné přiřazování adres klientům (na žádost) z poolu volných
adres
- pronájem adresy je třeba periodicky obnovovat
- lze přidělovat i vždy stejné parametry podle MAC adresy
- je možné přidělit adresu natrvalo (kompatibilita s BOOTP)
- žádost UDP broadcastem, mimo segment je třeba přeposílat routerem
- oproti BOOTP umí přidělit více parametrů
- rozšiřitelné na obecně jakýkoli předávaný parametr
Zprávy DHCP
DHCP Discover - vyhledání DHCP serveru (broadcast)
DHCP Offer - DHCP server nabízí parametry k pronájmu
DHCP Request - klient žádá o zarezervování jedné z nabídek
DHCP Ack - žádaný server potvrzuje rezervaci
Relaying DHCP požadavků
