När någon vill komma komma åt en tjänst beger han sig till den adress där
denna tjänst finns. Denna gatuadress motsvarar IP-adressen för datorerna.
I huset kan det finnas många olika tjänster, en restaurang, en frisör, en
kiosk etc. Alla har de olika ingångar från gatan, olika portar.

I nätverkssammanhang är tjänsterna istället en e-postserver, en webbserver etc.
För att det ska gå att hitta servertjänsterna finns de alltid på samma portar
i alla datorer. E-postservern finns bakom port 25, webbservern bakom port 80 etc.
När kontakt ska etableras mellan en klientapplikation och en server finns klienten på en adress och servern på en annan adress. Klienten kliver ut genom en port på sin adress, där porten har ett nummer mellan 1024 och 65535, och beger sig till rätt adress och rätt port för att komma åt servertjänsten. Om två klienter från samma adress vill komma åt samma server går det att skilja dem åt genom att de kommer ut genom olika portar.
------------------------- -------------------------
! Applikationsprogram ! ! Applikationsprogram !
------------------------- -------------------------
! Applikationsprotokoll ! ! Applikationsprotokoll !
------------------------- -------------------------
! TCP ! UDP ! ICMP ! ! TCP ! UDP ! ICMP !
------------------------- -------------------------
! IP ! ! IP !
------------------------- -------------------------
! Ethernet ! Token Ring ! ! Ethernet ! Token Ring !
------------------------- -------------------------
! Fysiska nätverket ! ! Fysiska nätverket !
------------------------- -------------------------
!-------------------------------------------!
För att identifiera kontakten, förbindelsen, mellan två applikationer
används dels någonting man kallar för portar och dels datorernas adress,
IP-adress (se den förenklade beskrivningen ovan). Det finns ett antal
standardiserade portar för olika tjänster,
t.ex. port 80 för WWW-servrar. Portar med nummer under 1024 kan endast
öppnas av användaren root. Vanliga användare kan endast använda portar från
och med 1024 och uppåt. Därför måste servertjänster som WWW-servern köras som
användaren root.När du tittar på denna WWW-sida binder din WWW-klient, t.ex. Netscape, en lokal port över 1023 (hög port) på din dator och upprättar en förbindelse till port 80 på servern (den här datorn).
Om din dator har IP-adress 1.2.3.4 och servern IP-adress 10.11.12.13 och din dator binder en hög lokal port på din dator och upprättar en TCP-förbindelse till port 80 (WWW-servern) på serverdatorn ser det ut enligt bilden nedan.
8 bitar 8 bitar 8 bitar 8 bitar
---------------------------------------------
! xxxxxxxx ! xxxxxxxx ! xxxxxxxx ! xxxxxxxx !
! ! ! ! !
---------------------------------------------
Hela adressen är 32 bitar lång
Ett exempel för IP-adressen 192.168.17.42 (som binärt blir
11000000 . 10101000 . 00010001 . 00101010 )
8 bitar 8 bitar 8 bitar 8 bitar
---------------------------------------------
! 192 ! 168 ! 17 ! 42 !
! ! ! ! !
! 11000000 ! 10101000 ! 00010001 ! 00101010 !
---------------------------------------------
Hela adressen är 32 bitar lång
En nätmask talar om hur stor del av
IP-adressen som utgör nätadress där resten av IP-adressen används för
de enskilda datorerna på det aktuella nätet.En nätmask kan skrivas antingen som ett tal som talar om hur många bitar som utgör nätadressen eller på formen 255.255.255.0 där i det här fallet de första tre talen i IP-adressen utgör nätadressen och den sista används för datoradresser. 255.255.255.0 och 24-bitars mask är två olika skrivsätt för att beskriva samma nätmask.
255 255 255 0
---------------------------------------------
! 11111111 ! 11111111 ! 11111111 ! xxxxxxxx !
! ! ! ! !
---------------------------------------------
24-ettställda bitar
För IP-adressen 172.22.1.x med en 24-bitars nätmask är 172.22.1 nätets adress där de sista 8 bitarna kan användas för datorer och nätverksutrustning på nätet.
En nätmask kan vara mellan 0 och 32 bitar stor. På ett nät med t.ex. IP-adressen 172.22.17.0 och en 25-bitars nätmask (255.255.255.128) kan man använda 0 till 127 för utrustning*.
255 255 255 128
---------------------------------------------
! 11111111 ! 11111111 ! 11111111 ! 1xxxxxxx !
! ! ! ! !
---------------------------------------------
25-ettställda bitar
För IP-adressen 172.22.1.236 med en 30-bitars nätmask återstår två bitar för datorer. Två bitar ger totalt 4 kombinationer (00, 01, 10, 11). 4 olika adresser med start på 236 ger 236 - 239. 172.22.1.236 med nätmasken /30 eller skrivet som 255.255.255.252 ger därmed nätet 172.22.1.236 och intervallet 172.22.1.236 - 172.22.1.239. 172.22.1.236 utgör nätadressen och 172.22.1.239 broadcastadressen.
I samband med brandväggsreglerna kan du använda en IP-adress
i kombination med en mask, som fungerar på ungefär samma sätt som en
nätmask, för att på så sätt ange ett intervall av IP-adresser.
10.10.0.0/16 ger intervallet 10.10.0.0 till 10.10.255.255
192.165.122.0/24 ger intervallet 192.165.122.0 till 192.165.122.255
172.22.42.0/25 ger intervallet 172.22.42.0 till 172.22.42.127.
172.22.42.128/25 ger intervallet 172.22.42.128 till 172.22.42.255.
172.22.17.0/25 ger intervallet 172.22.17.0 - 172.22.17.127
172.22.17.128/25 ger intervallet 172.22.17.128 - 172.22.17.255
172.22.42.42/32 ger adressen 172.22.42.42.
(*) inte riktigt sant för den första adressen används alltid för att adressera själva nätverket och den sista adressen används för broadcast, där broadcast används för att skicka trafik till alla datorer istället för en på det aktuella nätverket. På ett nät med en 24-bitars nätmask blir .0 nätadress och .255 broadcastadress. I exemplet ovan med 172.22.17.0/25 blir 172.22.17.0 nätadress och 172.22.17.127 broadcastadress.
På samma sätt fungerar det med nätverk. Paketen skickas mellan två punkter över ett nätverk och i korsningarna i nätverket avgörs vart paketet ska skickas vidare. De som sköter om vägvalet i nätverkskorsningarna kallas routrar.
Nedan visas ett lite större nätverk där 10 st nätverk är ihopkopplade med 4 nätverkskorsningar/routrar. Notera att mellan routrarna finns också nätverk över vilka paketen färdas. I bilden kommunicerar datorn 1.2.3.4, som sitter på NÄT 1, med datorn 7.8.9.10, på NÄT 7. Datorn 40.50.60.70, som sitter på NÄT 40, kommunicerar med datorn 120.110.100.42, på NÄT 120. Routrarna är i bilden markerade med gråa åttkanter.
Routrarna dirigerar trafiken så att paket skickas vidare i rätt riktning.
Dator A med IP-adressen 172.22.17.42 är ansluten till nätet 172.22.0.0/16
(d.v.s. 172.22.0.0 - 172.22.255.255).

