TCP/IP
Tartalomjegyzék
Története
A 70-es évek elején az amerikai védelmi minisztérium kutatással, fejlesztéssel foglalkozó irodája ( ARPA ) aláírt egy tervezetet, hogy a fejlesztések hatékonyságának növelése céljából létre kell hozni egy nyilvános számítógép hálózatot. Az ARPAnet kutatóintézetek, egyetemek számítógépeinek összekapcsolásával jött létre. A UNIX operációs rendszer részeként kifejlesztett hálózatos szoftver a TCP/IP elnevezést kapta. Az amerikai állami intézményekben 1983 óta kötelező a használata. A Windows 95-el a Microsoft is áttért a TCP/IP használatára. Ezt a hálózatot ma Internetnek nevezik.
A TCP/IP dokumentációi
A hálózatban használt elvek, szoftverek leírása az ugynevezett rfc-k ben ( Request for Comments )találhatók. A dokumentumok közönséges szöveges fájlok formájában hozzáférhetők a neten. Keletkezésük időrendi sorrendjének megfelelően sorszámot kaptak a bennük való keresés megkönnyítésére. Számuk ma 4000 körüli. A dokumentumok százasával külön alkönyvtárakban találhatók. Például az rfc10xx alkönyvtár tartalmazza az 1000-1099 számú dokumentumokat. A dokumentumok tartalomjegyzéke az rfc-index fájlban található.
A TCP/IP architektúra
A hálózatos szoftver négy rétegű architektúrát követ. A különféle fizikai közegeken ( drót, rádiócsatorna, optikai szál, stb.) akalmazott fizikai címzési eljárások, közeghozzáférési eljárások megvalósításával az interfész réteg hardver és szoftver eszközei foglalkoznak. A hálózatban minden gép ( Host ) szoftver IP ( Internet Protocol ) címet kap. E címek kiosztása egyeztetés alapján történik. ( www.internic.net ). A gépekre telepített IP szoftver képezi a második réteget, mely hálózati rétegfunkciókat lát el. A szoftver feladata IP csomagok kezelése. A csomag a feladó és címzett IP címét tartalmazza. E címek alapján továbbítható az IP csomag két tetszőleges gép között. Az IP szoftver csomagok fragmentálásával is foglalkozhat, ha ezt az IP szolgáltatásait használó alkalmazás előírja, vagy a fizikai közeg tulajdonságai miatt szükségessé válik.
Az IP szoftver hibakezelési algoritmusokat is tartalmaz. Ezeket gyakran külön szoftvernek, protokolnak tekintik, és ICMP-nek ( Internet Control Message Protocol )nevezik. A harmadik réteg az adatok megbízható szállítását biztosítja. Ez a TCP ( Transmission Control Protocol ). A szoftvert azért nevezik megbízhatónak, mert a kapcsolatot felépíti, az ezt követő adatátvitelt felügyeli, végül gondoskodik a kapcsolat elbontásáról a két gép között. A TCP mellett gyakran az UDP szállítási protokol szerepel. Ez nem megbízható protokol, ezért egyszerűbb és emiatt gyorsabb. Az elindított alkalmazások döntik el, hogy melyik szállítási protokolra van szükségük.
A negyedik réteg az alkalmazási réteg. Az ide tartozó szoftverek száma több ezer. A felhasználó dönti el, melyikre van szüksége, például FTP ( File Transfer Protocol ), vagy SMTP ( Simple Mail Transfer Protocol ) ha fájlt akar másolni a hálózatban, vagy levelet akar küldeni.
Miért TCP/IP a neve?
A fizikai közeg tetszőleges lehet, azzal ez a protokoll nem foglalkozik. Az alkalmazási rétegbeli szoftverről is a felhasználó dönt. Ez a protokoll kizárólag az IP réteggel foglalkozik, továbbá a TCP keretek sorrendhelyes átvételével, nyugtázásával. Ezért hívják TCP/IP-nek.
Az IP réteg felett az alábbi protokollok fordulnak elő gyakrabban:
- ICMP (ping)
- TCP (telnet, ssh, ftp, http, ...)
- UDP (rtp, dns, ...)
- SCTP - ez egy igen fiatal, de ígéretes protokol multimédiás alkalmazásokhoz
- AXIP - rádióamatőr protokoll az AX.25 keretek IP feletti továbbítására
A rétegek közötti kapcsolat
A fizikai szintű csomag a fizikai címen ( például ethernet cím ) kívül tartalmaz egy tipus azonosító mezőt is. Az ebben található szám jelzi, hogy a fizikai csomag adatmezőjét melyik szoftvernek kell átadni további vizsgálatra, illetve, hogy mely szoftver generálta az adatmező tartalmát. Például a 0800 szám azt jelzi, hogy a csomag adatmezőjét az IP szoftver generálta, vagy vétel esetén az IP szoftver a címzettje. Az interfész réteg és hálózati ( IP ) réteg közötti kapcsolatnak ez az alapja. Az IP csomag fejléce tartalmaz egy Protocol mezőt. Az ebben található szám jelzi, hogy az IP csomag adatmezőjét melyik szállítási protokolnak kell átadni további feldolgozásra, illetve honnan származik az IP csomag adatmezője. A TCP-t a 6-os szám azonosítja. Ez az alapja a TCP és az IP szoftverek közötti kapcsolatnak. A szállítási rétegfunkciót megvalósító TCP fejléce rendelkezik két mezővel, mely az egymásal kommunikáló alkalmazásokat azonosítja. Ezek az azonosítók a portszámok. A felhasználó által elindított program, a kliens alkalmazás mindíg véletlen portszámot kap. A szerver alkalmazások szigoróan kiosztott portszámmal azonosíthatók. Például a http szerver azonosítója, portszáma 80. A TCP szoftver ebből tudja, hogy a lehetséges többezer szerver szoftver közül éppen a http szerver a TCP csomag címzettje, vagy feladója. A szállítási és alkalmazási rétegek közötti kapcsolat alapja tehát a portszám.
Hogyan épül fel egy kapcsolat?
A TCP/IP hálózatban - például egy FTP kapcsolat felépülése a következő legfontosabb lépésekből áll:
- A felhasználó eldönti, hogy az FTP programot akarja használni, és argumentumként deklarája a távoli gép, az FTP szerver nevét, vagy IP címét.
- Az elindított FTP kliens miatt elindul a TCP. TCP csomag generálódik, mely a kapcsolat felépítésére irányuló kérés. A TCP csomagot átveszi az IP szoftver, és beépíti az IP csomagba. Ennek fejlécébe beírja a szerver, és saját IP címét.
- Az IP csomagot átveszi az interfész réteg funkciókat megvalósító szoftver. Fizikai csomagot generál, melynek adatmezőjébe beteszi az IP csomagot. A fizikai csomag fejécében kitölti a fizikai cím mezőket, saját fizikai címet és a partner gép, vagy a legközelebbi rúter ( útválasztó gép) fizikai címét.
- A fizikai csomagot megkapja a címzett ( esetleg több rúter közvetítésével).
- A címzett gépen futó interfész réteg szoftver a csomag adatmezőjét továbbítja az IP szoftvernek.
- Az IP szoftver az IP csomag adatmezőjét átadja a TCP-nek.
- A TCP ellenőrzi, hogy az FTP szerver elérhető-e felette. Ha igen foytatja a szinkronizációt a feladó TCP szoftverével. Ennek során a bájtok sorszámozására, és nyugtázására sorszámokat generál, majd válasz TCP csomagot állít össze.
- A válasz TCP csomagot az IP átveszi, címmel látja el, és átadja az interfész rétegnek. Az interfész szoftver fizikai szintű csomagot generál, és a fizikai közegre küldi.
- A feladó gép megkapja a választ. A TCP nyugta csomagot generál, és adatátviteli állapotba kerül.
- A címzett gép megkapja a nyugtát, és az azon futó TCP is adatátviteli állapotba kerül.
- A kliens és szerver FTP programok között parancsok és fájlok továbbítódnak. Ezt a felhasználó felügyeli.
- A felhasználó kilép az FTP programból.
- A TCP jelzi a távoli gépnek, hogy leáll.
- A távoli gép TCP-je nyugtázza, és leáll. Az erőforrások ( pl memória, processzoridő stb.) mindkét gépen felszabadulnak.
Az 1-10 pontok a kapcsolat felépülésének lépései. A 11.pont az adatátviteli állapot, tetszőleges ideig tarthat. A 12-14 pontok a kapcsolat elbomlásának egyszerűsített lépései.
Az IP csomagok továbbítása útvonalválasztókon (router) keresztül
A TCP hálózatba a gépek hálózati interfészük ( például ethernet kártya)révén kapcsolódnak. Az interfész adatait be kell állítani. Mivel a gépeket a hálózatban IP címük azonosítja, minden interfészhez hozzá kell rendelni egy unikális IP címet. Az IP szoftvernek azt is tudni kell, hogy egy adott fizikai közegre hány gép van rákapcsolva. Az azonos fizikai közegeken található gépek egymást saját hálózatban lévőknek tekintik. Hogy mekkora ez a saját hálózat, azt az ugynevezett netmaszk dönti el. Ez is egy interfész beállítási paraméter. Amikor a felhasználó kapcsolatot akar teremteni egy bizonyos IP című állomással, akkor a gépének tudni kell, hogy a címzett gép saját, vagy idegen hálózatban van. A felhasználó által megadott IP címet az IP szoftver megvizsgálja a maszk alapján, és döntést hoz arra vonatkozóan, hogy a csomag címzettje idegen, vagy saját hálózatban található. Ha a címzett saját hálózatban van, akkor a fizikai csomagot kiküldi a fizikai közegre, mert a címzett meghallja. Amikor a címzett gép idegen hálózatban van, ez nem működik. Ilyenkor a host megvizsgálja, hogy van-e nála deklarálva egy olyan gép címe, melynek a saját hálózatra néző interfészén kívül idegen hálózatok felé vezető interfésze is van. Az ilyen, egynél több aktív interfésszel rendelkező gépeket rútereknek nevezzük. Ha van ilyen rúter deklarálva egy hálózatban a hostok számára, akkor az idegen hálózatba küldendő IP csomagokat a hostok ennek a rúternak küldik. Az ilyen csomagok fizikai címzése a rúternek szól, de a csomagban található IP cím a távoli, elérni kívánt gép IP címét tartalmazza. A csomagok fizikai címzése tehát mindíg két egymással fizikailag összekapcsolódó interfész fizikai címeit (feladó és címzett) tartalmazza. Amikor a rúter veszi a fizikailag neki címzett csomagot, megállapítja, hogy abban az IP címzés nem neki szól. Ezért megvizsgálja a saját útválasztásra vonatkozó táblázatát, hogy el tudja dönteni, melyik másik interfészén kell továbbküldeni a csomagot, hogy az a célhálózat felé közelítsen. A táblázatot rúting táblának nevezik. Előfordulhat, hogy egy rúternek nincs bejegyzése egy távoli hálózat eléréséhez szükséges irányra. Ilyenkor úgynevezett alapértelmezett irányba található másik rúternek továbbítja. A rúterek alapértelmezett irányai a hálózati hierarchia csúcsán található rúterhez vezetnek, mert ezek minden hálózathoz tudják a helyes irányt, a kötelező hálózati cím regisztráció folytán. A TCP hálózatban minden gépen található alapértelmezett rúterre vonatkozó bejegyzés.
Távoli hálózatokhoz akár több rúteren keresztül is vezethet útvonal. A rúterek tudják, hogy ha ők nem érik el közvetlenül a célhálózatot, melyik további rúter felé kell továbbítani a csomagot, hogy az egy lépéssel közelebb jusson a címzetthez. A rúterek táblázatait a rendszergazdák kezelik ( statikus rúting ) vagy szoftverekre bízzák ( dinamikus rúting ). A szoftverek révén az egyes rúterek egymásnak küldözgetett üzenetek révén információhoz jutnak arra vonatkozólag, hogy adott hálózat mely másik rúterek felé érhető el.
Az IP címek rendszere, és használata
Az IP szoftver legfontosabb feladata az IP csomagok fejlécében található címzett és feladó IP címének kitöltése illeve vételnél annak értelmezése. Jelenleg az IP szoftver 4-es verziója általánosan használt. A további információk erre vonatkoznak. A csomag fejlécében 2x32 bit van kijelölve a címzett és feladó címéhez. Az IP cím négy bájtját decimális szám formájában szokás felírni, a számok egymástól ponttal vannak elválasztva. A 32 bít funkcionális szempontból két részre bontható. Az első fele hálózatnak a címét jelenti, a második fele ezen a hálózaton belüli gép címe. A hálózat és gép címzésre használt bítek határvonalát a netmaszk határozza meg.
Az IP cím eszerint címezhet hálózatot is, meg konkrét gépet is. Amikor a gépcímzésre kijelölt bítek értékét nullára állítják, akkor a cím a hálózatnak a címét jelenti. Az olyan címet, melyben a gépek címzésére szolgáló bitek egyesre vannak állítva, az adott hálózat minden gépe neki szóló üzenetnek tekinti. Az ilyen címzést Broadcast címzésnek nevezik.
A TCP hálózatban a 127.0.0.0 hálózati címet nem adják ki, mert ezt, mindegyik host úgy tekinti, hogy ez a hálózat saját maga, és ebben a hálózatban ő a 127.0.0.1 című gép. Ez egy fizikailag nem létező interfész címe. A hálózatos szoftverek mőködésének tesztelésére szolgál. Lokál, vagy loopback interfésznek is nevezik.
Az IP címtartomány áttekintésének megkönnyítésére a címeket osztályokba szokás sorolni. Ez egy picit történelmi hagyomány is, ugyanis egykor úgy gondolták, hogy az alsó osztályt nagy cégeknek, majd a középső osztályt kisebb intézményeknek, a következő osztályt pedig apróbb cégeknek szánják. Erről azonban nem sok idő múlva kiderült, hogy mégsem megfelelő, így az osztály elveszítette gyakorlati jelentőségét, mert helyette a subnet és a subnet mask került bevezetésre. Ennek ellenére ismerjük meg őket:
- Az A osztályú címzés esetén az első bájt hálózat címet, a maradék három bájt azon belül gépet címez. Nagy kiterjedésű, sok gépet tartalmazó hálózatoknak adják ki. Például a 44.0.0.0 hálózat a rádióamatőr hálózat.
- A B osztályú hálózatok első két bájtja címez hálózatot, míg 2 bájt a gép címzésre szolgál. Az ilyen címeket használó hálózatok 64000 gép címzésére alkamasak.
- A C osztályú címzés kis méretű hálózatokhoz alkalmas. Ezekben három bájt címez hálózatot, és egy bájt gépet.
Létezik D osztályú címzés. Ez a multicast címtartomány. A multicast csomagokat az összes olyan számítógép hozzá érkezőnek tekinti, melyeknél a szoftver az adott IP cím fogadását engedélyezte. Ezáltal fizikailag egyetlen csomag elküldésével több számítógépnek juttathatunk információt. Megjegyzés: Ez a címzési mód nem váltotta be a hozzá fűzött reményeket, ezáltal az ilyen jellegű alkalmazások a jövőben SCTP protokollt fognak helyette használni.
Fontos megjegyezni, hogy napjainkban az IP réteget kezelő szoftver már nem foglalkozik az A,B,C osztályokkal. Mindíg a netmask alapján dönt arról, hogy mely bítek címeznek hálózatot, és mely bitek szolgálnak a gép címzésre.
Néhány hálózati cím különleges célokra van fenntartva. A 10.0.0.0/8, a 172.16.0.0/12 és a 192.168.0.0/16 tartományú IP címek nem szerepelnek az interneten, így bárki felhasználhatja belső hálózatában anélkül, hogy valaki nem válna ezáltal elérhetővé. Azonban ilyen címmel rendelkező csomagok nem szabad kijuttatni a priváthálózatból. Az ilyen hálózatok egy címfordító router segítségével kommunikálnak az Internet felé, amely az ő valós internetes címén küldi tovább az anyagot, és a visszaérkező válasz cél címét lecseréli a valósi, belső hálózatbeli eredeti számítógép címére. Ezt a megoldást sok cég és néhány internetszolgáltató használja, hogy kevesebb IP címet kelljen lefoglalnia.
Egy másik, rádióamatőr szempontból érdekes IP tartomány a 44.0.0.0/8, amelyet a bolygónk rádióamatőrei számára tartanak fennt. Ezen belül is hazánkra a 44.156.0.0/16 tartomány esik. Amennyiben egy rádióamatőr ehhez a priváthálózathoz kíván csatlakozni, akkor ezt megteheti rádión vagy akár interneten keresztül egy megfelelő hozzáférési ponton keresztül a privát hálózathoz csatlakozva. A csatlakozás történhet:
- IPIP tunnel segítségével, ahol a két végpont nyílt internetes IP címét felhasználva az átviteli csatornában egy másik (44-es hálózat) csatornát rejtünk el.
- vtun segítségével
- L2TP segítségével
Ekkor a publikus IP címünk mellett egy második, privát IP tartománybeli (44.x.x.x) IP címmel is fog rendelkezni a számítógépünk, és a 44-es IP tartományban levő hálózatot teljes mértékben elérjük.
A legfontosabb hálózati alkalmazások
Azokat a számítógépes programokat nevezzük hálózati alkalmazásoknak, melyek feltételezik, hogy a számítógép hálózatra van kapcsolva.
A hálózatba kapcsolt gép esetén két feladat megoldása válik valóra a felhasználó számára. Az egyik, hogy távoli gépnek parancsokat küldhet. A másik, hogy gépek között adatállományokat mozgathat. Erre a két feladatra az elmúlt 30 évben közel 4000 gyakrabban használt alkalmazás típus született. Ezek listája a /etc/services és /etc/rpc állományokban található, operációs rendszertől, és disztribuciótól függő részletességgel. Ezek közül is a legfontosabbak a csak a rendszer részére fenntartott 1...1023 portok.