Hålslagning (nätverk)
Hålslagning (eller ibland punch-through ) är en teknik i datornätverk för att upprätta en direkt koppling mellan två parter där en eller båda är bakom brandväggar eller bakom routrar som använder nätverksadressöversättning (NAT). För att slå ett hål ansluter varje klient till en obegränsad tredjepartsserver som tillfälligt lagrar extern och intern adress- och portinformation för varje klient. Servern vidarebefordrar sedan varje klients information till den andra, och genom att använda den informationen försöker varje klient upprätta en direkt anslutning; som ett resultat av att anslutningarna använder giltiga portnummer, accepterar och vidarebefordrar restriktiva brandväggar eller routrar de inkommande paketen på varje sida.
Hålslagning kräver ingen kunskap om nätverkstopologin för att fungera. ICMP-hålslagning , UDP-hålslagning och TCP-hålslagning använder respektive Internet Control Message , User Datagram och Transmission Control Protocols .
Översikt
Nätverksanslutna enheter med offentliga eller globalt tillgängliga IP-adresser kan enkelt skapa anslutningar mellan varandra. Klienter med privata adresser kan också enkelt ansluta till offentliga servrar, så länge klienten bakom en router eller brandvägg initierar anslutningen. Hålslagning (eller någon annan form av NAT-traversering ) krävs dock för att upprätta en direkt anslutning mellan två klienter som båda finns bakom olika brandväggar eller routrar som använder nätverksadressöversättning (NAT) .
Båda klienterna initierar en anslutning till en obegränsad server, som noterar slutpunkts- och sessionsinformation inklusive offentlig IP och port tillsammans med privat IP och port. Brandväggarna noterar även slutpunkterna för att tillåta svar från servern att passera tillbaka. Servern skickar sedan varje klients slutpunkt och sessionsinformation till den andra klienten, eller peer. Varje klient försöker ansluta till sin peer via den angivna IP-adress och port som peers brandvägg har öppnat för servern. Det nya anslutningsförsöket slår ett hål i klientens brandvägg när slutpunkten nu blir öppen för att ta emot svar från sin peer. Beroende på nätverksförhållanden kan en eller båda klienterna få en anslutningsbegäran. Ett framgångsrikt utbyte av en autentiseringsnonce mellan båda klienterna indikerar slutförandet av en håltagningsprocedur.
Exempel
VoIP- produkter, onlinespelapplikationer och P2P- nätverksprogramvara använder alla hålslagning.
- Telefoniprogramvara Skype använder håltagning för att låta användare kommunicera med en eller flera användare hörbart.
- Snabba onlinespel för flera spelare kan använda en håltagningsteknik eller kräva att användarna skapar en permanent brandvägg för att minska nätverkslatens.
- VPN- applikationer som Hamachi eller ZeroTier använder håltagning för att tillåta användare att ansluta direkt till prenumererade enheter bakom brandväggar.
- Decentraliserad peer-to-peer fildelningsprogram förlitar sig på håltagning för fildistribution.
Krav
Pålitlig håltagning kräver konsekvent slutpunktsöversättning, och för flera nivåer av NAT:er, hårnålsöversättning.
När en utgående anslutning från en privat slutpunkt passerar genom en brandvägg, får den en offentlig slutpunkt (offentlig IP-adress och portnummer), och brandväggen översätter trafik mellan dem. Tills anslutningen stängs kommunicerar klienten och servern via den offentliga slutpunkten och brandväggen dirigerar trafiken på rätt sätt. Konsekvent slutpunktsöversättning återanvänder samma publika slutpunkt för en given privat slutpunkt, istället för att allokera en ny offentlig slutpunkt för varje ny anslutning.
Hårnålsöversättning skapar en loopback-anslutning mellan två av sina egna privata slutpunkter när den känner igen att destinationsändpunkten är sig själv. Denna funktion är endast nödvändig för hålslagning när den används inom en NAT med flera lager.