Mi az a hálózati port?

Nyilvánvaló, hogy a kikötő szó leggyakoribb használata a szállításra vonatkozik. A számítástechnika azonban a port kifejezést is használja. Valójában két felhasználási területe van. Az első arra az aljzatra vonatkozik, amelybe a kábelt bedugni lehet. Tipikus példa erre az USB- vagy Ethernet-port. Technikailag az Ethernet-aljzatot hálózati portnak tekinthetjük. Nem ez a port szó elfogadott jelentése a hálózatépítésben. A hálózati port egy logikai szám, amely azonosítja azt a folyamatot vagy hálózati szolgáltatást, amelyhez a hálózati forgalmat szánják, vagy amely által küldik.

Miért szükségesek a portszámok?

Amikor számítógépe kommunikál egy webszerverrel az interneten, az IP-címét a küldő mezőbe helyezi. Ezzel a szerver tudja, hogy melyik IP-címre kell elküldenie a választ. Amikor ez a válasz visszatér a számítógépére, a böngésző értelmezi a választ, és megjeleníti a weboldalt.

Ez jól működik egy idealizált rendszerben, ahol egyetlen szoftver készíti és fogadja a hálózati forgalmat. A való világ azonban nem ilyen. Bármely számítógépen van egy sor szoftver, amely hálózati forgalmat bonyolít le. Annak biztosítása érdekében, hogy a hálózati forgalom megfelelően kerüljön átadásra a megfelelő programnak, bizonyos esetekben a megfelelő folyamatot a programban. Az egyik utolsó címzési réteg a portszámot használja.

Képzeljen el egy webböngészőt, amelyen két lap van nyitva, és egy online videojátékot egyszerre. Minden böngészőlapnak képesnek kell lennie hálózati forgalom küldésére és fogadására, potenciálisan egyidejűleg. Az online játéknak hálózati forgalmat is küldenie és fogadnia is kell. Nem szeretné, hogy a játéknak ki kelljen szűrnie a véletlenszerű webes válaszokat, és azt sem, hogy a böngészőjének szűrnie kelljen a játékforgalmat. Mindkét laphoz és a játékhoz legalább egy hálózati portot rendelnek, így könnyen meghatározható a kívánt címzett folyamat.

Ugyanez működik a szervereknél is. Tegyük fel, hogy van egy szervere, amely webszervert és e-mail szervert is futtat. Ebben az esetben a portszám lehetővé teszi az operációs rendszer számára, hogy könnyen meg tudja különböztetni, hogy melyik hálózati csomagot melyik szolgáltatáshoz szánja.

Mik azok a portszámok?

A portszámok 16 bites előjel nélküli egész számok. Ez azt jelenti, hogy tizenhat bináris bit alkotja a számokat, nincs negatív szám, és minden szám egész. Ez 65536 lehetséges portszámot tesz lehetővé 0 és 65535 között. Nincs fizikai portrendszer.

A teljes címzési séma az IP-címekhez és a MAC-címekhez hasonlóan teljesen logikus. Az IP- és MAC-címekre gondolhat úgy, mint egy levél címére, amellyel házához/számítógépéhez eljuttatja. Ebben az analógiában a portszám olyan lenne, mint a borítékon szereplő név, így biztosítva, hogy a megfelelő személyhez/folyamathoz kerüljön a házában/számítógépében.

A portszámtéren belül van más struktúra is. A 0-s port foglalt. A TCP-forgalomban a 0 teljesen használaton kívül van. Az UDP-forgalomban a portszám nem kötelező, a 0 port azt jelenti, hogy „nincs port”. Ez az UDP esetében működik, mert ez egy állapot nélküli protokoll, amely nem feltétlenül vár választ. A TCP és az UDP portok különállóak. Egy szolgáltatás kapcsolódhat egy vagy több porthoz egy vagy mindkét protokollon. A mindkettőt használó szolgáltatások általában ugyanazokhoz a portszámokhoz kapcsolódnak TCP-ben és UDP-ben.

Az 1-1023-as portok „jól ismert” portokként ismertek, és általában rendszergazdai engedélyeket igényelnek a csatlakozáshoz. Néhány jól ismert port a 80-as a HTTP-hez, a 443-as a HTTPS-hez és az 53-as a DNS-hez. Ezután az 1024 és 49151 közötti tartományt kapja. Ezeket „regisztrált” portoknak nevezzük. Ezeket a portokat bizonyos szolgáltatások rendszeresen használják, de ez nem elég gyakori, vagy nem volt elég korai ahhoz, hogy 1023 alatt legyen a szám. A 49152 és 65535 közötti portokat efemer portoknak nevezzük.

A portszámok használata

Az IANA, az Internet Assigned Numbers Authority karbantartja a jól ismert és regisztrált portlistákat. A jól ismert portokhoz csak egy szolgáltatás kapcsolódik. A regisztrált portok azonban számos ismert szolgáltatást tartalmazhatnak, amelyek alapértelmezés szerint használják a portot.

Általánosságban elmondható, hogy valójában semmi sem akadályozza meg, hogy a programok bármely portszámhoz kötődjenek. Ahogy fentebb említettük, az 1024 alatti portszámok általában rendszergazdai vagy root engedélyeket igényelnek a kapcsolódáshoz. Ennek ellenére bármelyik szolgáltatást rákényszerítheti, hogy kapcsolódjon például a 80-as porthoz, még akkor is, ha az nem webszerver. A jól ismert és regisztrált tartományokba tartozó portszámokat általában csak a hálózati figyelők használják, az átmeneti portokat általában a kapcsolatok kezdeményezésére használják.

A figyelő egy port, amelyet kinyitnak és nyitva hagynak. Figyeli az üzeneteket, így feldolgozhatja azokat, és választ küldhet. Ez szinte kizárólag a szerver típusú szolgáltatások, például a webszerver viselkedése. A webszervert a 80-as és a 443-as porton tárolná, míg az ezekhez a portokhoz csatlakozó böngésző helyileg egy átmeneti portot használna.

Az alkalmazásfigyelők szabványos portszámai azt jelentik, hogy könnyű tudni, hogyan kell ténylegesen csatlakozni egy szolgáltatáshoz. Például, ha HTTPS-t tesz egy URL elejére, a böngésző alapértelmezés szerint azt feltételezi, hogy csatlakoznia kell a 443-as porthoz. Egyes esetekben a figyelőket alternatív portokon állítják be. Ennek oka lehet, hogy egy másik szolgáltatás vagy a szolgáltatás verziója már használja a szabványos portot. Lehet, hogy ez egy kísérlet a biztonság megteremtésére a homályon keresztül.

Következtetés

A hálózati port egy logikai cím. A szoftver tud kapcsolódni egy porthoz, így az operációs rendszer tudja, hogy az arra a portra küldött forgalom erre a folyamatra vonatkozik. A portszámok 0-tól 65535-ig terjednek. Sok szolgáltatás szabványos portszámhoz van társítva. A szerverek ezeket a portokat használják, míg a hozzájuk csatlakozó eszközök véletlenszerű nagyszámú portokat. Ez lehetővé teszi a szolgáltatásokhoz való egyszerű alapértelmezett csatlakozást, és biztosítja, hogy egy ilyen szolgáltatáshoz való csatlakozás nem akadályozza meg abban, hogy saját maga tároljon egy másik szolgáltatást.