För att kunna nå andra datorer på det egna nätet behöver dator A en rad i sin routingtabell som talar om att
det lokala nätverket finns nåbart direkt på kabeln till vilken nätverkskortet (eth0) är ansluten.
Denna rad består av nätets IP-adress 172.22.0.0 och nätmasken 255.255.0.0 och paketen ska skickas ut via eth0
och de ska inte gå via någon router för att komma fram. Exempel på hur en sådan rad kan se ut i Linux:
Destination Gateway Genmask Flags Metric Ref Use Iface 172.22.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
Det lokala nätverket är anslutet till Internet via router 1 som har fått IP-adressen 172.22.1.1 på det lokala
nätverket och IP-adressen 1.2.3.4 ut mot Internet. För att nå ut på Internet kan dator A ha en default gateway
som säger att allt som den inte vet vart den ska skicka ska skickas till denna router (default gateway). Eftersom Internet kan nås via 172.22.1.1 ska denna vara default gateway för dator A. Raden i routingtabellen kan se ut så här
i Linux:
Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.22.1.1 0.0.0.0 UG 0 0 0 eth0
Denna rad säger att nätet 0.0.0.0 med mask 0.0.0.0 (d.v.s. allt övrigt) ska skickas via 172.22.1.1 där 172.22.1.1 finns att nå via det lokala nätet som eth0 är ansluten till (därav Iface eth0).
Om ett till nät skapas, 10.10.2.0/24 (d.v.s. 10.10.2.0 - 10.10.2.255) och de två näten 10.10.2.0/24 och 17.22.0.0/16 kopplas ihop med en router, router 2, behöver dator A känna till hur den kan nå datorer på nätet 10.10.2.0/24. Router 2 ges IP-adressen 10.10.2.253 på ena sidan och 172.22.255.254 på andra sidan. Dator A kan nu nå 10.10.2.0/24 via 172.22.255.254. För detta behövs en extra rad i dator A:s routingtabell som säger att nätet 10.10.2.0/24 (10.10.2.0 med nätmask 255.255.255.0) är nåbart via routern som har IP-adress 172.22.255.254.
En sådan rad i routingtabell i Linux kan se ut på följande sätt:
Destination Gateway Genmask Flags Metric Ref Use Iface 10.10.2.0 172.22.255.254 255.255.255.0 UG 0 0 0 eth0
Datorerna på nätet 10.10.2.0/24 behöver en rad för sitt lokala nätverk och en default gateway för allt övrigt (172.22.0.0/16 och Internet). Deras router mot övriga nätverk är 10.10.2.253. Dator B ska således ha 10.10.2.253 som default gateway.

