HomeHome   FAQFAQ   SearchSearch   RegisterRegister   Log inLog in 
Lite om internet och Counter-Strike

 
Post new topic   Reply to topic    Swedish Maffia Forum Index -> Guides
View previous topic :: View next topic  
Author Message
magnus
Master Admin
Technician


Joined: 28 Mar 2003
Posts: 7066
Location: CLASSIFIED

PostPosted: Thu Feb 05, 2004 15:59 pm    Post subject: Lite om internet och Counter-Strike Reply with quote

Skulle skriva lite rättningar & tillägg till ämnet "Accel, Hertz, Fps, Nätinställningar, och felstavningar", ju mer jag skrev ju mer insåg jag att jag behöver skriva en bra förklaring över hur Internet fungerar.

Jag, författaren wrote:

Jag tar det bit för bit, då jag inte har tid att skriva allt på en gång.
Frågor angående saker och ting i denna tråden besvaras via PM eller i http://www.swm.se/viewtopic.php?t=10271&postdays=0&postorder=asc&start=0



nima wrote:

Nätinställningar:
Loss - det är inte dina inställningar fel. Loss beror på att paket som skickas från din dator, internet-lina, har försvunnit på vägen fram till servern som du spelar på. Antingen beror detta på din lina eller på serverns internet-lina.

Väldigt förenklat, paketförluster kan utan överdrift bero på över 1000 olika saker. Jag menar alltså fler än 999 olika saker, inte att de är många.

Paketförluster, som det heter på svenska, eller paket-loss, på eng. kan bero på väldigt mycket olika saker. Beroende på olika sammanhang så behöver vissa grader av paketförluster inte vara såpass prestandasänkande, så att du ens märker av det.

Förenklat.. för att förstå vad paketförluster är/innebär för dig, måste du förstå hur datakommunikation går till på Internet. Annars kommer du garanterat att missbedömma/förstå vad som händer, och hux-flux ute på Counter-Strikeservrarna/IRC utropa:

"Jag har FET LOSS! HAR MS! JÄVLA INTERNETOPERATÖR och/eller XXX-annat som inte är relevant och/eller korrekt för 5-öre."

Jag, författaren wrote:

Ifall du tror att detta är enkelt, är omotiverad av att lära dig, så kan du sluta läsa nu. Det är bara de absoluta grundera som tas upp här dock.


Ett mail, eller information mellan Halflife/steam och din favvoserver ( t ex, cs7.maffia.dk ) skickas i datapaket, eller i dataströmmar. Vad det är för något förklaras senare.

Datapaket/strömmar skickas över internet med hjälp av olika protokoll, ett protokoll består av en massa olika funktioner för att genomföra specifika uppgifter. Vi kan jämnföra ett protokoll med ett språk.

Olika protokoll har olika uppgifter, och är uppdelade i en viss hiarki. En modell för denna hiarkin har gjort upp och kallas för OSI-modellen.

Det är viktigt att förstå OSI-modellen ifall man ska förstå hur data skickas på Internet.

OSI-modellen består av olika lager. I det översta lagret, så har vi protokollet som ditt program använder. I det nedersta lagret så har vi det protokoll som ditt nätverkskort pratar. Rent generellt så säger man att de övre lagerna används mestadels av program, de protokoll som är närmast användaren och att de lägre lagerna används för att transportera data över nätverk.

De olika protokolllagrerna i OSI-modellen är:
(A = Används av applikationer)
(N = Används för att transportera data)

(A) Applikationlager
(A) Presentationlager
(A) Sessionslager
(N) Transportlager
(N) Nätverkslager
(N) Datalänklager
(N) Fysikt lager

När kommunikation går mellan två olika datorer så pratar de olika lagrerna med varandra. De övre lagrerna kan t ex inte skicka data, utan den uppgiften överlåter de till de lägre 4 nedre transportlagrerna.

Exempel på protokoll i de olika lagrerna är:

Applikationslager: SMTP, POP3, FTP, HTTP.
Presentationslager: MPEG, JPG, GIF, TIFF
Sessionslager: SCP, DECnet Phase IV, ZIP (Zone Information Protocol)
Transportlager: TCP, UDP
Nätverkslager: IP
Datalänkslager: MAC, LLC
Fysiskt lager: Ethernet, 100Base-T, ATM, FDDI

Längst upp i applikationslagret har vi också t ex, funktioner som implementeras i Halvlife/Steamapplikationen för att identifiera nya servrar, se till att spelare kan se andra spelare, etc.

Vi tar och går igenom de olika lagrena och dess protokoll lite mer. Vad som förenklat/generellt händer när du startar Steam/Halflife i nästa kapitel (post).

Edit: lagt till fetstil så det blir lite lättare att läsa

_________________
"I believe in Mr Grieves"
-The Pixes

