Server je obecné označení pro proces nebo systém, který poskytuje nějakou službu. Služba je obvykle realizována některým aplikačním síťovým protokolem, jako je například HTTP (web server) nebo LPD (tiskový server).
Proces, který službu využívá, se nazývá klient, architektura, která používá tento princip se nazývá klient-server.
Klient-server je síťová architektura oddělující klienta (často aplikaci využívající grafické uživatelské rozhranní) od serveru. Každá instance klientského softwaru může posílat požadavky na severovou aplikaci. Existuje mnoho druhů serverů, např. souborový server, terminálový server, mail server apod. Ač jejich účel se mění, základní architektura zůstává zachována.
Přestože nasazení této myšlenky je velice rozmanité, nejjednodušší případ je vidět na zobrazení této konkrétní webové stránky. Tato stránka je zobrazena ve webovém prohlížeči, ovšem byla vygenerována za pomoci aplikací, databáze a dlších prostředků uložených na webovém serveru. Pokud webový prohlížeč pošle dotaz na webový server, server vyhledá potřebné informace a sloučí je do podoby webové stránky, kterou následně odešle klientskému prohlížeči. Těchto požadavků může server zpracovávat najednou i větší množství.
Smyslem klient-server architektury je poskytovat škálovatelnou architekturu, ked každý počítač nebo klient na síti je buď serverem nebo klientem. Servery bývají často, ale ne vždy výkonné počítače vyhrazené pro vykonávání specifické úlohy. Klientské počítače obvykle pouze zprostředkovávají (zobrazují) informace poskytnuté serverem člověku, proto může bý jejich výkon výrazně nižší.
Práce serveru
Práce klienta
Server může být stavový nebo nezstavový podle toho zada si uchovává informaci mezi jednotlivými dotazy. Příkladem bezstavového serveru je jednoduchý webový HTTP server, který si mezi odesláním jednotlivých stránek neuchovává žádné informace. Příkladěm stavového serveru buďiž napříklada aplikační Apache Tomcat.
Interakce mezi klientem a serverem může být zkreslena pomocí sekvenčních diagramů nebo posána pomocí jayka UML.
V nejjednodušším případě je arictektura klient-server dvouvrstvá - jednou vrstvou je klient druhou server. Vněkterých případech může bý i server vnitřne rozdelen na několik vrstev - v takovém případě server skládá dopověd na požadavek klienta pomocí dotazů na další servery - sám se stává jejích klientem.
Protokolová architektura TCP/IP je definována sadou protokolů pro komunikaci v počítačové síti. Komunikační protokol je množina pravidel, které určují syntaxi a význam jednotlivých zpráv při komunikaci.
Vzhledem ke složitosti problémů je síťová komunikace rozdělena do tzv. vrstev, které znázorňují hierarchii činností. Výměna informací mezi vrstvami je přesně definována. Každá vrstva využívá služeb vrstvy nižší a poskytuje své služby vrstvě vyšší.
Komunikace mezi stejnými vrstvami dvou různých systémů je řízena komunikačním protokolem za použití spojení vytvořeného sousední nižší vrstvou. Architektura umožňuje možnost výměny protokolů jedné vrstvy bez dopadu na ostatní. Příkladem může být možnost komunikace po různých fyzických médiích - ethernet, token ring, sériová linka.
Architektura TCP/IP je členěna do čtyřech vrstev (narozdíl od referenčního modelu OSI se sedmi vrstvami):
Nejnižší vrstva umožňuje přístup k fyzickému přenosovému médiu. Je specifická pro každou síť v závislosti na její implementaci. Příklady sítí: Ethernet, Token ring, FDDI, X.25, SMDS.
Vrstva zajišťuje především síťovou adresaci, směrování a předávání datagramů. Protokoly: IP, ARP, RARP, ICMP, IGMP, IGRP. Je implementována ve všech prvcích sítě - směrovačích i koncových zařízeních.
Transportní vrstva je implementována až v koncových zařízeních (počítačích) a umožňuje proto přizpůsobit chování sítě potřebám aplikace. Poskytuje spojované (protokol TCP, spolehlivý) či nespojované (UDP, nespolehlivý) transportní služby.
Vrstva aplikací. To jsou programy (procesy), které využívají přenosu dat po síti ke konkrétním službám pro uživatele. Příklady: Telnet, FTP, HTTP, DHCP, DNS.
Aplikační protokoly používají vždy jednu ze dvou základních služeb transportní vrstvy: TCP nebo UDP, případně obě dvě (např. DNS). Pro rozlišení aplikačních protokolů se používají tzv. porty, což jsou domluvená číselná označení aplikací. Každé síťové spojení aplikace je jednoznačně určeno číslem portu a transportním protokolem (a samozřejmě adresou počítače).
Internet Protocol je základní protokol síťové vrstvy a celého Internetu. Provádí vysílání datagramů na základě síťových IP adres obsažených v jejich záhlaví. Poskytuje vyšším vrstvám síťovou službu bez spojení. Každý datagram je samostatná datová jednotka, která obsahuje všechny potřebné údaje o adresátovi i odesilateli a pořadovém čísle datagramu ve zprávě. Datagramy putují sítí nezávisle na sobě a pořadí jejich doručení nemusí odpovídat pořadí ve zprávě. Doručení datagramu není zaručeno, spolehlivost musí zajistit vyšší vrstvy (TCP, aplikace).
Tento protokol se dále stará o segmentaci a znovusestavení datagramů do a z rámců podle protokolu nižší vrstvy (např. ethernet).
V současné době je převážně používán protokol IP verze 4. Je připravena nová verze 6, která řeší nedostatek adres v IPv4, bezpečnostní problémy a vylepšuje další vlastnosti protokolu IP.
Address Resolution Protocol se používá k nalezení fyzické adresy MAC podle známé IP adresy. Protokol v případě potřeby vyšle datagram s informací o hledané IP adrese a adresuje ho všem stanicím v síti. Uzel s hledanou adresou reaguje odpovědí s vyplněnou svou MAC adresou. Pokud hledaný uzel není ve stejném segmentu, odpoví svou adresou příslušný směrovač.
Příbuzný protokol RARP (Reverse Address resolution Protocol) má za úkol najít IP adresu na základě fyzické adresy.
Internet Control Message Protocol slouží k přenosu řídících hlášení, které se týkají chybových stavů a zvláštních okolností při přenosu. Používá se např. v programu ping pro testování dostupnosti počítače, nebo programem traceroute pro sledování cesty paketů k jinému uzlu.
Transmission Control Protocol vytváří virtuální okruh mezi koncovými aplikacemi, tedy spolehlivý přenos dat. Vlastnosti protokolu:
User Datagram Protocol poskytuje nespolehlivou transportní službu pro takové aplikace, které nepotřebují spolehlivost, jakou má protokol TCP. Nemá fázi navazování a ukončení spojení a už první segment UDP obsahuje aplikační data. UDP je používán aplikacemi jako je SNMP, DNS a BOOTP.
Protokol používá podobně jako TCP čísla portů pro identifikaci aplikačních protokolů.
HTML je zkratka z anglického HyperText Markup Language, značkovací jazyk pro hypertext. Je jedním z jazyků pro vytváření stránek v systému World Wide Web, který umožňuje publikaci stránek na Internetu.
Jazyk je podmnožinou dříve vyvinutého rozsáhlého univerzálního značkovacího jazyka SGML (Standard Generalized Markup Language). Vývoj HTML byl ovlivněn vývojem webových prohlížečů, které zpětně ovlivňovaly definici jazyka.
Jazyk HTML je od verze 2.0 aplikací SGML. Je charakterizován množinou značek a jejich atributů pro danou verzi definovaných. Mezi značky se uzavírají části textu dokumentu a tím se určuje význam (sémantika) obsaženého textu. Názvy jednotlivých značek se uzavírají mezi úhlové závorky ("<" a ">"). Část dokumentu uzavřená mezi značkami tvoří tzv. element (prvek) dokumentu. Součástí obsahu elementu mohou být další vnořené elementy. Atributy jsou doplňující informace, které upřesňují vlastnosti elementu.
Značky (také nazývané tagy) jsou obvykle párové. Rozlišujeme počáteční a koncové značky. Koncová značka má před názvem značky znak lomítko. Příklad pro označení odstavce:
<p>Text odstavce</p>
Některé značky jsou nepárové - neobsahují žádný text. Příklad pro vykreslení vodorovné čáry
<hr/>
Tagy mohou obsahovat atributy popisující jejich vlastnosti nebo nesou jinou informaci. Příkladem může být odkaz (tag a), jehož atribut href říká, kam se uživatel po kliknutí na něj dostane (v tomto příkladu na stránku http://example.com)
<a href="http://example.com">odkaz</a>
Pro každou verzi existuje definice pravidel DTD (Document Type Definition). Od verze 4.01 musí být odkaz na deklaraci DTD v dokumentu uveden pomocí klíčového slova DOCTYPE. DTD definuje pro určitou verzi, které elementy je možné používat a s jakými atributy.
Dokument může mimo značkování obsahovat další prvky:
Dokument v jazyku HTML má předepsanou strukturu:
Příklad HTML pro verzi 4.01:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<!-- toto je komentář -->
<head>
<title>Titulek stránky</title>
</head>
<!-- tělo dokumentu -->
<body>
<H1>Nadpis stránky</H1>
<p>Toto je tělo dokumentu</p>
</body>
</html>
Odkaz:
<A HREF="http://cs.wikipedia.org">"Wikipedia-priklad odkazu"</A>
Značky můžeme z hlediska významu rozdělit na tři základní skupiny:
Webové prohlížeče jsou programy, jejichž účelem je prezentovat dokument na zobrazovacím zařízení - převážně monitoru počítače. Dokument je prohlížečem načítán a rozkládán (parsován, syntaktická analýza) na jednotlivé elementy. Prohlížeč obsahuje tabulku značek, které podporuje. Tuto tabulku je možné omezit typem dokumentu (DTD), je-li deklarován.
Každému elementu je poté přiřazen styl (způsob zobrazení). Styly mohou být uvedeny ve stylovém předpisu. Vlastnosti stylů, které nejsou předepsány, doplní prohlížeč podle implicitního stylu, který má zabudován. Některé prohlížeče umožňují uživateli implicitní styly definovat.
Novější prohlížeče pracují obecně ve dvou základních režimech:
Režim se stanoví obecně podle typu dokumentu, ale rozhodování je dost složité (označuje se výrazem doctype sniffing). Účelem je zachování zpětné kompatibility pro dokumenty, které nedodržují definici HTML. Tato vlasnost ale umožňuje vytvářet nestandardní dokumenty - autory zatím nic nenutí pracovat bez chyb podle specifikace.
Prohlížeče mají různé implicitní styly zobrazování a chovají se různě v quirk módu. Stejný dokument se tedy může v různých prohlížečích zobrazovat různě, rozdíly jsou i mezi verzemi prohlížeče stejného výrobce. Současné chování prohlížečů je výsledek vývoje, kdy si výrobci jednotlivých prohlížečů přizpůsobovali definici HTML podle svých potřeb a prohlížeče podporovaly nestandardní elementy a syntaxi. Řada těchto „vylepšení“ byla následně přejímána do standardů, a některé zase v dalších verzích vyřazeny.
Vývoj jazyka HTML byl ukončen verzí 4.01. Dalším pokračováním vývoje jazyků pro psaní dokumentů na webu je jazyk XHTML.
Důvodů pro tuto změnu je celá řada. Překotný vývoj prohlížečů umožnil vznik obrovského množství dokumentů, které neodpovídají specifikaci HTML. Současné prohlížeče tolerují chybné značkování (neuzavřené, překřížené, či špatně vnořené elementy) a řadu dalších chyb a při parsování se s těmito chybami snaží vyrovnat („myslí“ za uživatele), zpravidla však ale ne dle představ tvůrce. Tento princip je ale příliš náročný pro nový druh aplikací, které vznikají pro malá méně výkonná zařízení - mobilní telefony, přenosné počítače (palmtopy) atd. Tyto aplikace potřebují přesně definovanou strukturu s přesnými pravidly. To poskytuje jazyk XML, ale HTML není aplikací XML a těmto novým požadavkům nevyhovuje. Pokud by však nové verze prohlížečů začaly vyžadovat přesně napsané HTML dokumenty bez chyb, pravděpodobně většina dokumentů na webu by nešla zobrazit.
V současné době probíhá přecho na XHTML s používáním kaskádových stylů, protože XHTML 1.0 a HTML 4.0 jsou si prakticky ekvivalentní, měnila se pouze syntaxe.
Vývoj tedy pokračuje jiným jazykem, ale specifikace HTML platí dál - je tedy možné vyvíjet nové aplikace a vytvářet dokumenty podle HTML 4.01 všude tam, kde tento jazyk stačí. I HTML kód je možné psát tak, aby do značné míry vyhovoval novým požadavkům na dokumenty webu.
FTP (File Transfer Protocol) je protokol aplikační vrstvy z rodiny TCP/IP, je určen pro přenos souborů mezi počítači, na kterých mohou běžet velmi rozdílné operační systémy.
Je to jeden z nejstarších protokolů, pracuje 8-bitově na principu klient-server na portech TCP/20 a TCP/21. Port 20 slouží k vlastnímu přenosu dat, port 21 slouží ke kontrole a jsou jím také přenášeny ftp příkazy. Když jsou přenášena data, je kontrolní port nečinný. To může způsobit problémy v případě přenosu velkého množství dat přes firewally, které přenos po delší době nečinnosti kontrolního portu přeruší. I když mohou být data úspěšně přenesena, je přesto generována chyba.
Je definován v RFC959. Protokol je interaktivní a umožňuje řízení přístupu (přihlašování login/heslo), specifikaci formátu přenášeného souboru (znakově - binárně), výpis vzdáleného adresáře atd. V současné době už není považován za bezpečný a z tohoto důvodu pro něj byla definována některá rozšíření (RFC 2228).
Jsou potřebné 2 počítače pro přenos protokolem ftp. Na prvním počítači musí být nakonfigurován a spuštěn ftp server. Tento počítač poskytuje data pro ostatní počítače. Další počítače (nazývaní klienti) se můžou připojovat na ftp server pomocí programu k tomu určenému. Po připojení klienta může dělat řadu operací, jako odesílání dat na server, stahování ze serveru, přejmenování, mazání a řadu dalších.
Výrobci softwaru jsou schopni vytvořit FTP server nebo klienta, protože FTP protokol je definován standardem. Tento standard je použitelný pro všechny platformy (operační systémy). To dovoluje použít pro FTP přenos jakýkoliv počítač, připojený přes TCP/IP protokol k internetu.
Existuje mnoho programů pro FTP servery a klienty a mnoho je jich volně dostupných.
FTP běžně pracuje na dvou portech, 20 a 21 a běží výhradně přes TCP (Transmission control protocol). FTP server naslouchá na portu 21 na příchozí spojení z FTP klienta. Na tomto portu běží příkazy, které zachytává server. Na portu 20 se přenáší pouze data, nikoliv příkazy. Jakmile se začnou stahovat data,na příkazovém portu se nic nepřenáší. Může nastat problém při stahování dlouhých dat přes firewally, protože po dlouhé nečinnosti portu 21 ho může odpojit, a objeví se chybové hlášení.
Nejprve jenutné si opatřit FTP klienta. Mnoho operačních systémů má již integrovaný nějaký tento program. Pro spuštění FTP klienta ve windows otevřete příkazovou řádku. (klikněte na start, potom na Spustit, a do okénka napište CMD). napište FTP a odešlete. Nyní můžete příkazem open název serveru otevřít ftp server. např.:
open ftp.freebsd.org
Nyní jste připojeni na server ftp.freebsd.org. Tento server podporuje anonymní připojení, takže jméno uživatele může být třeba „ftp“ a heslo emailová adresa (nebo může být prázdné). Jestliže server nepodporuje anonymní přihlašování, musíte do jména a hesla zadat údaje získané administratorem serveru nebo pověřenou osobou. např: „User ftp“ pro další informace můžete napsat slovo „help“ a vyjedou vám další informace. Naprostá většina anonymních serverů umožnuje pouze čtení dat. Takže nám půjde si stáhnou požadovaný soubor do svého počítače,u některých funguje i nahrávání dat na server.
Nejčastější užití ftp přenosů jsou:
FTP je nejčastěji používáno lidmi, kteří chtějí mít přístup na systém souborů na jiném počítači. To je nejčasteji realizováno přes programy na používání FTP, u kterých si nemusíme pamatovat strukturu příkazů a pracují velice podobně jako běžný průzkumník (např. oblíbený Total Commander také podporuje FTP).
Při běžném připojování pomocí protokolu FTP jsou přihlašovací údaje (jméno a heslo) přenášeny v textové podobě a je technicky možné je odchytit. Následně mohou být naše data zcizena nebo upravena. Často slyšíme a čteme, jak se hackeři nabourali do serverů a nezřídka jim k tomu stačil tak triviální úkon, jakým je zachycení nešifrovaného FTP hesla. Netřeba zdůrazňovat, že následky těchto útoků mohou mít katastrofální dopad. V dnešní době je dostupný tzv Secure FTP, který je zpětně kompatibilní s běžným FTP.
Příkazy lze rozdělit do tří skupin:
Access Control Commands
Transfer Parameter Commands
FTP Service Commands
Připojení k FTP serveru je možné realizovat v aktivním nebo pasivním režimu. Pasivní režim je bezpečnější, ale ne vždy je technicky realizovatelný.
Aktivní režim
Na portu TCP/20 jsou přenášena data (data connection). V aktivním režimu navazuje připojení pro přenos dat server, klient naslouchá. Problém zpravidla nastává v případě, kdy se klient připojuje z privátní sítě a jeho IP adresa je překládána (NAT).
Pasivní režim
V pasivním režimu navazuje data connection klient, kterému při sestavování připojení poslal server svou IP adresu a TCP port, na kterém naslouchá.
FTP server, port forward (PF) a pasivní připojení
Pokud je připojení k FTP serveru realizováno prostrednictvím PF (nejcastěji se jedná o router s NAT a PF), tak router musí mít následující vlastnost - čte datovou část paketů FTP připojení, zjistí na jakém portu server naslouchá pro navázání data connection klientem a tento port začne forwardovat směrem k serveru. Po ukončení relace je ukončen i popsaný PF.
Routery mají zpravidla tuto vlastnost již vestavěnou. V případě systému Linux je nutné na routeru spustit příslušný modul - příkaz je 'modprobe ip_conntrack_ftp'
Telnet je klient/server protokol virtuálního terminálu pro komunikaci mezi stanicemi v síti TCP/IP.
Protokol používá port TCP/23. Umožňuje přihlášení ze vzdáleného počítače (klient) pro interaktivní práci na jiném počítači (server). Při přihlášení je obvykle požadována kombinace login/heslo, tyto údaje jsou ale přenášeny po síti nešifrované a protokol proto není považován za bezpečný.
Protokol v plain textu přenáší na server stisknuté klávesy a za klienta zpěť znaky které vrátil process na serveru. Toho lze využít pro tesování libovolných služeb na serveru. Stačí se klientským programem telnetu připojit na adresu a port, na níž běží server který chceme otestovat a server buď rovnou vypíše nějaké informace nebo reaguje na zaslané znaky. Tímto způsobem je například možné z příkazové řádky si přečít nebo napsat email pouhým připojením na port kde běží služba SMTP nebo POP3. Podmínkou je pochopitelně znalost příslušných příkazů SMTP nebo POP3.
Vzhledem ke své nezabezpečenosti je v současné době protokol TELNET vytlačován svou zabezpečenou (kryptovanou) variantou SSH.
DHCP (Dynamic Host Configuration Protocol) je aplikační protokol z rodiny TCP/IP. Používá se pro automatické přidělování IP adres koncovým stanicím v síti.
Současně s IP adresou může posílat server stanicím (klientům) další nastavení potřebná pro používání sítě jako je adresa nejbližšího směřovače, masku sítě, adresy DNS serverů. Ve větších sítích se správce někdy rozhodne posílat i adresy doporučených NTP, WINS, SMTP serverů, stárnutí ARP cache a jiné. Navíc je možné definovat i uživatelské parametry. Parametry, kterým klient nerozumí, ignoruje.
DHCP protokol přináší několik výhod:
DHCP protokol je rozšířením staršího BOOTP protokolu, který přiděloval IP adresy na neomezenou dobu. DHCP je s BOOTP obousměrně kompatibilní. To znamená, že DHCP klienti dovedou získat nastavení z BOOTP servru a DHCP server může přidělit IP adresu BOOTP klientovi (zde je třeba opatrnosti, protože BOOTP klient bude jednou přidělenou IP adresu používat už navždy).
Klienti žádají server o IP adresu, ten u každého klienta eviduje půjčenou IP adresu a čas, do kdy ji klient smí používat (doba zapůjčení, angl. lease time). Poté co vyprší, smí server adresu přidělovat jiným klientům.
Klient komunikuje na UDP portu 68, server naslouchá na UDP portu 67.
Po připojení do sítě klient vyšle broadcastem DHCPDISCOVER paket. Na ten odpoví DHCP server paketem DHCPOFFER s nabídkou IP adresy. Klient si z (teoreticky několika) nabídek vybere jednu IP adresu a o tu požádá paketem DHCPREQUEST. Server mu ji vzápětí potvrdí odpovědí DHCPACK.
Jakmile klient obdrží DHCPACK, může už IP adresu a zbylá nastavení používat.
Klient musí před uplynutím doby zapůjčení z DHCPACK obnovit svou IP adresu. Pokud lhůta uplyne aniž by dostal nové potvrzení, klient musí IP adresu přestat používat.
Protokol definuje roli i tzv. DHCP relay agenta. Používá se v situaci, kdy existují dvě nebo více sítí oddělené směrovačem a jen jedna síť má server. V takovém případě správce na směrovači zapne relay agenta a nastaví jej tak, aby všesměrové (broadcast) DHCP dotazy ze sítí bez DHCP serveru přeposílal do té sítě, která ho má. Agent k přeposílanému dotazu přidá masku té sítě, kde klienta zaslechl, aby DHCP server poznal, ze kterého adresního rozsahu má klientovi adresu přiřadit.
Protokol DHCP není jediný způsob, jak nastavit parametry sítě. Další možnosti jsou