Portar, TCP och UDP på djupet

Den här delen är en liten överkurs som dom flesta som bara har ett hemmanätverk aldrig har så stor nytta av. Men om man vill förstå hur adressöversättning egentligen fungerar på djupet så måste man först förstå ytterligare en sak om hur Portar fungerar.

När det gäller IP-adresser så har alla datapaket alltid en källadress eller Source IP adress (vem skickade paketet) och en destinationsadress eller Destination IP adress (till vem ska paketet).

Samma sak gäller portar. Varje UDP eller TCP meddelande har en destination, det vill säga till vilken tjänst ska meddelandet. Meddelandet kanske ska till en Web Server som lyssnar på port 80/TCP, eller det kanske ska till en DNS-server som lyssnar på port 53/UDP.

Men alla UDP och TCP meddelanden har också en source port. Denna source port slumpas oftast fram. Den är framför allt till för att routrar och brandväggar och datorer ska kunna särskilja olika samtal eller trafikflöden från varandra.

Säg till exempel att du öppnar två webbläsare samtidigt på en dator. Sen surfar du samtidigt från båda webbläsarna till samma webbsida på internet. Du kommer nu ha två stycken trafikflöden, även kallade sessioner, igång samtidigt från din dators IP-adress till webbserverns IP-adress, och båda sessionerna ska till samma destinationsport 80/TCP.

Men när svaren kommer tillbaka från webbservern, hur ska då din dator veta vilken webbläsare som ska ha vilket svar?

En dator kan inte bara använda IP-adresser för att avgöra vilket program som trafik hör ihop med

Lösningen ligger i att datorn slumpar fram en source port som varje trafikflöde får använda. Det betyder att när svaren kommer tillbaka från webservern så kan datorn titta på portarna för att avgöra till vilken webläsare som svaren ska till.

En pågående kommunikation mellan två datorer kallas för en session, och datorns operativsystem kommer ihåg vilka pågående sessioner som finns aktiva genom att hålla varje session i minnet. Bland annat lagrar datorn information i minnet om vilka IP-adresser, vilken source port och vilken destination port som varje session använder. Datorn kommer också ihåg vilket program som varje session hör ihop med, i det här fallet två olika webbläsare.

Slumpade source portar hjälper till att identifiera vilket program som varje session hör ihop med

 

När returtrafiken kommer tillbaka kan datorn jämföra trafiken med sin tabell över pågående sessioner, och kan då se vilket program som trafiken hör ihop med.

 

Slumpade source portar hjälper till att identifiera vilket program som varje session hör ihop med

 

Som du ser så byter adresserna plats (source blir destination, och tvärtom) när svaret skickas tillbaka eftersom trafiken har bytt riktning.

Din dator surfar från en slumpvis utvald TCP source port till destinationsporten 80/TCP på webbservern. När webbservern svarar tillbaka så svarar den från port 80/TCP och skickar svaret till den slumpmässiga TCP porten som din dator valde ut.

Föregående avsnitt:
Fördjupning

Nästa avsnitt:
Adressöversättning på riktigt