Děrování (síťování)
Děrování (anglicky hole punching) je v informatice technika v počítačové síti, která slouží k vytvoření přímého spojení mezi dvěma stranami, které by ho jinak navázat nemohly. Obchází tak omezení, které přináší používání NAT (překlad síťových adres) u firewallu nebo routeru, který obvykle zařízení odděluje od veřejného Internetu. Děrování nevyžaduje k fungování žádné znalosti topologie sítě. Existují specifické metody pro děrování pro protokoly ICMP, UDP a TCP: ICMP děrování, UDP děrování a TCP děrování, specifické podpůrné protokoly NAT Port Mapping Protocol (NAT-PMP) a Port Control Protocol (PCP) a technika NAT traversal.
Technické detaily
Mají-li dva různé počítače (síťová zařízení) veřejné (globálně dostupné) IP adresy, mohou spolu bez problému vzájemně komunikovat (tj. mohou mezi sebou navázat síťovou komunikaci) bez ohledu na jejich umístění v Internetu. Má-li počítač veřejnou IP adresu (například webový server), může s ním přímo navázat libovolný jiný počítač, i když bude umístěn v privátní síti a bude mu spojení s veřejným Internetem zprostředkováno pomocí NAT. Naopak navázat spojení s počítačem, který je umístěn za NAT není přímo možné (je nutné využít nějakou specifickou techniku a nebo musí počítač za NAT spojení sám navázat a využít toho, že spojení je duplexní).
Ještě komplikovanější je situace, kdy jsou oba počítače umístěny za NAT (tj. v lokálních sítích LAN). V takovém případě je nutné pro vytvoření spojení skrze zařízením zprostředkovávajícím NAT (firewall, router) použít některou techniku děrování, asistovaného průchodu nebo NAT traversal.
V případě použití děrování se oba počítače, které jsou umístěny v lokálních sítích za NAT, připojí k serveru třetí strany s veřejnou IP adresou a ten mezi nimi zprostředkuje spojení. Server od obou stran za NAT získá informace o vnější (veřejné) a vnitřní (privátní) IP adrese. Informaci předá oběma stranám, které se pomocí nich pokusí vytvořit přímé spojení mezi sebou a sdělí třetí straně použitá čísla portů. Díky prostředníkovi obě strany disponují platnými čísly portů protistrany a mohou obejít restrikce firewallů nebo routerů na příjem a předávání paketů na obou stranách.
Když se oba klienti se pokouší (naslepo) připojit k sobě navzájem přes veřejnou IP adresu protistrany a port, který získaly od zprostředkujícího serveru (třetí strana s veřejnou IP adresou), vznikne na obou stranách záznam v NAT tabulce a otevře se automaticky průchod pro odpovědi. Pokus o připojení tak může využít vytvořenou na díru (průchod, resp. existující NAT překlad) v bráně firewallu protistrany. Protože i cílový počítač má otevřené spojení, může začít přijímat data od protistrany (díky dodatečným informacím od třetí strany jsou poslané datagramy cíleny na správný port). V závislosti na konkrétních podmínkách v síti a na NAT stroji může jeden nebo oba klienti úspěšně navázat spojení. Úspěšné navázání spojení mezi oběma klienty znamená ukončení techniky děrování.[1]
Příklady
VoIP produkty, on-line herní aplikace a P2P síťový software používají děrování:
- Telefonní software Skype používá děrování, aby umožnil uživatelům komunikovat s jedním nebo více uživateli přímo bez prostředníka.[2]
- Rychlé on-line hry pro více hráčů mohou používat techniku děrování nebo vyžadují, aby uživatelé vytvářeli permanentní firewallové dírkování, aby se snížila latence jejich spojení.
- Aplikace VPN Hamachi využívá děrování pro přímé spojení dvou zařízení za firewallem (resp. NAT).
- Decentralizovaný software pro peer-to-peer sdílení souborů se spoléhá na děrování pro přímý přenos, kdy není přenosem zatěžován případný prostředník.
Reference
V tomto článku byl použit překlad textu z článku Hole punching (networking) na anglické Wikipedii.
- Ford, Bryan; Srisuresh, Pyda; Kegel, Dan (2005), Peer-to-Peer Communication Across Network Address Translators
- Schmidt, Jürgen (2006), The hole trick
Související články
- NAT traversal
- UDP hole punching
- TCP hole punching
- ICMP hole punching