Tillförlitlig dataöverföring säkerställer att data som skickas från en källa till en destination anländer helt, exakt och i rätt ordning. Flera principer ligger till grund för denna process:
1. Feldetektering: Detta är avgörande. Systemet måste kunna upptäcka fel som introducerades under överföring, till exempel bitväv på grund av brus eller paketförlust. Vanliga tekniker inkluderar:
* checksums: En enkel beräkning som utförs på data; Mottagaren beräknar och jämförs. Avvikelser indikerar ett fel.
* Cyclic Redundancy Checks (CRC): En mer sofistikerad kontrollsumma som ger starkare feldetekteringsfunktioner.
* hashfunktioner (t.ex. MD5, SHA): Används för verifiering av dataintegritet, vilket säkerställer att uppgifterna inte har manipulerats.
2. Felkorrigering: Medan feldetektering identifierar förekomsten av fel, försöker felkorrigering att fixa dem. Detta är ofta mer komplex och resurskrävande än detektering ensam. Tekniker inkluderar:
* Framåt felkorrigering (FEC): Lägger till redundanta data i meddelandet så att mottagaren kan rekonstruera originaldata även om vissa delar går förlorade eller skadade. Exempel inkluderar Reed-Solomon-koder.
* Automatisk upprepad begäran (ARQ): Mottagaren begär vidarebefordran av förlorade eller skadade data. Detta är en vanlig metod i datanätverk.
3. Sekvensering: För att upprätthålla dataordningen, särskilt i scenarier med paketförlust eller ombeställning, är en sekvenseringsmekanism avgörande. Detta innebär vanligtvis:
* Sekvensnummer: Varje datapaket tilldelas ett unikt sekvensnummer så att mottagaren kan återmontera data i rätt ordning.
4. Erkännanden (ACKS): Mottagaren skickar bekräftelser för att bekräfta mottagandet av datapaket. Detta gör det möjligt för avsändaren att veta om data mottogs framgångsrikt och undvika onödiga vidarebefordringar eller förlust av data. Olika ARQ-protokoll använder ACK:er på olika sätt (t.ex. go-back-n arq, selektiv upprepning ARQ).
5. Tillägg: Om en ACK inte tas emot inom en tidsperiod, eller om ett fel upptäcks, återställer avsändaren de berörda uppgifterna. Detta säkerställer dataintegritet även i bullriga eller opålitliga kanaler.
6. Flödeskontroll: Detta förhindrar avsändaren från att överväldiga mottagaren med data snabbare än den kan bearbeta. Tekniker inkluderar:
* glidfönster: Mottagaren tilldelar ett "fönster" av sekvensnummer som den är beredd att ta emot. Avsändaren skickar endast data i det fönstret.
* Kreditbaserad flödeskontroll: Mottagaren berättar för avsändaren hur mycket data den kan acceptera.
7. Trängselskontroll: Detta hanterar mängden data som skickas över ett nätverk för att förhindra trängsel och säkerställa rättvis resursfördelning bland flera användare. Algoritmer som TCP:s undvikande av trängsel och långsam start är exempel.
Dessa principer, implementerade individuellt eller i kombination, är viktiga för att bygga tillförlitliga dataöverföringssystem. De specifika teknikerna som används beror på applikationens krav, egenskaperna för kommunikationskanalen och tillgängliga resurser. Till exempel kan realtidsapplikationer prioritera låg latens framför perfekt tillförlitlighet, medan dataarkivering kan betona perfekt dataintegritet framför allt.