För att paketförmedlingen ska fungera genom routrar måste olika IP-adressintervall finnas på de olika fysiska nätverken som ansluts till routern. Det fungerar inte (inte bra i alla fall) att sätta samma IP-nät på två olika fysiska nätverk. Undvik därmed att koppla som i bilden nedan.
Däremot går det utmärkt att ha olika IP-nät på samma fysiska nätverk. T.ex. kan man ha 172.22.0.0/16 på samma fysiska nätverk som 192.168.7.0/24.
En brandvägg fungerar oftast som en router med det extra att den begränsar vilken typ av trafik som ska få passera mellan de olika nätverken. En brandvägg kan även ha annan extra funktionalitet som t.ex. stöd för Virtuella Privata Nätverk (VPN), antivirusskydd etc.
Klienten skickar en uppkopplingsbegäran till servern, ett SYN-paket. Servern skickar en uppkopplingsbegäran till klienten, ett SYN-paket, och samtidigt en bekräftan på klientens uppkopplingsbegäran, ack (skickas i samma datapaket som SYN). I klientens första datapaket till servern skickar klienten en bekräftelse på serverns uppkopplingsbegäran, ack.
Nu är dataförbindelsen från klienten till servern och dataförbindelsen från servern till klienten upprättade.
Klienten skickar data till servern i "sin" datakanal och bekräftar samtidigt att den har tagit emot data från servern, ack. Servern skickar data till klienten i "sin" datakanal och bekräftar samtidigt att den har tagit emot data från klienten, ack.
Om den ena parten inte har några data att skicka skickar den tomma datapaket med endast bekräftelser, ack, att den tagit emot den andra partens data.
När parterna är färdiga skickar den ena av dem ett FIN-paket för att tala om att nu bryter jag förbindelsen till dig. Den andra parten svarar med en bekräftelse, ack, att den tagit emot nedkopplingsbegäran. Nu är förbindelsen i ena riktningen bruten. På samma sätt gör sedan den andra parten för att bryta även " sin" förbindelse.
Genom att vi kan se varifrån det första SYN-paketet kom från vet vi vem som startade förbindelsen (klienten ovan). Brandväggsskyddet i Linux (de gamla systemen och det nuvarande) har stöd för att skilja på det första SYN-paketet (utan ack) och de övriga paketen.
Transmission Control Protocol
Functional Specification
+---------+ ---------\ active OPEN
| CLOSED | \ -----------
+---------+<---------\ \ create TCB
| ^ \ \ snd SYN
passive OPEN | | CLOSE \ \
------------ | | ---------- \ \
create TCB | | delete TCB \ \
V | \ \
+---------+ CLOSE | \
| LISTEN | ---------- | |
+---------+ delete TCB | |
rcv SYN | | SEND | |
----------- | | ------- | V
+---------+ snd SYN,ACK / \ snd SYN +---------+
| |<----------------- ------------------>| |
| SYN | rcv SYN | SYN |
| RCVD |<-----------------------------------------------| SENT |
| | snd ACK | |
| |------------------ -------------------| |
+---------+ rcv ACK of SYN \ / rcv SYN,ACK +---------+
| -------------- | | -----------
| x | | snd ACK
| V V
| CLOSE +---------+
| ------- | ESTAB |
| snd FIN +---------+
| CLOSE | | rcv FIN
V ------- | | -------
+---------+ snd FIN / \ snd ACK +---------+
| FIN |<----------------- ------------------>| CLOSE |
| WAIT-1 |------------------ | WAIT |
+---------+ rcv FIN \ +---------+
| rcv ACK of FIN ------- | CLOSE |
| -------------- snd ACK | ------- |
V x V snd FIN V
+---------+ +---------+ +---------+
|FINWAIT-2| | CLOSING | | LAST-ACK|
+---------+ +---------+ +---------+
| rcv ACK of FIN | rcv ACK of FIN |
| rcv FIN -------------- | Timeout=2MSL -------------- |
| ------- x V ------------ x V
\ snd ACK +---------+delete TCB +---------+
------------------------>|TIME WAIT|------------------>| CLOSED |
+---------+ +---------+
TCP Connection State Diagram
Figure 6.
En snyggare version av tillståndsdiagrammet finns i Stevens TCP/IP
Illustrated Volume 1 och Volume 2. Detta diagram finns även på bland annat:
http://gmckinney.info/resources/TCPIP_State_Transition_Diagram.pdf.
Copyright © 2010
This document is covered by the GNU Free Documentation License, Version 1.1