www.wikidata.de-de.nina.az
Hole Punching englisch fur Lochstanzen ist eine Technik um in einem Rechnernetz eine Ende zu Ende Verbindung zwischen zwei Rechnern herzustellen auch wenn beide sich hinter restriktiven Firewalls oder NAT Routern befinden Im Regelfall wird Hole Punching fur UDP basierte Anwendungen verwendet Fur TCP wird Hole Punching seltener eingesetzt da es durch das zustandsbehaftete Protokoll schwieriger zu realisieren ist Genutzt wird diese Technik fur Anwendungen wie Online Spiele Peer to peer Netzwerke und IP Telefonie Inhaltsverzeichnis 1 UDP Hole Punching 1 1 Beispiel 2 TCP Hole Punching 3 Literatur 4 EinzelnachweiseUDP Hole Punching BearbeitenZwei Clients die eine UDP Kommunikation herstellen wollen senden ein UDP Paket an einen uneingeschrankt erreichbaren Server der dadurch die IP Adressen und Port Nummern beider Clients erfahrt Hierfur kann beispielsweise das STUN Protokoll verwendet werden Diese Informationen gibt der Server dem jeweils anderen Client weiter Beide Clients senden nun jeweils ein UDP Paket an den anderen Client Wesentlich dabei ist dass die eigene Stateful Paket Inspection Firewall des Senders dadurch eine Regel erzeugt die im weiteren Verlauf den Empfang von Antwortpaketen des Adressaten zulasst Der Inhalt des Pakets ist dagegen fur das Hole Punching Verfahren unerheblich und kann sofern das Paket uberhaupt die Firewall des Zielrechners passiert vom Zielrechner ignoriert werden Sobald auf beiden Seiten eine Firewall Regel die Kommunikation zulasst konnen beide Clients direkt via UDP miteinander kommunizieren Beispiel Bearbeiten Alice mochte Dateien direkt an Bob verschicken Hierfur nutzen sie einen Client mit Serverinfrastruktur Die Serverinfrastruktur halt einen Anmeldeserver erreichbar unter der Adresse 1 2 3 4 bereit Alice und Bob sind beide an diesem Server angemeldet Alice schickt eine Austauschanfrage mit dem Inhalt Ihrer IP Adresse und Wunschport IP 2 2 2 2 Port 49000 fur Bob an den Server 1 2 3 4 Da Bob an dem Server ebenfalls angemeldet ist und eine Verbindung zu diesem halt kann der Server Bobs Client erreichen Bobs Client schickt nun ein UDP Paket von seiner IP 1 1 1 1 mit dem ausgehenden Port 50000 an Alice 2 2 2 2 49000 Dadurch wartet er auf eine Antwort an seinem ausgehenden Port Seine Firewall muss den Port fur eine gewisse Zeit offen halten da sie aufgrund der Eigenschaften des UDP Protokolls nicht genau wissen kann wann die Verbindung zu Ende ist Das Paket wird allerdings zunachst von Alice Firewall geblockt Deshalb schickt Bob an den Server 1 2 3 4 nun die Aussage dass er Port 50 000 bei sich geoffnet hat Daraufhin erhalt Alice Client die Nachricht ein UDP Paket von Port 49 000 an Bobs IP 1 1 1 1 Port 50000 zu schicken Alice Client erledigt dies und wartet nun ebenfalls auf eine Antwort hier allerdings von Bobs IP Adresse 1 1 1 1 von Port 50000 Bob empfangt Alice Nachricht da diese dank des vorher geschlagenen Lochs nicht mehr von seiner Firewall verworfen wird Bobs Antworten an Alice zu Port 49 000 kommen nun auch an und Alice kann Ihre Dateien nun direkt an Bob schicken und Bob den Empfang direkt bestatigen TCP Hole Punching BearbeitenTCP Hole Punching nutzt dieselbe Grundidee wie UDP Hole Punching zwei Clients unternehmen gleichzeitig einen gegenseitigen Verbindungsversuch Die Erfolgsaussicht ist allerdings geringer da ein zustandsbehafteter Paketfilter beim zustandsbehafteten TCP die Kommunikation wirkungsvoller als beim zustandslosen UDP filtern kann In der Regel lassen NAT Router ausgehende TCP Verbindungen uneingeschrankt zu blockieren jedoch eingehende TCP Verbindungen fur die keine explizite Portweiterleitung eingerichtet wurde Je nach Implementierung gibt es verschiedene Arten der Netzwerkadressubersetzung die sich anhand der Portzuordnung und der Endpunktfilterung unterscheiden lassen 1 Die Portzuordnung gibt an ob und unter welchen Umstanden ein NAT Router denselben Port fur ausgehende Verbindungen wiederverwendet Die Endpunktfilterung gibt an nach welchen Kriterien bei einer bestehenden Portzuordnung eingehende TCP Pakete gefiltert werden Untersuchungen zeigen dass die meisten NAT Router auch bei einer bestehenden Portzuordnung eingehende Verbindungen restriktiv filtern sodass eine Verbindung nur zustande kommen kann wenn beide Clients gleichzeitig einen ausgehenden TCP Verbindungsaufbau initiieren 1 Ob dies gelingt hangt vom Verhalten der beiden NAT Router in Randfallen ab die vom gewohnlichen Drei Wege Handshake abweichen Durch das Ausnutzen von Tricks die beispielsweise IP Spoofing oder Raw Sockets erfordern lasst sich die Erfolgswahrscheinlichkeit auf Kosten einer erhohten Komplexitat verbessern 1 2 Eine Alternative fur Anwendungen die ein zuverlassiges Transportprotokoll benotigen ist die Verwendung von Reliable UDP Hiermit werden einerseits Eigenschaften von TCP nachgebildet und andererseits ist die Nutzung des einfacheren UDP Hole Punching moglich da Reliable UDP auf UDP basiert Literatur BearbeitenBryan Ford Pyda Srisuresh Dan Kegel Peer to Peer Communication Across Network Address Translators 2005 online abgerufen am 28 Januar 2008 Jurgen Schmidt Der Lochtrick 2006 online abgerufen am 28 November 2010 Einzelnachweise Bearbeiten a b c Saikat Guha Paul Francis Characterization and Measurement of TCP Traversal through NATs and Firewalls In Proceedings of the 5th ACM SIGCOMM Conference on Internet Measurement 2005 cornell edu PDF Sebastian Holzapfel et al SYNI TCP Hole Punching Based on SYN Injection In IEEE 10th International Symposium on Network Computing and Applications 2011 wander science PDF Abgerufen von https de wikipedia org w index php title Hole Punching Rechnernetz amp oldid 236659751