Protokoly služeb Internetu

Telnet


- RFC 854
- emulátor terminálu přes síť (TCP), telnetd a návaznost na ovladače TTY
  na straně serveru

- Network Virtual Terminal - nejmenší možná množina společných parametrů
                             splňovaných všemi reálnými terminály
      -  virtuální znakové zařízení s klávesnicí a tiskárnou

 - NVT ASCII - 7 bit, end-of-line: CR, LF
 - příkazy pro oboustranné dohadování voleb - návrh a potvrzení/zamítnutí volby
   pro lokální i vzdálenou stranu:
    echo, typ terminálu, šířka okna, rychlost terminálu, flow control, ...

 - interrupt key - implementováno s použitím TCP urg ptr
 - znakový vs. řádkový režim
 - port 23

File Transfer Protocol (FTP)

- RFC 959
- přenos souborů mezi dvěma systémy
- nad TCP, autentikace uživatele + obousměrný přenos
- přenos klient-server nebo mezi dvěma vzdálenými počítači

- datové typy ASCII,EBDIC,image/binary

  => Konverze dat, přes NVT ASCII (příkaz TYPE)

- struktura dat soubor/záznam/stránka
- řídící a datové spojení

- příkazy:
   USER PASS LIST PORT RETR STOR TYPE ABORT QUIT
- 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
- porty 20,21

Trivial FTP (TFTP)

 - RFC 1350
 - jednoduchá implementace přenosu souborů
 - bez autentifikace,
 - často použití pro upload software síťových prvků nebo bootovací image
 - nad UDP, stop and wait protokol, paket s povelem pro zaslání/uložení souboru,
   potvrzovací pakety, číslování paketů

Elektronická pošta

User agent (UA), Message Transfer Agent (MTA), mailbox

Struktura a návaznost jednotlivách protokolů: SMTP, POP3, IMAP

Struktura zprávy

obálka - RFC 821
hlavička - RFC 822 dvojice jméno: hodnota na zvláštních řádcích,
           od těla zprávy odděleno prázdným řádkem
         - 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

Přeposílání zpráv mezi MTA - relaying

sendmail, relay host, brány do sítí s jinými protokoly

Simple Mail Transfer Protocol (SMTP)

RFC  821
Port 25

Příkazy:

 HELO MAIL RCPT DATA . QUIT VRFY  
 EXPN - ověření existence mailing listu a jeho rozvinutí do seznamu účastníků
 TURN

Multimedia Mail Extension (MIME)

- RFC 1521
- možnost strukturovat tělo zprávy 
- kódování pro účely přenosu 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

 - Příkazy:
     USER PASS
     APOP - autentikace heslem kódovaným MD5
     LIST RETR DELE RSET QUIT
     UIDL - na základě pořadového čísla zprávy server vrátí jednoznačný
            identifikátor této zprávy
     TOP - zjištění prvních N řádků zadané zprávy

Internet Message Access Protocol IMAP

 - RFC 2060
 - zejména pro mobilní klienty, předpokládá uchovávání zpráv na serveru
 - dokonalejší obdoba POP3:
    * možnost selektivního načítání zpráv a jejich částí
    * vylepšené autentikační mechanismy
    * podpora více poštovních schránek
    * vyhledávání ve zprávách

World Wide Web

- http://www.w3.org

Struktura URL

protokol://uživatel:heslo@stroj:port/cesta

Hypertext Transfer Protocol (HTTP)


HTTP 1.0: RFC 1945
==================
 - model klient-server, požadavek-odpověď, 
 - 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á binární spojeni

 - podpora pro autorizaci přístupu
 - podpora pro relokaci stránek


 - stránka sestává z více dokumentů, každý se získává zvlášť po zvláštním
   TCP spojení
 - spojení iniciuje klient, ukončuje server po odeslání odpovědi

Formát zpráv
------------
příkaz				odpověď-stav
hlavička			hlavička
 PRAZDNY_RADEK                    PRAZDNY_RADEK  
(data)				data


Příkazy (metody)
----------------
GET  HTTP/1.0
HEAD
POST - zaslání obsahu formuláře na server
PUT
DELETE
LINK
UNLINK
OPTIONS

