nÄtverksprotokoll föreläsning 7 - 22.9.2008
DESCRIPTION
INNEHÅLL - Transportskiktet - TCP - UDP. NÄTVERKSPROTOKOLL Föreläsning 7 - 22.9.2008. Transportskiktet. Här sköts all transport av allt data Har som ansvar att se till att: data kommer från sändare till mottagare Det finns en tillförlitlig förbindelse - PowerPoint PPT PresentationTRANSCRIPT
TransportskiktetHär sköts all transport av allt data
Har som ansvar att se till att: data kommer från sändare till mottagare Det finns en tillförlitlig förbindelse Paketen kommer fram i rätt ordning och att ingenting förloras
Tillförlitlighet på transportskiktet inkluderar bl.a. omsändningar och checksummor
Felkontroller och checksummor osv. Har redan förekommit på lägre nivåer, varför igen?
TransportskiktetTransportskiktet erbjuder tjänster direkt åt tillämpningar
Måste därför finnas ett sätt för transportskiktet att särskilja mellan tillämpningarna
Ett vanligt sätt att göra detta är med datakanaler (sockets) och portar
En socket är ett gränssnitt mellan en tillämpning och transportskiktet
En port är en adress inom ett datorsystem som anges i kommunikationen mellan sändare och mottagare
TransportskiktetEn tillämpning som vill använda en viss port binder en socket till
denna port
Genom bindningen vet transportskiktet att alla paket adresserade till en viss port skall skickas via socketen till en viss tillämpning på andra sidan
Exempel: alla paket adresserade till port 80 skickas till webservern
Transportskiktet – Förbindelselös komm.Tjänster på transportskiktet kan vara
Förbindelselösa förbindelseorienterade
I förbindelselös kommunikation innebär transporttjänsten i princip endast hantering av portar och sockets
Ett exempel på ett förbindelselöst transportprotokoll är UDP (User Datagram Protocol)
Transportskiktet – Förbindelseorienterad komm.Vid förbindelseorienterad kommunikation måste sändaren och
mottagaren på något sätt komma överens om att upprätta en förbindelse bl.a.:
den passiva sidan måste på någåt sätt kunna tala om att den är beredd att ta emot förbindelser (LISTEN)
den aktiva sidan måste tala om att den vill koppla upp en förbindelse (CONNECT)
den passiva sidan måste accetpera och vänta på en förbindelse (ACCEPT)
när en förbindelse avslutas måste den kopplas ner (DISCONNECT)
Ett exempel på ett förbindelseorienterat transportprotokoll är TCP(Tansport Control Protocol)
TCP (Transmission Control Protocol)Ett förbindelseorienterat dataöverföringsprotokoll som används för
huvuddelen av all kommunikation över Internet
Tillhandahåller en pålitlig dataström mellan två noder och används t.ex. För:
HTTP FTP E-post (SMTP, IMAP POP3)
Är mindre lämpligt för tillämpningar där dess felkorrigerande egenskaper kan orsaka oönskade fördröjningar
Datorspel är ett exempel på en sådan tillämpning och använder därför ofta i stället UDP protokollet för överföring
TCP (Transmission Control Protocol)TCP erbjuder kommunikationsservice mellan applikationsprogram
och Internet Protocol (IP)
Används egentligen tillsammans med IP för att sända data över Internet
IP skickar data i form av paket Varje paket innehåller en liten mängd data (ofta 1500 bytes)
samt avsändarens och mottagarens adresser Ger inga garantier för att paket som skickas över nätverket
kommer fram Paket som skickas behöver inte nödvändigtvis komma fram i
samma ordning som de skickades
TCP (Transmission Control Protocol)När TCP skickar data delas det upp i lämpliga stycken (brukar
kallas segment) där varje segment skickas i ett eget IP-paket
När IP paketet komer fram till mottagaren skickar denna ett ACK-segment tillbka till sändare för att indikera att datat kommit fram
Om sändaren inte får tillbaka ett ACK-segement inom en viss tid antas det att datapaketet försvunnit i nätet och datapaketet skickas pånytt
På detta sätt uppnås pålitlighet hos TCP
TCP (Transmission Control Protocol) För att se till att IP-paket kommer tas emot på mottagarsidan i rätt ordning
anvnder TCP sekvensnummer
Varje paket som skickas tilldelas ett 32-bitars nummer vilket används av mottagaren för att sortera de mottagna datapaketen
TCP innehåller också mekanismer för att begränsa hur fort data skickas för att inte överbelasta nätet
Varje gång nätverket tappar ett datapaket antas detta bero på att nätverket ligger på gränsen för att överbelastas
TCP drar då ned på sändningstakten till hälften av den nuvarande
När inga datapaket går förlorade ökar protokollet takten igen
TCP - AnslutningEn TCP-session innehåller tre faser
Anslutning Dataöverföring Nedkoppling
Det krävs tre steg för att ansluta två datorer (brukar även kallas för trestegshandskakning)
Som första steg, skickar den anslutande datorn (klienten) ett så kallat SYN segment till den dator som förbindelsen skall sättas upp mot (servern)
I SYN segmentet är SYN-flaggen aktiverad
TCP - AnslutningSYN segmentet kan innehålla ett antal optioner som beskriver
vilka specialfunktioner som klienten stöder, samt den maximala paketstorleken som klienten är beredd att ta emot.
SYN-segmentet innehåller dessutom sekvensnumret för den första databyte som klienten skickar över förbindelsen
Om servern är villig att ta emot förbindelsen svarar den med ett SYNACK-segment.
I ett SYNACK-segment är både SYN- och ACK-flaggorna aktiverade
TCP - Anslutning SYNACK-segmentet innehåller sekvensnummern för den första databyte
som servern skickar, samt sekvensnumern som klienten skickade + 1
Detta synkroniserar sekvensnummern så att båda parter vet vilken sekvensnummer som motparten använder sej av
SYNACK-segmenten kan också innehålla svar på de optioner som klienten skickade, om servern stöder dem
Om servern inte accepterar den inkommande förbindelsen svarar den i stället med ett RST-segment vilket avbryter förbindelseförsöket med klienten
När SYNACK-segmentet når klienten skickar klienten i sin tur ett ACK-segment och förbindelsen övergår till dataöverföringsfasen
TCP - Dataöverföring I denna fas finns det inte längre någon skillnad mellan rollerna hos
klient och server, denna skillnad finns endast i anslutningsfasen
All data som skickas delas upp i segment och skcikas i var sitt IP-paket
När mottagaren tar emot ett datasegment svarar den med ett ACK-segment till avsändaren för att indikera att segmentet har kommit fram
Om sändaren inte får tillbaka ett ACK-segment inom en viss tid så har paketet troligen tappats bort av nätverket och sändaren skickar om segmentet.
TCP – NerkopplingEn TCP-förbindelse kan kopplas ned av båda eller endast den
ena av ändpuntkerna av förbindelsen
När en av endpunkterna (klienten eller servern) inte vill avsluta en förbindelse skickar den ett FIN-segment
FIN-segmentet bekräftas av mottageren med ett ACK-segment
Vanligen stänger då även mottagaren sin del av föbindelsen genom att skicka ett FIN-segment men det finns inget krav på detta
Ett vanligt programmeringsfel är att man glömmer att stänga avena endan av förbindelsen!!
TCP segment Source port (16 bitar) – Definierar den port via vilken TCP segmentet
avsänds
Destination port (16 bitar) – Definierar den port via vilken TCP segmentet tas emot på mottagarsidan
Sequence number (32 bitar) – Anger ordningen på segmenten Om SYN flaggan är aktiv är sekvensnummern den begynnande
sekvensnummern och sekvensnummern för första databyte är denna sekvensnummer + 1
Om SYN flaggan ej är aktiv så är detta sekvensnummern för den första databyten
Acknowledgment number (32 bitar) – Om ACK-flaggan är aktiv är värdet i detta fält sekvensnummern för nästa byte som mottagaren förväntar sej få
TCP segment Data offset (4 bitar) – Definierar storleken på TCP huvdet angett i words
Data offset (4 bitar) – För framtida ändamål, bör vara 0
Flaggor (8 bitar): CWR (1 bit) – Congestion Window Reduced flaggan aktiveras av en dator
för att indikera att den tagit emot ett TCP segment med ECE flaggan aktiverad
ECE (1 bit) – Indikerar att en nod är ECN kapabel under trestegshandskakningen
URG (1 bit) – Är satt till 1 om URG-pekaren är i bruk. En URG-pekare (Urgent Pointer) ger offset för sekvensnumret var brådskande data kan hittas
ACK (1 bit) – Är 1 om segmentet i fråga är ett ACK-segment. ACK-segment används för att kvittera uppkoppling och emottagande av datapaket
PSH (1 bit) – Push funktion
TCP segment Flaggor (...forts)
RST (1 bit) – Reset. Överföringen kommer att återkopplas, vanligen p.g.a. något problem
SYN (1 bit) – Används vid uppkoppling tillsammans med ACK-flaggan för att synkronisera sekvensnummren
FIN (1 bit) – Meddelar att det ej finns mera data att sända → sessionen skall kopplas ner
UDP (User Datagram Protocol)Används för att skicka datagram mellan två applikationer på två
nätverksdatorer
Är ett förbindelselöst protokoll
Garanterar inte pålitlighet som TCP
Skapar inte kvitterad (säker) överföring
Ger ingen garanti för att paket kommer fram
UDP prioriterar i stället snabbhet
UDP (User Datagram Protocol)Vanliga nätverksapplikationer som använder UDP protokollet är:
DNS Streming media applikationer såsom IPTV och VoIP Online spel
UDP använder sig av portar för att möjliggöra applikation-till-applikation kummunikation
En port representeras i UDP av ett 16 bitars värde vilket gör att portarna kan variera mellan 0 och 65535
Port nr 0 är reserverad men kan användas om den applikation som skickar data inte förväntar sig ett svarsmeddelande
UDP (User Datagram Protocol)Portarna 1 till 1023 är s.k. “well-known” portar och i Unix-baserade
operativsystem krävs dett root-rättigheter för att kunna binda en UDP förbindelse till en sådan port
Portarna 1024-49151 är registrerade portar som är registrerade av Internet Corporation for Assigned Named and Numbers (ICANN)
Portarna 49152 – 65535 är temporära portar som närmast används av klienter när de kommunicerar med servrar
UDP - Paketstrukturen
Source port (16 bitar) – Definierar porten för avsändaren, eventuellt svarsdata skall skickas tillbaka till denna port. Om inget svarsdata förväntas skall värdet vara 0
Destination port (16 bitar) – Identifierar destinationsporten och är obligatorisk
UDP - Paketstrukturen Length (16 bitar) – Definierar längden I bytes för hela paketet (huvud +
data
Checksum (16 bitar) – Används för feldetektering för hela paketet
TCP vs. UDP TCP
Förbindelseorienterat För att kunna kommunicera krävs hanskakning för att sätta upp en
end-to-end förbindelse mellan en klient och en server Pålitligt
Meddelandekvittans, omskickning och timeout Paketen organsierade I rätt ordning Tungt
Krävs tre paket endast för att sätta upp en förbindelse och före det kan sändas nåt data överhuvudtaget. Kvittanspaketen kräver extra kommunikation
Streaming Data läses som en ström där inget indikerar var ett paket slutar
och var ett annat börjar. Datapaket kan bli spjälkta upp I mindre delar eller förenade till större paket
TCP vs. UDP UDP
Förbindelselöst Ingen förbindelse behöver sättas upp och kommunikationen
behöver inte ske mellan en klient och en server Opålitligt
När data sänds kan man inte veta om det når sin destination eller inte
Finns inga koncept för kvittans, omskickning eller timeout Paketen ej organiserade Smidigt
Eftersom ingen felkontroll eller paketkvittans förekommer Datagram
Paket sänds individuellt och garanteras vara I sin helhet om de kommer fram. Data kan inte spjälkas upp I mindre delar eller förenas med andra paket