Freeze.. Bitch. ( #FreezeBitch @ q-net )

http://www.mrgrieves.com
http://www.hacka.net
http://www.osant.se

dmi


Last edited by magnus on Fri Oct 28, 2005 20:05 pm; edited 4 times in total
Back to top
View user's profile Send private message Visit poster's website
magnus
Master Admin
Technician


Joined: 28 Mar 2003
Posts: 7066
Location: CLASSIFIED

PostPosted: Fri Feb 06, 2004 14:41 pm    Post subject: Reply with quote

Varje protokoll/lager kan bara göra vissa saker. Applikationsprotokoll är haj på programspecifika funktioner t ex.

Applikationslagret skickar datat neråt, tills det nått det fysiska mediat och datat skickas över nätverkskabeln. Detta kallas för enkapsulering och är inget vi behöver dyka i. Det räcker att säga att varje lager, kapslar in föregående lagers data med sin eget data, lite som att lägga en låda i en låda.

När datat väl kommer fram till mottagaren, så packar varje lager upp datat i tur och ordning. Fysiska lagret först, och sist applikationslagret igen (omvänt alltså).

Fysiska lagret läser ethernet informationen, tar bort den, och skickar datat uppåt, två lager senare så läser nätverkslagret IP informationen och skickar det uppåt till transportlagret där information för transportlagret finns. Tills slut har vi applikationsdatat kvar, och programmet som ska få informationen kan läsa den. Någon millisekund senare så rör sig din gubbe på sig, och rushar frammåt på Dust 2.


Applikationsprotokoll:
Närmast dig, användaren, i OSI-modellen hittar vi applikationslagret vilket innehåller alla applikationsprotokoll. Du pratar direkt applikationsprotokollen med vilken nu mjukvara du använder (Halflife/Steam t ex), alltså, när du spelar CS. Vanliga funtioner i applikationsprotokollen är, identifiering av kommunikationspartners, kolla ifall det finns någon att prata med (lista med dina favoritserver t ex) och synchronisering av kommunikation.

Termen nätkod hör man i CS-världen då och då. Man menar då funktioner som snackar i applikationslagret.

Presentationsprotokoll:
Genom att vi har genomsamma standarder för t ex bilder, som JPEG, TIFF, GIF och till video som MPEG, QuickTime, Real och musik MP3 osv.. så kan alla lirare på CS-servern, se samma spel (bilder) på samma sätt, med samma kvallité. Ganska basic Wink

Det finns ett par kompressionsscheman för att data som är ihoppackat hos den ena datorn, visas på samma sätt, när det packas upp hos mottaren, t ex EBCDIC och ASCII. Kryptering sker även oftast i presentationslagret.

Sessionsprotokoll:
Sessionsprotokoll skapar, hanterar och avslutar kommunikationssessioner.
Har även koll på när sessioner startar, hur länge de använts. Kontrollerar sändningen av datat under sessioner.

Exempel på sessionslager implementationer är Zone Information Protocol (ZIP), AppleTalk protokollet och SCP, DECnet Phase IVs sessions lager protokoll.

Transportprotokoll:
Transportlagret accepterar data från sessionslagret och delar upp det i mindre bitar, så att det kan transporteras över nätverket. Generellt, så är det transportlagret som ansvarar för att datat levereras felfritt, och i rätt ordning. Detta sker genom olika funktioner i de båda transportprotokollen, TCP (Transmission Control Protocol) och UDP (User Datagram Protocol). Dock det sistnämda protokollet är inte lika tillförlitligt, och litar i sin tur en hel del på att IP ska hålla kolla på att datat kommer fram.

TCP är ett så kallat förbindelseorienterat protokoll. UDP är ett förbindelselöst protokoll. Vi kan jämnföra de båda med ett telefonsamtal, och ett brev på posten. TCP är telefonsamtalet, UDP, brev på posten.

TCP, en anslutning görs till mottagaren, och anslutande dator frågar ifall den får ansluta. Mottagaren svarar nu JA, eller NEJ tillbaka. Vid JA, så svarar den anslutande datorn tillbaka, OK, och börjar skicka informationen.

UDP skickar i stort sett bara datat rätt av, och hoppas på att IP ska se till att informationen kommer fram.

Hantering av portar sker i transportlagret, av UDP och TCP.
Datakommunikation går mellan portar på datorer, en port på datorn som initierar anslutning, och en port hos datorn som ansluteningen görs till.

T ex: Halflife/Steam kommunicerar från en lokal port på din dator, t ex 33435, när det gäller öppningar av lokala portar så är det ganska dynamiskt, eftersom att det är en ny portöppning / ny anslutning då.. en port måste sedan öppnas på datorn som anslutes till, t ex, en CS-server, kanske, på port 27014, beroende på vart CS-servern lyssnar. En server lyssnar generellt bara på en port. Detta för att göra det lättare för folk att veta vart man ska ansluta. T ex, port 25 för SMTP, port 80 för HTTP osv.

Nätverksprotokoll:
Nätverkslagret definerar en nätverksadress, som skiljer sig från MAC adressen, som defineras lägre ner i OSI-modellen.

IP t ex, definerar nätverksadresser på ett sådant sätt, så att datat kan routras (skickas) över nätverk, på ett smidigt sätt. När data routras, så görs det oftast i nätverkslagret, på t ex Internet, m.h.a. IP.

Datalänksprotokoll:
Datalänkslagret består av två sublager, LLC sublager och MAC sublager. Det är här adresseringen för nätverkskortet sker.
MAC eller Media Access Controll sköter adressesättningen av nätverkskort, från denna adress, kan man ifall adressen inte blivit manipulerad med, utläsa fabrikör, modell och annat. LLC, eller Logical Link Control sköter anslutningar som görs mellan två direktkopplade nätverkskort.

I datalänkslagret så sker en del flödelkontroll, så att ett nätverkskort inte skickar mer data än vad mottaren kan ta emot.
Här defineras även nätverkstopologin.. hur nätverket är kopplat, t ex, 'bus' eller 'ring' topologi.

Fysiska protokoll:
I det fysiska lagret defineras elekriska, mekaniska och funtionella specifikationer för att aktivera, underhålla och avaktivera fysiska länkar mellan två datorsystem. Dessa är uppdelade i två olika implementationer, WAN (Wide Area Network) och LAN (Local Area Network).

I det fysiska lagret så hittar vi protokoll som Ethernet, 100Base-T, Token Ring, IEEE 802.5, IEEE 802.3 och FDDI.

Jag, författaren wrote:

I nästa kapitel (post) så tar vi ett exempel på lite datakommunikation, och vad som händer lite mer specifikt i de olika OSI-lagrerna.

_________________
"I believe in Mr Grieves"
-The Pixes

Freeze.. Bitch. ( #FreezeBitch @ q-net )

http://www.mrgrieves.com
http://www.hacka.net
http://www.osant.se

dmi


Last edited by magnus on Mon Oct 04, 2004 0:14 am; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website
magnus
Master Admin
Technician


Joined: 28 Mar 2003
Posts: 7066
Location: CLASSIFIED

PostPosted: Mon Feb 09, 2004 15:33 pm    Post subject: Reply with quote

Vad dina filer/mail/data blir på Internet
När du skickar ett mail, spelar på CS, eller tankar ner en film, så delas informationen upp i lite olika delar. En film delar upp i många många tiotusentals segment när den skickas över Internet, och laddas ner på din hårddisk. På samma sätt så skickas tusentals och åter tusentals paket fram och tillbaka mellan dig och din Counter-Strike server när du spelar på cs2.maffia.dk, tillsammans med dina favvo FreezeBitchar (även när du dör direkt! Wink )

Data och diverse kontrollinformation skickas genom din nätverkskabel och på Internet, på många olika sätt. Vanliga namn på informationen som dina filer/mail/etc delar upp i har ett gäng olika namn. Vanlig är: ramar (frames), paket, datagram, segment, medelanden, celler m.m.

Som vi berört, så har varje protokoll i de olika OSI-lagren specifik information, för just det lagret. Den informationen lagras i så kallade 'headers' och 'tailers'. Headers (längst fram) och Tailers (längst bak) kapslar in information, vilket gör att det blir lättare att läsa för just det lagret. Ovan lagers information (headers, tailers) hanteras inte, utan blir bara en bit data som skickas med, inkapslat.

En ram, eller på eng. frame, är en informationsenhet vars källa och mål är i datalänkslagret. Headers och Tailers innehåller kontrollinformation för programvara för nätverkskort, som läser och tolkar denna.

Ett paket är en informationsenhet vars källa och destination finns i nätverkslagret (IP). Ett paket består av nätverkslagrets headers och trailers och mellan dem, inkapslad data från ovan lager (Transportlagret).

Bifogade bilder på detta finns längst ner.

Termen datagram används oftast för informationsenheter vars källa och mål ligger i nätverks eller transportlagret, som använder förbindelselösa nätverksprotokoll, som t ex, IP, UDP.

Termnen segment används oftast för informationsenheter vars källa ligger i transportlagret. När man pratar protokoll som är förbindelseorienterade, som t ex TCP, så snackar man segment.

Medelanden skickas av protokoll som används av övre OSI-lager, som t ex applikaitonsprotokoll.

En cell är en informationsenhet som skickas över datalänkslagret. Protokollet ATM, som används för att skicka data över fiber, använder celler t ex. En cell består av en Header och en 'Payload'. En Payload är data från ovanliggande kommunikationslager. Fragment av dina filer, bilder och chatmedelanden. Tänk på en cell som en buss, som fraktar din information över fiber. En cell har alltid samma storlek.


Vi börjar med ett exempel på vad som händer när du använder en enklare applikation, en e-postklient ( t ex, Eudore, Outlook, Netscape, Pine ). Vad som händer i exemplen är ganska genrellt, och hjälper dig att förstå lite mer komplicerade saker, som ditt Counter-Strikespel.

Du skriver ett mail, och trycker på 'skicka knappen'.
Ditt e-postprogram pratar ett applikationsprotokoll som heter SMTP (Simple Mail Transfere Protocol). För att kunna skicka kommandon som ingår i SMTP protokollet till din e-postserver, så måste för en anslutning göras till först till e-postservern. Detta görs med hjälp av TCP (Transport Controll Protocol), detta för att TCP är ett förbindelseorienterat protokoll, och erbjuder så kallad, tillförlitlig överföring av data. Dvs. protokollet tar ett större ansvar för att saker och ting kommer fram, på rätt sätt. I andra fall, som i Counter-Strike, så används UDP mycket istället, varför kommer vi till senare.

En TCP "3-way-handshake" görs mellan dig och e-postservern.
Detta är en term för den handskakning som görs mellan dig och vart du ansluter med TCP, innan du börjar skicka eller ta emot data.

Du skickar ett TCP-paket med flaggan SYN (Synchronize) satt i paketets 'header' till port 25 på e-postservern. Det betyder att du vill göra en anslutning. E-postservern svarar tillbaka med ett TCP-paket med ACK (Acknowledge) flaggan och SYN satt. DVS, den accepterar att du gör en anslutning, och den vill nu också etablera en anslutning till dig, så att kommunikationen kan bli tvåriktad. Du svarar med ytterligare ett ACK-paket, och lite andra grejer och 3-vägs handskakningen (anslutningen) är nu klar. När anslutningen är gjort så skickas det segment och inte paket. Du börjar nu skicka SMTP-kommandona, som krävs för att skicka ett mail.

Code:

220 131.116.xx.xx ESMTP ready at Mon, 09 Feb 2004 14:11:08 +0100
helo telia.se
250 131.116.xx.xx Hello [131.115.xx.xx]
mail from:<magnus@freezebitch.dk>
250 <magnus@freezebitch.dk>: Sender Ok
rcpt to:<goran.persson@regeringen.se>
250 <goran.persson@regeringen.se>: Recipient Ok
data
354 131.116.28.200: Send data now.  Terminate with "."
Subject: Du och jag Göran..
Tjenare!

Du misssar väl inte DK?!?!
Kommer bli fetare än vanligt..

Iaf.. slå en pling vettja så hörs vi av och synkar resan..
Vi kan ta din limmo!

//M
.
250 131.116.xx.xx: Message accepted for delivery


För varje kommando som passerar ut genom din nätverkskabel så måste de ju passera ner genom de olika OSI-lagerna.
Vi går igen vad som händer när du skickar det första SMTP-kommandot: HELO.

Applikationslagret:
HELO telia.se - Presenterar oss för SMTP-servern, inleder din konversation med mailservern, första steget till att skicka ett mail. Vanlig text.

Presentationslagret:
Det vi skickar är text, och följer därmed ett kompressionsschema för ASCII. Detta anges här.

Sessionslagret:
Vi skapar en kommunikationssession.

Transportprotokoll:
Vi skickar ett TCP-paket med flaggan SYN (Synchronize), vilket är första steget i vår TCP-3-vägs-handskakning. En sådan måste etableras för att vi i detta fallet ska kunna skicka data. Precis som i föregående lager, så packas all data som kommit från ovan, från presentations och sessionslagret in i TCP, headers och trailers (lådan), och sedan skickas informationen nedåt till nätverkslagret.

Nätverksprotokoll:
Tack vare att vi och e-postservern har en IP-adress, så kan vi skicka information till den, och datat kan routras på olika smidiga sätt på Internet fram till den.

Datalänksprotokoll:
Här så petar MAC på information. som t ex, nätverkskortets fysiska adress (t ex: 00:FF:FF:FF:FF:FF), LCC fixar en anslutningen mellan ditt nätverkskort och närmaste dator görs , vilket är första steget ut på Internet).

Fysiska protokoll:
Ethernet, som används i de allra flesta persondatorer, skickar iväg datat över din nätverkskabel, tills det når närmaste anslutna nätverkskort. Förmodligen en dator, switch eller router som står hos din internetleverantör (första steget mot internet).

När datat kommit fram till denna, så läser den datorn, switchen eller routern Ethernet informationen, tar bort den, och skickar kvarvarande information upp till detta systems datalänkslager, där den informationen läses, tas bort och skickas uppåt ett steg till.

Nu så har vi ett paket med information som är inkapslat med IP. Här så läser förmodligen switchen, routern, eller server IP informationen, och med dess hjälp så bestämmer den vart paketet ska här näst. Detta kallas routing. När systemet vet vart det ska skicka informationen så packeteras åter igen paketet med LLC, MAC och sist, ett fysiskt protkolls headers, tailers, och skickas vidare till nästa system, ett steg närmare mailservern.

Till slut så kommer paketet fram till din mailservers nätverkskort, och här så packas allt upp. Tillslut så skickas applikationsprotokollets (SMTP) information till din mailserver, och den svarar tillbaka med SMTP, och så börjar allt på nytt, tills ditt mail är överfört.

Jag skippade det första som händer här, för enkelhetens skull. Det är att din dator skickar iväg en ARP (Adress Resolution Protocol) förfrågan för att ta reda på vad för MAC-adress (hårdvaruadress på nätverkskort) som mottagande dator har. All data adresseras i slutändan till en MAC-adress hos mottagaren. När datorn som ska ta emot ditt data, har svarat vad för MAC-adress den har, så kan kommunikationen börja. Det som vi sett i exemplet ovan.

Vi får avbryta här då tiden tagit slut Smile
Bifogar två bilder på hur det ser ut när information packas in av det 'lägre' OSI-lagret. T ex, när nätverksprotokollet och datalänksprotokollen blir inpackade i Ethernet, för att skickas över nätverkskablen.

Jag, författaren wrote:

I nästa post (kapitel) så tar vi och börjar kika lite på hur fel upptäcks, när dina kära paket och etc går sönder på vägen. Saker och ting kommer att klarna lite mer då Smile Förhoppningsvis hinner vi med ett till exempel på datakommunikation samtidigt!

_________________
"I believe in Mr Grieves"
-The Pixes

Freeze.. Bitch. ( #FreezeBitch @ q-net )

http://www.mrgrieves.com
http://www.hacka.net
http://www.osant.se

dmi


Last edited by magnus on Fri Oct 28, 2005 20:10 pm; edited 3 times in total
Back to top
View user's profile Send private message Visit poster's website
magnus
Master Admin
Technician


Joined: 28 Mar 2003
Posts: 7066
Location: CLASSIFIED

PostPosted: Sat Feb 14, 2004 5:38 am    Post subject: Reply with quote

Nätverks ISOhierarki
Jaaaa.. det där lät väl skoj? ES, IS och AS. Det är vad Internet är för nätverksgrubblare som din kära författare. ES, står för End System, och det är t ex, din dator, en printer eller annat system, som inte routrar data. Ett IS är ett system som routrar data, eller på annat sätt skyfflar fram den.
IS finns det två typer av, interdomain IS, och intradomain IS. Ett intradomain IS snackar inne i ett AS (Autonomous System), ett interndomain IS, snackar inne i och mellan AS. Ett AS är en samling av nätverk, under gemensam administration och routingstrategi.

Vi tar det en gång till. ES = vanlig dator. IS = router, eller annat system som routrar data. AS = massor av ES och IS.

TeliaSonera har t ex ett par AS i Sverige (vilket ett av som du surfar på hela dagarna), ett i Europa, osv. Alla världens internetoperatörers AS (samling av nätverk (vid skrivande punkt, ca 140 000)) utgör tillsammans vad du kallar, Internet.

Förbindelseorienterade och förbindelselösa anslutningar
Rent generellt så delar man upp protokoll i två olika kategorier. Förbindelseorienterade och förbindelselösa. Vi har berört det tidigare, då jag tog upp skillnaden mellan TCP och UDP.

En förbindelselöst tjänst kan skicka data utan att etablera en anslutning först. Generellt så erbjuder en förbindelseorienterad tjänst en garanti för att datat som skickats, kommer fram, medans en förbindelselös tjänst, inte gör det.

Gällandes förbindelseorienterade tjänster, så kan det reserveras vissa resurser för anslutningen som görs. De kan också förhandla fram olika kriterier för själva anslutningen, som t ex fönsterstorlek, som används i TCP-protokollet. Denna resursreserveringen är en av de saker som DOSattacker (Denial Of Service) använder. Ett attackerande system kan t ex, skicka ut massor av förfrågan för att etablera en anslutning, men sedan så skickar det aldrig något data, eller avslutar anslutningen. Den angripna datorn står ensam kvar med massor av reserverade resurser.. så mycket att den nu inte kan göra egna anslutningar utåt nätet.

När det är dags för dataöverföringsfasen, så övervakar de flesta förbindelseorienterade tjänster datat, och upptäcker paketförluster t ex, och återsänder datat. Protokollet är också generellt ansvarig för att sätta ihop datat när allt har kommit fram, innan de stickar upp datat till nästa lager. Så att du kan lyssna på din nya mp3-fil, eller etc patcha CD/Steam med nya filurligheter.

När datat är överfört så avslutas anslutningen och resurser som reserverats frisläpps.

Förbindelseorienterade nätverk har mer trafik än förbindelselösa, pga att anslutningar måste förhandlas, överföring av data måste göras, och anslutningar måste avslutas. Var av dessa två, förbindelselösa- och orienterade har sin goda användning.


Flödeskontroll
Flödeskontroll används för att förhindra förstoppning i nätverk. Ser till att t ex vissa system inte skickar fortare än vad andra kan ta emot. En dator kan skicka data fortare än vad nätet som den är ansluten till, kan överföra, eller fortare än vad destinationen dit nu datorn skickar, kan ta emot, eller bearbeta datat. Det finns tre vanliga metoder för att hantera sådana situationer. Buffring av data, att skicka source-quench (källkvävnings) meddelanden, och fönsterhantering.

Buffring används av ett system för att tillfälligt hantera, skurar av data. Dock, genom att lägga detta datat i minnet, så riskerar man att minnet tar slut, vilket tvingar systemet att kasta ytterligare dataenheter som anländer.

Source-quenchmeddelanden används för att hindra att buffrar svämmar över. Mottagande parten skickar source-quenchmeddelanden till den som skickar datat, som då minskar farten som datat skickas i. Först så börjar mottagaren dumpa dataenheter (paket eller annat), som inte för plats i buffrarna, sedan, skickas ett source-quenchmeddelande för varje dataenhet som dumpas. Systemet som skickar datat tar emot meddelandena, och minskar farten som datat skickas med, tills den slutar få source-quenchmeddelanden. Sist, så ökar sedan systemet som skickar datat gradvis, så länge det inte får nya source-quench meddelanden.

Fönsterhantering, är ett kontrollschema i vilket det sändande systemet kräver en bekräftelse på den mottagande parten, efter ett visst antal dataenheter (ofta segment) skickats. Fönsterhantering används i TCP-protokollet. Med en fönsterstorlek av t ex 15 (icke relevant siffra), så skickar det sändande systemet 15 segment, väntar på bekräftelse på att paketen kommit fram och bearbetats, och skickar sedan ytterligare 15 segment. Ifall mottagaren inte fått de 15 segmenten, så skickas ingen bekräftelse, och källan skickar om segmenten, i en minskad sändningshastighet.


Grundläggande felkontroll
Felkontrollsscheman används för att utgöra ifall data har blivit korrupt, eller skadat medans det färdades från källan till destinationen. Felkontroll implementeras i flera olika OSI-lager.

Ett vanligt felkontrollsschema heter CRC, eller Cyclic Redundancy Check. Det upptäcker och dumpar felaktig data. Felkontrollsfunktioner, som återsändning av data, görs av högre lager (t ex trasportlagret - TCP, eller nätverkslagret - IP). CRC värdet generas av den som skickar datat, genom ett gäng beräkningar. Källan placerar CRC värdet i paketet som skickas. Destinationen, som tar emot datat gör sedan ett gäng egna beräkningar över vad CRC värdet bör vara, och ifall resultatet blir samma som källan kommit fram till, och bifogat i paketet, så bedöms paketet vara OK, annars så dumpas paketet, då det innehåller fel.

Nu så har du fått lite koll hur paketförluster kan uppstå! Som du märker, så finns det inget enkelt svar direkt. Men vi har bara skrapat lite på ytan. Ha tålamod.

Jag, författaren wrote:

I nästa post (kapittel) så går vi lite mer in på de hur ett nätverk fungerar, och de olika protokollen. Umm.. jag är lite trött nu, så, ja, vi får se ifall detta inte editeras lite senare, när klockan inte är 05:29.. Laughing

_________________
"I believe in Mr Grieves"
-The Pixes

Freeze.. Bitch. ( #FreezeBitch @ q-net )

http://www.mrgrieves.com
http://www.hacka.net
http://www.osant.se

dmi
Back to top
View user's profile Send private message Visit poster's website
magnus
Master Admin
Technician


Joined: 28 Mar 2003
Posts: 7066
Location: CLASSIFIED

PostPosted: Mon Feb 16, 2004 6:14 am    Post subject: Reply with quote

Internetprotokoll

Internetprotokollen är nu väldens mest kända protokollstack, och det kan vi tacka BSD (Berkeley Software Distribution) för, som i sen 70-tal/tidigt 80-tal tog med TCP/IP stacken i sin 'Unix' distribution. Iom det blev Unix grundstenen för World Wide Web (WWW) och Internet.

TCP (Transport Control Protokoll) och såklart IP (Internet Protokoll) är mest kända i av Internetprotokollen. Dokumentation av Internetprotokollen finns i tekniska rapporter, som kallas för RFCs (Request For Comments). Här kan du söka efter en RFC. Här är alla RFCn som någonsin publicerats. Viktiga RFCn hittas här.

Nedan är en lista på OSI-lager, med respektive Internetprotokoll som jobbar i vilket lager.

Mappning wrote:


  • Lager 7 - Applikationslager
    FTP, Telnet, SMTP, SNMP, NFS, XDR, RPC
  • Lager 6 - Presentationslager
    FTP, Telnet, SMTP, SNMP, NFS, XDR, RPC
  • Lager 5 - Sessionslager
    FTP, Telnet, SMTP, SNMP, NFS, XDR, RPC
  • Lager 4 - Transportlager
    TCP, UDP
  • Lager 3 - Nätverkslager
    Routingprotokoll (RIP, BGP, OSPF, M.M), IP, ICMP, ARP, RARP
  • Lager 2 - Datalänkslager
    ARP, RARP
  • Lager 1 - Fysiskt lager
    -



Internet Protokoll (IP)
IP pratar i lager 3, nätverkslagret. Tack vare IP, och dess adresser (IP-adresser) så kan data routras på Internet. Tillsammans med TCP så utgör IP hjärtat av Internetprotokolen. IP har två huvuduppgifter, det ena är att tillhandahålla förbindelselösa anslutningar till datagram och att tillhandhålla fragmentation och ihopsättning av datagram. Fragmentering används för att data ska kunna skickas av olika länkar, som tillåter olika MTU (Maximum Transmission Unit) storlekar, storlekar på paket.

Ett IP-paket består av en massa olika fält, där olika typer av information lagras. Man behöver ju kanske inte lära sig alla dessa fälten, men det kan vara nyttigt att ha sett dem iaf. Många fält återkommer även i andra protokoll.

Ett IP-paket wrote:


  • Version
    Version av IP som används. I dagsläget är IP Version 4 allra vanligast. IP version 6 finns också. I IPv6 finns många flera IP-adresser och mer stöd för olika säkerhetsfunktioner.
  • IPhuvudets (IP header) storlek (IHL)
    32 bitar.
  • Typ av service
    Specifierar hur över lagers protokoll vill hantera datagrammet och tilldelar olika nivåer av prioritet.
  • Total storlek
    Specifierar paketet storlek i byte. Hela paketet inklusive data och huvud.
  • Identifiering
    Innehåller ett tal som identifierar datagrammet. Används när man ska sätta ihop fragmenterade datagram.
  • Flaggor
    Innehåller ett 3 bitars fält. 2 bitar kontrollerar fragmentation. Bit nr 1 är för när man sätter en flagga som visar att datagrammet kan fragmenteras. Bit Nr 2 är för att specifiera ifall ett paket är det sista fragmentet i en serie av fragmenterade datagram. Den sista biten används inte idag.
  • Fragment Offset
    Indikerar positionen av ett fragments data, i relation till det första fragmentet. Med hjälp av detta så kan mottagaren sätta ihop ett fragmenterat datagram.
  • Time To Live (TTL (Tid att leva))
    Här lagras en liten räknare som gradvis räknar ner till 0. Då kastas datagrammet. Används för att hindra att paket (generellt uttryckt) loopar i oändlighet.
  • Protokoll
    Indikerar vilket protokoll i övre lager som ska ta emot datat, efter IP är klart med sitt.
  • Huvudets checksumma (Header checksum)
    Hjälper att försäkra att ingen pillar/sabbar med IPhuvudets data.
  • Källadress
    IP-adressen på den som skickar datagrammet.
  • Destinationsadress
    IP-adressen på den som tar emot datagrammet.
  • Alternativ
    Fixar stöd för div olika funktioner för IP, t ex säkerhetsprylar.
  • Data
    Innehåller informationen som kapslats in i IP-paketet. Detta läser övre protokoll. Dvs, något i transsportlagret.



IP-adresser
Som sagt tidigare, så är det tack vare IP-adresser som datagram kan routras på stora delar av Internet. Varje IP-adress följer ett visst format.

Varje system på ett TCP/IP-nätverk har en 32 bitars adress, vilket är indelat i två delar. Nätverksnummret och värdnummret (host number).
Ett nätverksnummer identifierar ett nätverk, och måste tilldelas via InterNIC (Internet Network Information Center), om nätverket ska kunna vara en del av Internet. En ISP (Internet Service Provider) kan få block av IP-adresser från InterNIC, som de vidare delar ut som de vill. Ett värdnummer identifierar ett system på ett nätverk, och delas oftast ut av den lokala nätverksadministratören.

En IP-adress är uppdelad i 4 ocktet. En ocktet, eller en byte, är 8 bitar.
Alltså..

8 bitar - 213
8 bitar - 14
8 bitar - 3
8 bitar - 207

Ger oss IP-adressen 213.14.3.207 (32 bitar).

IP-adressernas olika klasser

Det finns olika klasser på IP-adresser, närmare bestämt 5 olika.
A, B, C, D och E.. A, B och C IP-adresser används bara för kommersiell användning.

A - Ett par jättestora organisationer - 1.0.0.0 - 126.0.0.0
B - Mediumstora organisationer - 128.1.0.0 - 191.254.0.0
C - Små organisationer - 192.0.1.0 - 223.255.254.0
D - Multicast (RFC 1112) - 224.0.0.0 - 239.255.255.255
E - Experimental användning 240.0.0.0 - 254.255.255.255

Broadcast, Multicast och Singelcast
Detta är tre olika sätt att skicka datatrafik. Broadcasttrafik skickas till alla inom en broadcastdomän, ett helt IP-nät eller subnät. Broadcastadressen för ett C-nät är X.X.X.255. I ett subnät så har subnätet en speciell broadcastadress tilldelad i nätet. För mer information om vad för broadcastadresser som finns i vilka subnät kan du läsa om i nedan kapitel där jag tar upp subnetting.

Multicast skickas till flera slutdestinationer, man har då en förprogrammerad multicastadress för att adressera trafik typiskt till en grupp av datorer.

Singelcast, som är vanligast skickas till bara en destination.

Subnät
Ett IP-nätverk kan delas upp i mindre nätverk, som du kallas för subnät. Det finns två olika typer av subnät, B-nät (123.4.) och C-nät (123.4.5.)
Anledningen till att man har subnät, är att det ger massa bra möjligheter för nätverkadministratören att hålla koll på nät, ger en mer effektiv användning av IP-adresser och minskar broadcast-trafik (tas upp senare).

Ett exempel, vi tar nätet:
213.10. vilket är ett så kallas B-nät. Det kan delas upp i flera olika nät C-nät, t ex, 213.10.1. 213.10.2. och 213.10.3.

Jag, författaren wrote:

Ojsan! Slut på tid.. vi han bara ta lite om IP..
Inte så roligt kanske.. och känns nog ganska långt borta från att lira Counter-strike. Men det är viktig kunskap som du behöver när vi kommer lite längre fram. Näst tar vi lite lite till om IP och sedan ICMP (ping!)

_________________
"I believe in Mr Grieves"
-The Pixes

Freeze.. Bitch. ( #FreezeBitch @ q-net )

http://www.mrgrieves.com
http://www.hacka.net
http://www.osant.se

dmi


Last edited by magnus on Tue Oct 05, 2004 16:34 pm; edited 4 times in total
Back to top
View user's profile Send private message Visit poster's website
magnus
Master Admin
Technician


Joined: 28 Mar 2003
Posts: 7066
Location: CLASSIFIED

PostPosted: Thu Feb 26, 2004 5:48 am    Post subject: Reply with quote

Subnätmaskar
Ja.. adresser som skrivna som 255.255.255.192 kanske du känner igen?
Det är en subnätsmask. Anledningen till att man uppfann den var att alla IP-adresser i världen började ta slut. Fast det är en sanning med modifikation, det var ett skäl iaf. Man hade endast den så kallade klassfulla indelningen, dvs A, B, C-nät, osv.

Quote:

A - 1.0.0.0 - 126.0.0.0
B - 128.1.0.0 - 191.254.0.0
C - 192.0.1.0 - 223.255.254.0


Den gamla klassfulla indelningen gjorde att man slösade ganska friskt på adressen, då man ville sätta upp små nät. Det minst möjliga nätet bestod ju av 256 olika adresser.

För att inte slösa med IP-adresser, så tog man då subnätsmasken, som tillåter att man delar in ett nät i ännu mindre delar. Detta blev även väldigt praktiskt när man skulle sätta upp två routrar som snackade med varandra över en ensam länk. De man i praktiken gjorde då, var att man lånade bitar ifrån host-delen. Genom att titta på nätmasken så kan man bedöma vad som är nätdel och vad som är hostdel av IP-adressen. Detta kallas en klasslös indelning, man tar alltså inte hänsyn till den gamla klassindelningen av A, B och C-nät. CIDR är en vanlig term i detta fallet, som står för Classless Internet Domain Routing. Routing som förstår klasslösa nät (subnetting) helt enkelt.

En IP-adress består av 32-bitar. Varje del av IP-adressen, som delas upp med punkter, är 8 bitar. Ett oktet är 8 bitar. En IP-adress består då av 4 oktet (4x8=32). Detta är viktigt att förstå för att kunna göra subnätning. Det gäller att inte så mycket se de decimala siffrorna utan mer det binära talmönstret som utgör IP-adresserna. Varje bit nedan kan vara satt till antingen 1 eller 0. Nedan är de 8 bitarna som kan vara satta med 1 eller 0 i varje oktet.
Code:

128    64    32    16    8    4    2    1


Nätmasken 255.255.255.0 ser ut som följande:
11111111.11111111.11111111.00000000
Alla bitar som är satta till 1, inkluderas i nätmasken, de bitar som lämnats osatta, kan användas i host-delen. Ovan är ett typiskt C-nät med 256 olika adresser i.

192.168.4.1 Ifall vi tar och översätter den till binärt så ser den ut såhär.
11000000.10101000.00000100.00000001

Binärtalet för 192.168.4.1 fick jag genom att först ta 192 och konverta IP-adressen oktet för oktet på följande sätt. Det högsta talet som får plats i 192 är 128, det näst största talet är 64. Det ser ut såhär:

Code:

128    64    32    16    8    4    2    1
1      1     0     0     0    0    0    0


128+64=192. Då kan resten av bitarna vara osatta, där har vi vårat binärtal. Sedan vidare med nästa oktet 168. Vi tar det med.

Code:

128    64    32    16    8    4    2    1
1      0     1     0     1    0    0    0

128+32+8=168, resten av bitarna lämnas osatta. Sedan fortsätter vi med 4 sedan 1 och sedan har vi konverterat hela IP-adressen till binärtal.

Ifall detta är ett klassfullt C-nät som IP-adressen fanns i, så hade alla de sista 8 bitarna varit till hosts i nätet. Liksom såhär:

11111111.11111111.11111111.00000000

Det hade gett oss ett nät med 256 adresser. Oftast så har ett företag endast ett C-nät eller mindre att hushålla med, så då får vi tar subnätning till hjälp.

Exempel wrote:

Vi vill i vårat företagsnät ha ett par stycken olika IP-nät. Ett för servrarna, ett för fabriksarbetarna, ett för cheferna, ett för ekonomiavdelningen, ett för IT-avdelningen t ex. 5 olika subnät behövs alltså. Varje avdelning behöver i vårat exempel 20 IP-adresser.

Nu så kommer en liten fiffig tabell, som är bra att memorera. Den kommer till stor hjälp när man i huvudet ska räkna med subnätmaskar och annat i huvudet.

Code:

/25    /26   /27   /28   /29  /30  /31  /32
128    192   224   240   248  252  254  255
128    64    32    16    8    4    2    1
8      4     2     1     8    4    2    1


Första raden i tabellen har att göra med det antal bitar som lånas från hostsdelen för att göra subnettingen. Subnätning skrivs oftast mha detta sättet för att det är lättare. Ett subnät ser då ut såhär: 192.168.1.0/29 istället för 192.168.1.0 255.255.255.248.

255.255.255.248 ser binärt ut såhär:

11111111.11111111.11111111.11111000

där ser man lite mer tydligt hur vi lånat bitar ur den gamla c-näts-host-delen till nät.

Mappningen mellan de båda ser som sagt ut som nedan.
Code:

/25    /26   /27   /28   /29  /30  /31  /32
128    192   224   240   248  252  254  255

En notering är att /24 är ett helt C-nät, dvs 255.255.255.0

En fint trick när man räknar med subnät är du endast behöver titta på något som heter deltabiten i binärtalsuppställningen. Deltabiten motsvarar antalet IP-adresser i subnätet. Sedan är det bara och kolla på vad nätmask blir. Sedan blir det lätt att räkna ut antal subnät man får totalt och vilken adress som är till nät (första i spannet) respektive broadcast (sista i spannet). Första raden och andra är nätmaskarna, tredje är deltabitarna.
Code:

/25    /26   /27   /28   /29  /30  /31  /32
128    192   224   240   248  252  254  255
128    64    32    16    8    4    2    1

Vi behöver som sagt 5 subnät med minst 20 hostar i varje nät. Då tittar vi på våran tabell ovan och ser att närmaste deltabit för 20 är 32, vilket motsvarar en nätmask på /27 eller .224. Deltabit 32 ger oss följande subnät.
Code:

0-31
32-63
64-95
96-127
128-159
160-191
192-223
224-255

Första adressen är nätadressen, andra adressen är broadcast-adressen.
Djupare än såhär går jag inte gällandes nätmaskning, ni får läsa er till resten (med fördel). Smile

Talsystemskonvertering

Talsystemkonvertering har man nytta av att kunna. Då det i viss mån är lättare t ex att räkna med hex i vissa fall.

Decimaltal 0-9
Hexadecimaltal: 0-F (A=10 F=15)
Binärtal: 0-1

En halv oktet är även kallad en nibble. En sådan kan användas för att göra hexadecimal<>binärkonvertering. Detta pga att en hexsiffra är 4 bitar.

Låt säga att vi har hexadecimaltalet (0x)6C, då prickar vi av 6 först sedan C, som är 12 med 1 & 0 (binärt) och på så sätt får vi binärtalet 01101100, helt magiskt. Från binär till decimal så är det lätt att vidare konverta, det är bara att addera bitarna satta i binärtalet.
Code:

8      4     2     1      8      4     2     1
0      1     1     0      1      1     0     0

128    64    32    16    8    4    2    1
0      1     1     0     1    1    0    0

64+32+8+3=108 vilket är den decimala motsvarigheten till 6C och 01101100.

Lite hjälpfullt så finns 12 olika subnätsmaskar för B-nät, och 6 olika subnätsmaskar för C-nät.

Skriver en liten mappning på de 6 (8 med 255.255.255.0 och 255.255.255.254 vilken i stort sett är värdelös) olika subnätsmaskarna för C-nät, och antal värdar som finns i näten nedan: Antal bitar kan du läsa om nedan på rekommenderad länk. Subnätmask är subnätmasken som körs. Antal subnät är antal subnät man då får av ett C-nät. Antal värdar (adresser som kan tilldelas datorer) är antal adresser man får per subnät. Bortplockat är nätadressen och broadcastadressen, detta måste man inte göra, utan kan faktiskt subnäta med .254 när man har point-to-point länkar.

C-klass subnetting wrote:

Antal bitar: 0
Subnätmask: 255.255.255.0
Antal subnät: 1
Antal värdar: 254 (Ett helt C-nät)

Antal bitar: 1
Subnätmask: 255.255.255.128
Antal subnät: 2
Antal värdar: 126

Antal bitar: 2
Subnätmask: 255.255.255.192
Antal subnät: 4
Antal värdar: 62

Antal bitar: 3
Subnätmask: 255.255.255.224
Antal subnät: 8
Antal värdar: 30

Antal bitar: 4
Subnätmask: 255.255.255.240
Antal subnät: 16
Antal värdar: 14

Antal bitar: 5
Subnätmask: 255.255.255.248
Antal subnät: 32
Antal värdar: 6

Antal bitar: 6
Subnätmask: 255.255.255.252
Antal subnät: 64
Antal värdar: 2

Antal bitar: 7
Subnätmask: 255.255.255.254
Antal subnät: 128
Antal värdar: 0 (Bara en broadcast adress och en nätadress)





Som sagt. För att förstå grunden bakom subnätsmaskar och IP-adressering, så måste man ha koll på de binära och decimala talsystemen. Jag rekommenderar fyra nedan sidor för de lite mer vetgiriga. Där även en webbaserad IP/subnetkalkylator, som jag själv tycker är bra och använder väldigt mycket.

Binära/decimala talsystem
Subnätsmaskar
IP-adressering
IP/subnetkalylator
Subnet Cheat Sheet. Information om broadcast/nät-adresser i alla olika C-subnät!

ARP och RARP
Address Resoution Protocol och Reverse Address Resoution Protocol.

För att två stycken datorer på ett nätverk, ska kunna prata med varandra, så måste de känna till varandras fysiska (MAC) adresser. Detta fixas genom ARP-protokollet. En dator (ett nätverkskort) kan dynamiskt få reda på vilken MAC-adress som hör till vilken IP-adress.

Efter dator har fått reda på någon annans IP/MAC-adress, så skapas en ARP-cache, där nyligen anförskaffade IP-till-MAC mappningar lagras. På detta sättet så måste datorer inte fråga efter MAC-adress gång efter gång.

Förutom ARP så finns det också RARP. RARP används för att mappa MAC-adresser till IP-adresser, alltså tvärtom. RARP används till t ex disklösa arbetsstationer som inte vet sin IP-adress när de bootar upp. RARP fungerar m.h.a. en RARP-server som har en liten databas med MAC-till-IP-adress mappningarna.

Routing
Hur olika typer av routers är ordnade på Internet har jag skrivit om lite tidigare ang. AS, IS, och ES.

Routrar som flyttar information inom ett AS, använder en flora av så kallade IGPs eller Interior Gateway Protocols. T ex, OSPF, ISIS, RIPv2 och EIGRP.

Routrar som flyttar information mellan AS, använder EGPs, External Gateway Protocols. Det enda EGP som används i någolunda stor skala, och vilket är det som används till 99% på internet, är BGP Version 4.

Vi tar det där med routing lite närmare, i senare kapitel.


Internet Control Message Protocol (ICMP)
ICMP, eller ping för de flesta, är ett protokoll som används för att skicka felrapporter och annan information över nätverk. Du använder förmodligen protokollet för att kolla svarstider mot cs1.maffia.dk, då du har "hög ping", när du lirar Aztec. Observera dock att anledningen till att du har det, inte tas upp här. Inte heller använder Counter-strike ICMP-protokollet.

Nu ska vi ta och se vad "ping", igentligen är. ICMP är faktiskt inte ping, dock två meddelandetyper i protokollet.

ICMP medelanden
ICMP genererar ett gäng med olika meddelanden.
Ett par olika exempel är:

  • Destination Unreachable
    När ett sådant paket skickats av en router, så menas det att routern inte kan leverera ett paket till dess slutliga destination. Routern dumpar sedan paketet. Två olika skäl till att ett sådant paket skickas kan vara att källadressen inte finns, eller att routern inte har en route till destinationsadressen.

    Destination-unreachable meddelanden har fyra olika subtyper. Network unreachable, host unreachable, protocol unreachable och port unreachable.

    Network unreachable menar oftast att ett fel har uppstått i routingen eller adresseringen av ett paket. Host unreachable indikerar oftast ett leveransfel, t ex, brandväggar/filtrering eller felaktiga subnätmask. Protocol uncreachable menar oftast att destinationen inte stödjer något av de ovan protokollena som specifierats i paketet. Med Port-unreachable så menas det att TCP socketen eller porten inte är tillgänglig hos mottagaren av datat.
  • Echo Request
    Denna meddelandetyp används för att se hur pass bra man kan nå ett system på ett nätverk. När du skriver "ping cs1.maffia.dk" så skickas ett 'ICMP echo request'-meddelande till cs1.maffia.dk.
  • Echo Reply
    Ett 'ICMP echo request'-meddelande indikerar på att ett system har tagit emot ett 'ICMP echo reply'-meddelande, och att systemet kan nås. När din dator tagit emot 'ICMP echo reply'-meddelandet, kan ditt pingprogram räkna ut tiden det tagit för datat att färdats fram och tillbaka. Detta blir uttryckt i cs-språk, din ping.

    När det gäller Counter-strike, så använder spelet dock inte ICMP för att beräkna din ping, utan protokollet UDP. UDP är som tidigare nämts, ett ej förbindelseorienterat, eller icke pålitligt protokoll. Detta eftersom att protokollet inte kontrollerar så att datan har kommit fram när det skickats. Vi kommer mer in på detta i nästa kapitel (post).

    Dock, pga att ICMP-echo-request/reply ofta används i DDoS och DoS (Distributed/Denial of Service) attacker och scanning av system som är sårbara för div attacker.. så ignoreras eller blockeras dessa meddelandetyper ofta. Därför är det viktigt att förstå att ett system som du pingar, kanske inte alltid svarar, pga andra skäl än att systemet är nere.
  • Redirect
    Ett 'ICMP redirect'-meddelande skickas av en router till den som skickat paketen som routras, för att stimulerar mer effektiv routing. Routern skickar paketen till den ursprungliga destinationen. ICMP redirects tillåter att systems routingtabeller kan vara ganska små. De behöver bara veta adressen till en router, även ifall den routern inte tillhandahar bästa vägen till målet. Efter systemet har tagit del av redirect meddelandet så kan de ändra vägen de skickar datat.
  • Time Exeeded
    Detta meddelandet skickas ifall ett IP-pakets Time-To-Live (uttryckt i antal hopp som paketet routrats eller sekunder som det är gammalt) värde når noll. TTL värden finns för att paket inte ska tummla runt i nätverk i evig tid. Routern dumpar sedan paketet vars TTL gått ut. Alltså, har dina paket blivit för gamla, eller skickats för långt, kommer du förmodligen få ett 'ICMP time exeeded'-meddelande.
  • Router advertisment
    Del av ICMP Router-Discovery Protocol (IDRP)
  • Router solicitation
    Del av ICMP Router-Discovery Protocol (IDRP)
  • ICMP Source Quench
    Använd för att sakta ner hastigheten som en källa skickar datagram. Har tagits upp här tidigare, när jag skrev om flödeskontroll.

När ett ICMP meddelande skickas, och inte kan komma fram, så skickas inte ett andra, detta för att förhindra att en oändlig flod av ICMP-meddelanden ska skickas.

ICMP Router-Discovery Protocol (IDRP)
IDRP använder 'Router-Advertisment' och 'Router-Solicitation'-meddelanden för att upptäcka adresser på routrar som är direktanslutna via subnät. Varje router skickar då och då ut 'Router-Advertisment'-meddelanden från alla interface. Värdar hittar sedan routrarnas adresser. En värd kan använda ett 'Router-Solicitation'-meddelande för att direkt begärna informationen, utan att vänta.

Jag, författaren wrote:

Slut för idag. I nästa kapitel (post) så hade jag tänkt ta upp lite mer hur TCP och UDP fungerar, även dra paralleler till ditt spelande av CS.

_________________
"I believe in Mr Grieves"
-The Pixes

Freeze.. Bitch. ( #FreezeBitch @ q-net )

http://www.mrgrieves.com
http://www.hacka.net
http://www.osant.se

dmi


Last edited by magnus on Tue Aug 30, 2005 23:46 pm; edited 19 times in total
Back to top
View user's profile Send private message Visit poster's website
magnus
Master Admin
Technician


Joined: 28 Mar 2003
Posts: 7066
Location: CLASSIFIED

PostPosted: Fri Feb 27, 2004 5:31 am    Post subject: Reply with quote

Transmission Control Protocol (TCP)
TCP protokollet tillhandahar pålitlig och förbindelseorienterad sänding av data. TCP är ett av två transportprotokoll (OSI-lager 4) i TCP/IP stacken.

TCP är tillsammans med IP, det vanligaste protokollet som används på internet. När du skickar mail, laddar ner filer, startar/loggar in på Steam, och gör en anslutning till en Counter-Strike server, så använder du TCP.

Det som TCP är haj på är, steaming av data, pålitliglig överföring av data, effektiv flödeskontroll, full-duplex och multiplexing.

Med steaming av data så menar jag att TCP skickar data i så kallade, dataströmmar. Datat, sk. segment (som kan vara nyaste Steampatchen) i dataströmmarna identifieras av sekvensnummer. Det som vidare är bra med TCP, är att applikationer inte behöver dela upp datat i delar, innan TCP tar hand om det, detta fixar TCP själv. Datat (din steampatch t ex) delas upp i segment och skickar det (ett OSI-lager ner) till IP för leverans.

TCP är pålitligt, just pga. att anslutningarna som görs med protokollet, är förbindelseorienterade. Själva skickandet av datat görs genom att de bytes av data som skickas, får ett sekvensiellt ack-nummer (ack står för acknowledgement), genom att läsa detta så vet mottagaren vad nästa data ska vara. När datat har tagits emot, så bekräftar mottagaren detta. Bytes som inte bekräftas inom en viss specifierad tid, skickas om. Tack vare detta så kan TCP hantera paket som är fördröjda, duplicerade eller trasiga på något sätt. En time-out mekanism i protokollet upptäcker förlorade paket, och begär återsändning av datat.

TCP har en utmärkt flödeskontroll, som vi berört tidigare. Den kallas fösterhantering eller windowing på engelska. När bekräftelser på mottagna segment skickats tillbaka till den som skickat dem, så berättar mottagarens TCP-process, antal sekvensnummer som den kan ta emot, utan att dess buffrar svämmar över.

Full duplex, med det som menas att man med TCP kan både skicka och ta emot data, på samma gång.

Multiplexing. Med det som menar man att flera konversationer kan hållas med protokoll i ovan lager, via TCP, över en enda anslutning.

Anslutningar via TCP
Som sagt tidigare, för att kunna tillhandahålla tillförlitlig kommunikation, så måste protokollet vara förbindelseorienterat. Detta fixas i TCP, genom något som heter "tree-way handshake" eller trevägshandskakning.

En trevägshandskakning ser till att båda ändar, den som skickar och mottagare, är överens om att en överförning av datat skall göras. Sedan så bestämmer varje part slumpmässigt, ett sekvensnummer som ska användas för att kunna följa strömmen av data som skickas. En trevägshandskaning går till på följande sätt för TCP.

TCPs trevägshandskakning wrote:


  • Den första värden. Värd A, initierar anslutningen genom att skicka ett paket, med sekvensenummer (X), och SYN biten satt, för att indikera att en anslutning vill göras.

  • Den andra värden, Värd B, tar emot paketet med SYN bit satt, noterar sekvensnummer X, och bekräftar med ett paket som har biten ACK satt, som följande; ACK = X+1. Värd B inkluderar även sitt eget sekvensnummer (Y). ACK = 20, betyder att värden har tagit emot bytes 0 till 19, och nu vill ha nummer 20. Denna tekniken kallas forward acknowledgement.

  • Sedan så bekräftar Värd A alla byte Värd B skickat med forward acknowledgement, och indikerar att nästa byte som väntas är ACK = Y+1. Sedan kan själva dataströmmen/överföringen startas.



TCPs fönsterhantering, det glidande fönstret
Detta har tagits upp en del under kapitlett för flödeskontroll.

TCPs fönsterhantering, eller det så kallade glidande fönster eller TCP sliding window på engelska, är mer sparsamt med bandbredd än den liknande tekniken, PAR (Positive Ackknowledgement and Retransmission). Detta för att en värd kan skicka flera byte med data, innan den måste vänta på en bekräftelse på att datat kommit fram.

I TCP så är det mottagaren som bestämmer vad fönsterstorleken ska vara. Eftersom att TCP tillhandahar en dataströmsanslutning där bytes skickas, så anges också fönsterstorleken i byte. Det betyder att fönsterstorleken är ett antal byte som får skickas, innan en bekräftelse på att de kommit fram skickas. När en anslutningen med TCP görs mellan två datorer så bestäms fönsterstorleken, men den kan justerars när som helst under anslutningen.
En fönsterstorlek som är 0, betyder, "sluta skicka data".

Ifall en källa ska skicka en sekvens av byte, nummrerade 1-100, och mottagaren har en fönsterstorlek som är 5 byte, så skulle den som sänder, skicka de första 5 byten tillsammans, och sedan vänta på bekräftelse från mottagaren. Mottagaren skulle nu svara med ACK = 6, vilket betyder att den har tagit emot bytes 1-5, och nu kan ta emot bytes 6-10. Mottagaren svarar nu med ACK = 11, vilket betyder att den väntar på byte med sekvens 11 näst. Nu så kanske mottagaren dock satt fönsterstorleken till 0, för att dess buffrar nu är fulla. Den som skickar datat får nu vänta med att skicka mer data, tills fönsterstorleken blivit mer än 0. Så här fortsätter det tills allt data är överfört.

Du kanske känner igen att hastigheten på en nerladdning, när du (äntligen) t ex fått tag på [FreezeBitch] The Movie (inte ännu ute i biograferna/på filservrarna), varierar, detta är pga TCPs fönsterhantering. Utan den hade vad du nu laddat ner, blivit korrupt, och du hade förmodligen fått ladda ner det, igen, och igen, och igen, utan framgång.
Faktum är att fönsterstorleken i stort sett aldrig är densamma under hela överföringen, den varierar, och tur det, som du nu kanske förstår. När du laddar ner en film så blir det katastrof, ifall du tappar data, dock, och det kommer vi till senare, när du spelar CS, så behöver det inte vara hela världen, som tur var.

Nedan så har du vad för olika information som finns i ett TCP paket/segment.

Ett TCP-paket/segment wrote:


  • Källport och destinationsport
    Identifierar ovan lagers käll och destinationsprocesser som ska ta emot datat. T ex, anslutning görs från port 32141 på din dator, till port 27018 på en CS-server.
  • Sekvensnummer
    Används för att identifera de olika segmenten i en dataström, ligger till grunden för det mesta i TCP, tillförlitlighet, fönsterhantering osv.
  • Bekräftelsenummer (Acknowledgement number)
    Innehåller sekvensnummret för nästa byte som den som skickar paketet, förväntar sig att få näst.
  • Data offset
    Indikerar nummer på de 32-bitars ord som finns i TCPs header/huvud.
  • Reserverat
    Reserverat för framtida användning.
  • Flaggor
    Här så finns massa kontrollinformation, som t ex SYN för att man vill inleda en anslutning, ACK för att man bekräftar något, och FIN för att avsluta en anslutning.
  • Fönsterstorlek
    Här så anges storleken hos den som skickar datat, dvs, bufferstorlek som finns för inkommande data hos mottagaren.
  • Checksumma
    Indikerar ifall paketets header blivit skadat i sänding.
  • Urgent Pointer
    Pekar på det första urgent data byte i paketet.
  • Optioner
    Speciferar olika TCP optioner.
  • Data
    Ovan lagers data, som packats in i TCP. T ex ditt/delar av ditt användarnamn/lösenord som skickas till Steam, för att logga in dig.



Jag, författaren wrote:

Hann visst inte med UDP, det får bli i nästa kapitel. Då kommer jag ta upp UDP, vilket är något som används mycket i CS, för både det ena och det andra, och routing (YAY!).

_________________
"I believe in Mr Grieves"
-The Pixes

Freeze.. Bitch. ( #FreezeBitch @ q-net )

http://www.mrgrieves.com
http://www.hacka.net
http://www.osant.se

dmi


Last edited by magnus on Mon Oct 04, 2004 0:18 am; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website
magnus
Master Admin
Technician


Joined: 28 Mar 2003
Posts: 7066
Location: CLASSIFIED

PostPosted: Sat Oct 02, 2004 17:51 pm    Post subject: Reply with quote

User Datagram Protocol (UDP)

UDP är ett transportprotokoll liksom TCP. UDP är ett icke tillförlitligt kommunikationsprotokoll. Det betyder att UDP inte håller så bra koll på ifall datat som skickas, verkligen kommer fram. Dock så innebär detta att protokollet är lättare, och kan användas i föredel när man vill skicka data på ett snabbt och enkelt sätt. Mer information kan överföras på kortare tid. Ett UDP paket kallas för datagram.

Analogi wrote:

Att skicka data med UDP, kan jämnföras med att skicka ett brev på posten. Du har ingen direkt koll på vad som händer, efter du lagt brevet i brevlådan. Du litar på att Posten AB levererar ditt brev till slutmottagaren. Ifall det skulle vara som så att någon anställd skulle sno ditt brev, så är du ganska körd, det är bara att skicka ett nytt brev. Du får inte heller reda på att brevet kommit fram, utan det får du själv ta reda på.


UDPs leverantör heter IP istället för Posten AB. UDP datagram enkapsuleras (packas in) i IP-paket, packas in i dvs transmissionsprotokoll som ethernet/atm/sonet/sdh/etc och skickas ut över de fysiska linorna på internet.

Det finns som sagt i min analogi (liknelse), inga funktioner i UDP som kontrollerar att datat kommer fram, meddelar att datat har kommit fram och etc. Det finns inte heller någon särskild flödeskontroll i protokollet. Den enda kontroll av datat som görs är att datagrammen nummersätts. Ifall datagram 3 har kommit fram hos slutdestinationen, och datagram 1 hux-flux dyker upp, så dumpas paketet hos mottaren. Detta gör man för att datat då är inaktuellt. En sådan situation kan uppstå när data routras olika vägar över nät.

Det finns två generella typer av informationsflöden på internet. Datatrafik och realtidstrafik. Datatrafik är t ex när man surfar på en webbserver, laddar ner en fil. Denna trafiken är "burstig", dvs dataströmmarna kommer i stötar, det gör som sagt inte så mycket ifall det hux-flux blir lite lägre hastighet, att paketen kommer fram är huvudsaken. Realtidstrafik är mer konstant, och kör oftast i samma hastighet.
Ifall du kör IP-telefoni så används UDP för taltrafiken. Detta pga att man är mer känslig för fördröjning än att paket tappas. Så är det generellt för applikationer som arbetar i realtid.

Rent generellt så används alltså UDP för den allra flesta realtidstrafiken. Detta inkluderar realtidsinformationen när du spelar Counter-Strike. När du spelar så gör det inte så mycket ifall du tappar ett eller annat paket, men ifall du får hög fördröjning, då blir det inte bra! Detta kallas lite felaktigt i CS-sammanhang för "din ping".

Förutom fördröjningar så är realtidstrafiken känslig för jitter. Jitter är när det skilljer i fördröjningarna. Du kan anpassa dig till en fördröjning ifall den är konstant, rent generellt. T ex ifall du har en fördröjning på din IP-telefoni eller i Counter-strike på 25 ms. Men ifall det skilljer i fördröjningarna mellan säg, 15 till 60 ms, då blir det svårt att anpassa sig. Antingen ifall det handlar om att vänta lite innan man pratar, eller ifall det är när man ska avlossa av en skott mot en motståndare.

Det ligger alltså lite i UDPs natur att paket tappas lite då och då. Detta pga att protokollet inte anpassar dataflödet efter rådande förhållanden. Man ställer in i sina applikationer vad för bandbredd som ska användas. Detta för att undvika jitter, vilket man får ifall brandbredd ökas/sänks om vart annat. Detta gör att det blir extra viktigt vad för hastighet man ställer i applikationen, detta gäller även Counter-Strike.

Den viktigaste lärdomen här är att "din ping" inte är det viktigaste i spelsammanhang. Det är jitter. Variationer i fördröjning. Har du 50 ms i "ping" är det helt acceptabelt, sålänge fördröjningen är konstant.

Ett UPD-datagram består av fyra fält.

UDP-datagram wrote:

  • Källport
    Från vilken port som datat skickas.
  • Destinationsport
    Till vilken port som datat skickas.
  • Längd
    Den sammanlagda storleken på datagrammets header och payload (data som fraktas).
  • Checksumma
    Standardchecksumma för att kolla ifall paketet har blivit korrupt på vägen till mottagaren. 0x0000 skrivs i fältet ifall checksummekontroll inte ska göras. Ifall datat är korrupt så slängs det. UDP gör inga omsändingar av data.
  • Data
    Här stoppas informationen som ska skickas iväg. Datat kommer från övre lager i OSI-modellen och enkapsuleras. Ursprungligen kommer det från en applikation, som t ex Counter-Strike.


Sammanfattning wrote:

Fördelarna att använda UDP är alltså mycket information på lite tid, snabb överförning av data, lite jitter, och kortare fördröjningar.

Nackdelarna är att du lättare får paketförluster, då du inte har någon kontroll ifall saker och ting kommer fram, ingen omsändning av data, och ingen riktig flödeskontroll.



Paketförluster
Anledningen till att man får paketförluster beror oftast på grund av fulla buffrar. Data slängs när paketbuffrarna i din dator, på en router, switch eller brandvägg mellan dig och servern, eller i servern som du skickar data till, är fulla. Anledningen till detta kan typiskt vara DDoS-attacker (Distributed Denial of Service), virus, maskar som plötsligt fyller länkar mellan dig och din server som du ansluter till. Ibland så är bandbredden på länkarna underdimensionerade, och folk använder helt enkelt nätet mer än leverantören förutsett.

Det kan även vara på grund av så kallade flaskhalseffekter. T ex ifall trafik skickas från ett 100 MB lan i 100 MBs hastighet, över en 2 MB ADSL lina. Systemet som tar emot trafiken i 100 MB på en sida, hinner inte skicka vidare den i samma takt över 2 MB linan, paketbuffrar fylls upp, och systemet börjar slänga trafik.

En grundlag när man bygger stora nät är att aldrig ha mer än 50% belastning på en länk, men det räcker inte i alla fall, och en del mindre operatörer, har inte alltid råd att bygga ut sin bandbredd. När man surfar på internet så kan man gå över alla möjliga operatörers nät, alla byter trafik med alla, så problem när det kan gå trögt behöver inte ligga hos din internetleverantör.

Det finns givetvis fler orsaker till att paket slängs. T ex att det fysiska mediet som du skickar paken över är skadat. TP-kabel kanske är trasig, fibern i en fiberkabel är smutsig, kontaktdon i kabel kan vara trasig.
Ett tips för er som gör egen TP-kabel. Gör inte det. Du kan t ex omöjligt klämma en cat-6 kabel pga de krav så finns på en sådan. Du skjuter dig själv i foten genom att risken att kabeln är av undermålig kvallité på något sätt är väldigt hög, även ifall du använder riktiga verktyg. TP-kabel är billig att köpa, så gör det, köp den färdig i butik!

Du kan få paketkollisioner t ex, ifall du använder en hubb, så kan bara en dator skicka data samtidigt, vilket typsiskt resulterar i mängder med paketkollisioner. Använd INTE en hubb, du får idag en switch för samma pris. Ifall du har för många burkar i samma IP-nät så kan du lätt få paketkollisioner även. Undvik detta genom att använda subbnät. Varje subbnät är sin egen kollisions, -broadcastdomän. Titta på ovan kapitel om subnetting för mer information om subnät och broadcast.

Det går att ställa in maxstorlekar för olika pakettyper i ditt operativsystem. Var dock lite uppmärksam på att ifall du pillar med detta utan att veta vad du gör, så riskerar du att du ställer värden för högt, vilket leder till segmentering i en högre grad, dvs att de informationen delas upp i mindre paket, längre ut i nätet, vilket i sin tur kan göra att du lättare får paketförluster. Detta är huvudsakligen pga att det krävs mer av mottagaren för att foga ihop informationen. Vidare kan man ställa in TCPs fönsterstorlek, som nämnts i tidigare kapitell. Ifall man ställer TCPs fönsterstorlek till ett för stort värde, så resulterar det i att buffrarna på din dator lätt kan överflödas, och då får du paketförluster. Det går även att justera med MTU (Maximum Transmission Unit) i IP, gör inte det, ifall MTU sätts för högt så kommer din internetleverantörs routrar att slänga dina paket. Använd defaultvärden som kommer med ditt operativ.

När vi ändå pratar om buffrar som överflödas, så kan din dator tappa paket ifall den är alltför upptagen med andra saker, än att försla data. T ex, att köra ett grafiskt krävande spel, spela musik och lite annat smått och gott. En bra idé är att titta på hur konsumtionen av systemtid ser ut. Ifall din dator är alltför upptagen med annat, så kommer den börja dumpa paket. Lite osäker vart denna gränsen ligger, men ligger systemutnyttjandet kring 95%> så kanske det slår i taket lite då och då i alla fall.

Bandbredd och "Ping"
Jag tänkte klara upp ett missförstånd som jag ofta stöter på. Det är att bandbredd och "ping" är något som alltid direkt hänger ihop. Det är fel. Däremot så är t ex kommunikationer över fiber såklart snabbare än DSL. Det går ju fortare att skicka ljus över fiber än elektroner över koppar, vilket ger mindre fördröjningar. Men, det har inget att göra med bandbredd. Fiber använder man i alla möjliga hastigheter när man ska skicka data över större avstånd. Slutsatsen är alltså att i många sammanhang får du lika bra ping med en ADSL som har 512kb i bandbredd, som med en som har 8 mbit. Detta förutsatt att du inte använder all bandbredd såklart.

Många applikationer, t ex, Counter-Strike, kräver väldigt liten bandbredd. Jag har inte gjort några exakta mätningar, men jag vet att för att ha fördröjningar kring 15-20 ms när du spelar, så räcker 12 kb/s uppströms långa vägar. En kvallificerad gissning är att 6-7 kb/s räcker. Nerströms till dig så kanske det är lite mer, ett par tiotals kb/s.

Det som påverkar fördröjningar mest är i vilken takt som data skickas vidare från systems paketbuffrar. Ifall du har en lång kö i en buffer, så tar det längre tid för datat att skickas, och därmed åkar fördröjning av datat till slutdestinationen. Omsändningar av data kan även skapa fördröjningar, men det har du bara i TCP-protokollet. UDP gör inga omsändningar av data som blir för gammalt eller som blir korrupt.

En annat vanligt missförstånd är hur mycket bandbredd man ska få på sin förbindelse. T ex, Sven Svensson köper 0,5 mbit ADSL, och får inte 0,5 mbit när han laddar ner.

Detta är ofta naturligt. Detta pga att IP inte kan utnyttja hela bandbredden.
Detta är pga av olika storlekar i de olika OSI-lagren. T ex, ifall du skickar 45 bytes stora IP-paket, så tappar en vanlig persondator ungefär 50% av kapaciteten. På 100 Mbit får du 50 Mbit. Detta är dock ett extremfall, då paket vanligtvis inte är så små, men i normalfall så har du ändå kring 5-7% bortfall på din kapacitet via IP. Detta löser snälla operatörer genom att skruva upp sina kunders pipa någon extra %, så att bortfallet inte märks, men inte i alla fall. Man säljer ju den fysiska kapaciteten, hastigheten du får på ethernet, atm, etc, inte vad kunden kan skicka via IP, TCP eller UDP. Det hade blivit omöjligt att sälja, då du inte kan förutspå vilken hastighet kunden kan få. Det är t ex beroende på operativsystems TCP/IP stack och paketstorlekar som används.

Linux och Unix TCP/IPstackar klarar t ex av att skicka data i mycket högre hastigheter än vad Windows TCP/IPstack kan.

Jag har tagit del av testresultat i labbmiljöer där man i TP-TEST har fått upp till 50% högre resultat i Linux än i Windows 2000/XP.

Jag, författaren wrote:

Jag hann inte med allt jag hade tänkt, som vanligt!
I nästa kapitel så tänkte jag skriva om routing och switching. Även en djupare protokollanalys av Counter-strike är planerad.

_________________
"I believe in Mr Grieves"
-The Pixes

Freeze.. Bitch. ( #FreezeBitch @ q-net )

http://www.mrgrieves.com
http://www.hacka.net
http://www.osant.se

dmi
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Swedish Maffia Forum Index -> Guides All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum
   
Powered by phpBB © 2001, 2005 phpBB Group
Om Cookies