Pole hlavičky
-------------
Accept - typ klientem akceptovatelného média, většinou *
Accept-Charset - klientem akceptovatelné znakové sady
Accept-Encoding - definuje množinu přijatelných hodnot Content-Encoding
Accept-Language
If-Modified-Since
Referer - posílá klient, URL, kde získal odkaz na dané URL
        - pro účely reklamy a dohledávání chybných odkazů
User-Agent - jméno a verze WWW prohlížeče

Allow - výčet serverem podporovaných příkazů (metod)
Authorization - informace pro autentikaci uživatele v daném autentikačních
                mechanismu

Content-Encoding
Content-Language
Content-Length
Content-Type - MIME typ těla zprávy (př.: text/html)
MIME-Version
Date
Expires
Last Modified
Location - URL, kde se zdroj nachází, pro automatické přesměrovávání
Retry After - při odpovědí Service Unavailable
Server - jméno a SW HTTP sereru
WWW-Authenticate - server popisuje podporované autentikační mechanismy
Refresh=seconds


HTTP 1.1, RFC 2068
==================
* trvalá spojení přes několik požadavků
* podpora komprese dat
* virtual hosts - více logických serverů se stejnou IP adresou
* možnost přenosu části dokumentu (při výpadku spojení a novém načítání 
                                   dokumentu)

HTTPS
=====
 - secure HTTP, HTTP over SSL

Cookies
=======
 - podpora pro stavové transkace
 - RFC 2109
 - pole hlavičky Cookie, Set-Cookie

Struktura cookie
 jméno, hodnota, server, path, flag secure (=použít výhradně přes HTTPS),
 comment, max-age, verze specifikace cookie

Adresářová služba

 - přístup k hodnotám atributů vázaných na jména objektů
 - často hiererchická, jmenný kontext
 - struktura: uživatel (klient) a server(y) adresářové služby 
 - pouze pro čtení nebo možnost aktualizace databáze
   (s ohledem na přístupová práva)

* Jmenné služby (name services): mapování mezi "čitelnými" logickými jmény
                               pro člověka a adresami na úrovni technologie
* Jmenný prostor (namespace)
  - kolekce všech jmen přístupných přes jmennou službu
  - definuje konvence a syntaxi pojmenovávání objektů

Domain Name System (DNS)

 - RFC 1034, 1035, definuje koncepci, jmenný prostor a protokol resolver-server,
   (resp. server-server)
 - jmenná služba používaná v Internetu, mapování logických jmen na IP
   adresy
 - využívá distribuovanou databázi, DNS servery
 - hierarchická, informace organizovány do stromu, každý uzel lze identifikovat
   doménovým jménem 
 - doménové jméno vytvořeno spojením jména uzlu se všemi jmény uzlů na cestě
   ke kořeni, oddělovačem tečka, délka komponenty max. 63 znaků, celková délka
   jména 256 znaků, case insensitive

Domény nejvyšší úrovně: edu, com, mil, gov, net, org, zkratky států

zóna - část stromu spravovaná separátně, delegace zodpovědností za správu zón,
       pro každou zónu zvláštní DNS server

Autoritativní server domény - spravuje databázi příslušné domény

Obvykle se používá možnost rekurzivního vyhledávání name severem

Postup vyhledávání
------------------

- po komponentech jména, začíná se od root serverů, jejich adresy 
  nakonfigurovány pevně v DNS serverech (příp. resolverech)

- při dotazu na jméno, které není pod správou dotazovaného NS může NS
  poslat negativní odpověď nebo provést rekurzivní vyhledání a poslat
  neautoritativní odpověď


Primární a sekundární name servery
----------------------------------
- informace permanentně uložena v souborech na primárním serveru
- sekundární servery periodicky testují u primárního, zda mají aktuální verzi
  DB, vyžádání transferu databáze od primárního serveru 
- při změnách v DB nutno změnit číslo verze
- caching-only DNS servery

Resolver
--------
 - část SW klienta, který provádí komunikaci s DNS serverem
 - konfigurace default domain pro relativní jména
 - konfigurace primárního a záložních name serverů

Komunikace resolver-name server (nebo mezi name servery)
--------------------------------------------------------
protokol nad UDP port 53, dlouhá data a transfery zón mezi
servery TCP port 53.

