När en värd får ett paket inträffar en komplex serie händelser, orkestrerade av både hårdvara och programvara. Här är en uppdelning av processen, från det fysiska lagret till applikationslagret:
1. Fysiskt lagermottagning:
* Signalmottagning: Nätverksgränssnittskortet (NIC) tar emot den inkommande signalen (elektrisk, optisk eller radiovåg) som bär paketet.
* Signalomvandling: NIC konverterar signalen till ett digitalt format som datorn kan förstå (bitar och byte).
* FYSISKT FELDETEKTION: NIC utför ofta grundläggande feldetektering och kontrollerar för saker som signalintegritet och inramningsfel vid det fysiska lagret. Om fel upptäcks kan paketet tappas direkt.
2. Datalänkskiktbehandling (vanligtvis Ethernet):
* ramavgränsning: NIC identifierar starten och slutet av dataramen med hjälp av ramavgränsare (t.ex. ingress och startramavgränsare i Ethernet).
* ramkontrollsekvens (FCS) Verifiering: NIC beräknar FC:erna (även känd som en CRC -cyklisk redundanskontroll) för den mottagna ramen och jämför den med FC:erna som ingår i ramen. Detta är en mer robust felkontroll än vid det fysiska lagret. Om FCS inte matchar, vilket indikerar datakorruption under överföringen, kasseras ramen.
* Destination MAC -adresscheck: NIC extraherar destinationens MAC -adress från ramhuvudet och jämför den med NIC:s egen MAC -adress eller sändningen MAC -adress.
* match: Om MAC -adresserna matchar (eller den är en sändning) accepteras och skickas ramen till nästa lager (nätverkslager).
* Mismatch: Om MAC -adresserna inte matchar, kastas ramen vanligtvis. I promiskuöst läge (används för nätverksövervakning) kan NIC konfigureras för att fånga alla ramar oavsett destination MAC -adress.
* Källa MAC -adressinlärning (för switchar): Om den mottagande enheten är en nätverksomkopplare kommer den att lära sig kartläggningen av källans MAC -adress till den port som ramen mottogs på. Detta hjälper till att byta fram framtida ramar mer effektivt.
3. Nätverksskiktbehandling (vanligtvis IP):
* paketuttag: NIC passerar ramens nyttolast (IP -paketet) till operativsystemets nätverksstack.
* IP -huvudvalidering: Nätverksstacken kontrollerar IP -rubriken för giltighet:
* version: Verifierar IP -versionen (IPv4 eller IPv6).
* rubrikkontroller: Validerar IP -rubrikkontrollen för att säkerställa att rubriken inte har skadats. Om kontrollsumman är ogiltig kastas paketet.
* Time to Live (TTL) / Hop Limit: Minskar fältet TTL (IPv4) eller Hop Limit (IPv6). Om TTL/HOP -gränsen når 0, kasseras paketet för att förhindra routingslingor, och en ICMP "-tid överskridit" -meddelandet kan skickas tillbaka till källan.
* Destination IP -adresskontroll: Nätverksstacken jämför destinationens IP -adress i IP -rubriken med värdens egen IP -adress.
* match: Om IP -adresserna matchar är paketet avsett för denna värd och behandlas ytterligare.
* Mismatch: Om IP -adresserna inte matchar:
* inte en router: Om värden inte är konfigurerad som en router, kasseras paketet.
* router: Om värden är konfigurerad som en router konsulterar den sin routingtabell för att bestämma nästa hopp för paketet och vidarebefordra paketet i enlighet därmed (efter att ha minskat TTL/HOP -gränsen och uppdatering av rubrikkontrollen).
* Fragmentering/återmontering (vid behov): Om paketet var fragmenterat vid källan (eller en mellanliggande router) eftersom det var för stort för nätverksvägen (MTU -problem) kan den mottagande värden behöva återmontera fragmenten i det ursprungliga IP -paketet.
* protokollidentifiering: Nätverksstacken använder fältet "Protokoll" i IP -rubriken (t.ex. 6 för TCP, 17 för UDP, 1 för ICMP) för att bestämma vilket transportlagerprotokoll paketet använder.
4. Transportlagerbehandling (TCP eller UDP):
* Portnummeridentifiering: Transportlagret extraherar destinationsportnumret från TCP- eller UDP -rubriken. Portnumret identifierar den specifika applikationen eller tjänsten som körs på värden som ska ta emot uppgifterna.
* Validering av transportlagerhuvud: Transportlagret kontrollerar rubrikens integritet.
* checksum: TCP- och UDP -rubriker innehåller en kontrollsumma för att säkerställa att uppgifterna inte har skadats under överföringen. Om kontrollsumman är ogiltig kastas paketet vanligtvis.
* Anslutningshantering (endast TCP): Om paketet är ett TCP-paket hanterar transportskiktet anslutningsorienterade funktioner:
* Sekvensnummerverifiering: TCP använder sekvensnummer för att säkerställa att paket tas emot i rätt ordning och för att upptäcka saknade paket. Mottagaren verifierar sekvensnumret för att återmontera dataströmmen korrekt.
* Erkännande (ACK) Skickning: Mottagaren skickar bekräftelser (ACK) tillbaka till avsändaren för att bekräfta att paket har mottagits framgångsrikt.
* Flödeskontroll: TCP implementerar flödeskontrollmekanismer för att förhindra avsändaren från att överväldiga mottagaren med data.
* Data leverans: Transportlagret levererar data (nyttolasten för TCP- eller UDP -paketet) till lämplig applikation eller tjänst som identifierats av portnumret.
5. Applikationslagerbehandling:
* Data Tolkning: Applikationen tar emot uppgifterna från transportlagret. Den tolkar sedan data enligt dess specifika protokoll (t.ex. HTTP, SMTP, DNS).
* Åtgärd baserad på data: Applikationen vidtar lämpliga åtgärder baserat på de mottagna uppgifterna. Detta kan innebära:
* Visar en webbsida i en webbläsare (http).
* Leverera ett e -postmeddelande (SMTP).
* Löst ett domännamn (DNS).
* Spela en videoström.
Sammanfattningstabell:
| Lager | Viktiga åtgärder |
| ---------------- | --------------------------------------------------------------------------------- |
| Fysisk | Signalmottagning, konvertering, grundläggande feldetektering |
| Datalänk | Ramavgränsning, FCS -verifiering, MAC -adressfiltrering |
| Nätverk | IP -huvudvalidering, IP -adressmatchning, routing, fragmentering/återmontering |
| Transport | Portnummeridentifiering, validering av rubrik, anslutningshantering (TCP) |
| Ansökan | Datatolkning, applikationsspecifik behandling |
Viktiga överväganden:
* Felhantering: Feldetektering och hantering är avgörande vid varje lager. Paket som bedöms skadade kastas vanligtvis.
* multithreading/multiprocessing: Moderna operativsystem använder multithreading och multiprocessing för att hantera nätverkstrafik effektivt. Nätverksstacken kan hantera flera paket samtidigt.
* Prestandaoptimering: Operativsystem använder olika tekniker för att optimera nätverksprestanda, såsom bufferthantering, caching och avbrottsavmjust.
* Nätverkssäkerhet: Brandväggar och intrångsdetekteringssystem (IDS) kan inspektera paket i olika lager för att identifiera och blockera skadlig trafik.
* Hårdvaruacceleration: Vissa NIC:er erbjuder hårdvaruacceleration för vissa nätverksuppgifter, till exempel TCP -kontrollsumberäkning, vilket kan förbättra prestandan.
Denna detaljerade uppdelning illustrerar den komplexa processen som är involverad i att ta emot och bearbeta ett paket. Varje lager utför specifika funktioner för att säkerställa tillförlitlig och effektiv dataöverföring.