Záznamy databáze DNS
--------------------
A: IP adresa
NS: nameserver pro doménu
MX: poštovní server (brána) pro doménu
CNAME: kanonické jméno (alias)
SOA: Start of Authority, informace o správě domény
PTR - ukazatel na doménové jméno (mapování IP adresy na jméno)
HINFO - popisné informace o HW a OS počítače
TXT - obecný textový řetězec

U každého záznamu doba TTL, po kterou se záznam smí držet v cache


Reverzní domény
---------------
 - mapování IP adres na doménová jména
 - doména in-addra.arpa, pak rozděleno na NS po bajtech adresy
 - tyto NS provozují kontinentální správní organizace, poskytovatelé 
   a jednotlivé organizace 

  Př.: 10.146.196.158.in-addr.arpa

Dynamic DNS (DDNS)

- RFC 2136 - dynamická DNS, umožňuje dynamické registrování IP adres k doménovým jménům - užitečné při dynamickém přidělování adres

Návaznost na elektronickou poštu

X.500

- 1993
- globální adresářová struktura
- informační model pro ukládání informací v adresáři - hierarchicky


* Directory User Agent (DUA), entita na straně klienta pro přístup
                              k adresářové službě

* Directory Information Tree (DIT) - logické uspořádání informací
                                     adresářové služby

 DIT může být distribuován mezi více adresářových serverů
  - podle geografické nebo organizační hierarchie

* Každá položka má distinguished name, hierarchie C, O, OU, CN
* relative distinguished name

* Directory Information Base (DIB) - uchovává jednotlivé položky (objekty)
                                     adresáře

  Položka definována několika atributy, atribut má typ a hodnotu, existují
  povinné a volitelné atributy

  Každá položka má povinný atribut typu ObjectClass, ten definuje
  další atributy

Práce s adresářovou službou
----------------------------
- připojení klienta k adresářovému serveru a vytvoření relace
- autentikace
- pak práce se stromem - operace je možné podepisovat

- dosti složitá implementace, protokol DAP založem na protokolech OSI

Protokoly
---------
DAP: Directory Access Protocol - mezi DUA a serverem
DSP: Directory System Protocol - mezi servery, pro zprostředkované vyhledávání
                                 informace
DISP: Directory Information Shadowing Protocol
  - replikace databáze mezi servery, možnost vyvažování zátěže mezi více
    serverů 

-> klient musí dostat stejný obraz dat bez ohledu na server, na který
   se přpojuje

-> v případě, že server nespravuje požadovanou informaci, vyhledá ji u ostatních
   serverů (chaining), nebo odkáže klienta na příslušný server (referral)
-> možnost vícesměrného dotazování současně na více serverů

Lightweight Directory Access Protocol (LDAP)

- otevřený standard adresářové služby v prostředí Internetu (RFC 1777), 
  podporují i komerční firmy
- podmnožina X.500
- nad protokolem TCP - nepotřebuje implementaci složitých OSI protokolů
- zjednodušená autentikace při přihlašování k serveru, možnost anonymního
  přihlašování
- servery nevracejí odkaz na jiný server, klientovi se stačí připojit
  k jednomu serveru
- jednodušší kódování dat oproti X.500
- k dispozici knihovna v C pro klienta (RFC 1823)
- Práva přístupu k distinguished name:
   žádná, compare, browse, delete, read, write,
- definice tříd objektů přímou součástí protokolu

vzniká v.3:
 - server LDAP nemusí být současně serverem X.500
 - původně se LDAP server řešil konverzí LDAP na DAP na straně serveru
 - povoleno vracení odkazu na jiný server
 - možnost zjistit třídy objektů a jimi podporované atributy
   -> rozšiřitelnost schematu
 - bezpečnostní mechanismy certifikátů X.509, SSL
 - podpora Unicode
 - podpora nespojované služby Connectionless LDAP (CLDAP) 
    - nad UDP, pro jednoduché dotazy a rychlou odezvu

Novell Directory Services - NDS

Implementace distribuované replikované adresářové služby ve stylu X.500 v prostředí Novell

Protokoly pro podporu automatické konfigurace

Bootstrap Protocol BOOTP

- konfigurace parametrů protokolu TCP/IP stanice na základě MAC adresy
- BOOTP server a BOOTP klienti
- obdoba RARP, ale poskytuje více informací - default gateway, boot image, ...
- šíří se v UDP broadcastech, může procházet přes směrovače 

Dynamic Host Configuration Protocol (DHCP)