Při sériovém přenosu jsou data přenášena postupně bit po bitu, nejnižším (přesněji nejméně významným) počínaje. V drtivé většině sítí je přenos dat sériový. Nejmenší položka dat přenášená sériově je označována jako znak (character) a má obvykle rozsah 7 nebo 8 bitů. Znak vyjádřený přímo ve formě posloupnosti dvojkových bitů, které se skutečně přenášejí, se pak označuje jako značka.
Sériový asynchronní přenos (serial asynchronous transmission) Při asynchronním sériovém přenosu mohou být jednotlivé znaky (přesněji značky) přenášeny s libovolnými časovými odstupy mezi sebou. Příjemce pak ovšem nemůže předem vědět, kdy začíná další znak, a proto musí být schopen jeho příchod podle vhodného příznaku rozpoznat. Tímto příznakem je tzv. start-bit (též rozběhový prvek), kterým začíná každý asynchronně přenášený znak. Příchod start-bitu je pro příjemce současně i možností správně si nastavit své měřítko času (přesněji svou časovou základnu). To je nutné proto, aby příjemce správně určil časové okamžiky, kdy má vyhodnocovat stav jednotlivých datových bitů, které po start-bitu následují. Za vlastními datovými bity může následovat jeden tzv. paritní bit (viz dále) a konečně tzv. stop-bit (též závěrný prvek), jehož délka obvykle odpovídá délce jednoho nebo dvou datových bitů. Stop-bit v sobě nenese žádnou informaci; jeho smyslem je pouze zajistit určitý minimální odstup mezi jednotlivými znaky - vyslání následujícího znaku může začít nejdříve po odvysílání celého předchozího znaku, tedy včetně jeho stop-bitu.Asynchronnímu způsobu přenosu se někdy také říká trochu nehezky start-stopní přenos.
Sériový synchronní přenos (serial synchronous transmission) Při synchronním přenosu jsou obvykle přenášeny celé bloky znaků. Datové bity jednotlivých znaků přitom následují těsně po sobě, bez jakýchkoli časových odstupů, a nejsou prokládány žádnými start- či stop-bity (mohou však být doplněny jedním paritním bitem). Začátek bloku je indikován jedním nebo několika speciálními synchronizačními znaky (tzv. znaky SYN), jejichž hlavním smyslem je zajistit potřebnou časovou synchronizaci odesilatele i příjemce - tzn. pomoci příjemci přesně stanovit časové okamžiky, ve kterých má vyhodnocovat jednotlivé datové bity. Blok znaků je pak opět zakončen synchronizačními znaky, které mohu (ale nemusí) být nepřetržitě vysílány až do začátku následujícího datového bloku.Synchronní přenos je obecně rychlejší než asynchronní, neboť není zatížen režií připadající na start- a stop-bity. Jeho technická a programová realizace však bývá poněkud složitější než u přenosu asynchronního.
Parita (parity) Při sériovém i paralelním přenosu dat může docházet k chybám, jejichž důsledkem je přijetí opačné hodnoty jednoho či několika bitů, než jaké byly původně vyslány. Nejjednodušším, ale současně také nejménně účinným způsobem zabezpečení znaku (kterým je umožněno následně rozpoznat výskyt chyby) je doplnění datových bitů jedním dalším bitem tak, aby celkový počet jedniček ve znaku byl (při odesílání) lichý (pak jde o tzv. lichou paritu - odd parity), nebo naopak sudý (pak jde o tzv. sudou paritu - even parity). Příjemce musí vědět, zda mu odesilatel posílá znaky se sudou, nebo lichou paritou.Pokud počet jedničkových bitů nesouhlasí s očekávanou paritou, může si příjemce dovodit, že došlo k chybě při přenosu jednoho (nebo tří, pěti, obecně lichého počtu) bitů. Má-li přijatý znak očekávanou paritu, není to ještě stoprocentní zárukou jeho bezchybnosti - pomocí jediného paritního bitu nelze rozpoznat chyby v sudém počtu bitů. Zabezpečení pomocí jednoho paritního bitu je tedy vhodné používat jen tam, kde je pravděpodobnost výskytu chyb v jednotlivých bitech malá a pravděpodobnost výskytu chyb ve více bitech současně zanedbatelná.
V praxi se lze setkat také s tím, že se paritní bit nastavuje vždy na 0 (resp. vždy na 1) - v angličtině se tomu říká space parity (resp. mark parity). Smysl je např. ten, že odesilatel může vysílat sedmibitové znaky doplněné tímto konstantním paritním bitem, které příjemce přijme jako osmibitové znaky bez parity (čímž se ovšem ztrácí možnost detekovat přenosové chyby).
Zabezpečení dat při přenosech Při přenosech dat může docházet k chybám, a v jejich důsledku může příjemce přijmout jiné znaky, než jaké mu odesilatel původně vyslal. Jedním možným prostředkem pro následnou detekci vzniklých chyb je přidání paritního bitu ke každému přenášenému znaku (jak jsme si naznačili minulý týden) - to je však jen nejjednodušší (a také nejméně účinný) případ použití tzv. bezpečnostních kódů.
Základní myšlenka použití bezpečnostních kódů je velmi jednoduchá - původní znaky se podle přesně definovaných pravidel transformují na znaky jiného typu (např. osmibitové znaky se přidáním jednoho paritního bitu převedou na devítibitové). Teprve ty se pak skutečně přenesou a příjemce si je převede zpět do jejich původního tvaru. Některé znaky onoho "jiného typu" však nemohou z původních znaků řádným způsobem nikdy vzniknout (např. při používání liché parity bychom neměli nikdy získat znak se sudou paritou). Pokud pak příjemce přijme takový znak, který při daných pravidlech transformace nemá žádný "vzor", může jej oprávněně považovat za chybně přenesený znak.
Bezpečnostní kódy jsou v zásadě dvojího typu, a to:
Použití bezpečnostních kódů vždy znamená, že se v rámci každého znaku ve skutečnosti přenáší více bitů, než kolik by bylo k vyjádření vlastního znaku nezbytně nutné. Zabezpečení proti chybám není navíc nikdy stoprocentní, jeho účinnost však roste s počtem bitů "navíc". Nejjednodušší detekční kód (zabezpečení sudou nebo lichou paritou) přidává k datovým bitům jeden další bit a dokáže detekovat chybu v jednom bitu. Samoopravný kód, který umožňuje následnou opravu chyby v jediném bitu (tzv. rozšířený Hammingův kód), přidává ke každému 8-bitovému bytu navíc pět bitů (resp. 6 bitů ke každému 16-bitovému slovu).
V praxi je výhodnější nezabezpečovat proti chybám jednotlivé znaky, ale celé posloupnosti znaků resp. celé přenášené bloky dat. Dodatečné bity, používané k detekci chyb, se pak nepřidávají znovu ke každému znaku, ale jen jednou k celému bloku dat (a přenesou se spolu s ním). Je-li pak chyba detekována, nelze ji v rámci bloku lokalizovat až na jednotlivé znaky. Místo toho musí být celý blok prohlášen za chybný a přenesen znovu. To ovšem nemusí být vůbec na závadu - stačí si uvědomit, že přenosy dat téměř vždy probíhají po celých blocích, a nejmenší jednotkou dat, jejíž opakované vyslání si může příjemce vyžádat, je právě celý blok a nikoli jednotlivé znaky.
Podélná parita - longitudinal parity
Zabezpečení paritou je jedním možným způsobem zabezpečení celého bloku dat, chápaného jako posloupnost jednotlivých znaků. Zde se nekontroluje sudý resp. lichý počet jedničkových bitů v jednotlivých znacích, ale sudý resp. lichý počet jedničkových bitů ve stejnolehlých bitových pozicích všech znaků v bloku. Je-li tedy blok dat tvořen např. osmibitovými znaky, přidá se k celému bloku osm paritních bitů (tedy vlastně jeden znak navíc), a každý z nich se nastaví tak, aby byla dodržena sudá resp. lichá parita.
Použití podélné parity se někdy kombinuje i se zabezpečením jednotlivých znaků pomocí sudé resp. liché parity, která se pak pro odlišení od podélné parity označuje jako příčná či znaková parita (transversal, lateral parity)
Kontrolní součet - checksum
Další možností zabezpečení celého bloku dat je součet jednotlivých znaků v bloku, které jsou pro tento účel chápány jako celá dvojková čísla bez znaménka. Kontrolní součet se typicky provádí jako součet modulo 28 nebo 216, tj. výsledkem je kontrolní součet o délce jednoho nebo dvou bytů.
Kontrolní součet i podélnou paritu lze vyhodnocovat průběžně při přijímání jednotlivých znaků bloku. V případě kontrolního součtu se každý nově přijatý znak přičítá ke stávajícímu mezisoučtu, zatímco v případě podélné parity se provádí operace EX-OR (tj. nonekvivalence) jednotlivých bitů nového znaku se stávajícím mezivýsledkem.
Nejúčinnější formu zabezpečení bloku dat však představuje použití tzv. cyklických kódů - CRC (Cyclic Redundancy Check). Také zde se podobně jako u výpočtu podélné parity či kontrolního součtu průběžně na základě jednotlivých znaků bloku (přesněji jednotlivých bitů těchto znalů) průběžně vypočítává zabezpečovací údaj. Ten se na konci celého bloku porovná se zabezpečovacím údajem, který podle stejných pravidel vypočítal odesilatel a připojil k odesílanému bloku dat. Pokud se oba údaje shodují, lze přenesený blok s vysokou pravděpodobností považovat za správný - zabezpečení pomocí šestnáctibitového cyklického kódu totiž dokáže spolehlivě odhalit všechny chyby až v šestnácti po sobě jdoucích bitech, a chyby ve větším počtu bitů s přesností 99,9984 %.
Formální důkaz vynikající účinnosti zabezpečení pomocí cyklického kódu sice vyžaduje dosti pokročilý matematický aparát, vlastní způsob výpočtu zabezpečovacího údaje je však až neuvěřitelně jednoduchý (bohužel však zde již nemáme potřebný prostor k tomu, abychom tuto jednoduchost mohli patřičně "vychutnat"). Stačí k němu jednoduchý posuvný registr, umožňující provést operaci EX-OR (tj. nonekvivalenci jednotlivých bitů) s pevně danou maskou. Hodnota této masky je jednoznačně určena tzv. generujícím polynomem (generating polynomial), na kterém musí být příjemce i odesilatel předem dohodnuti. Použitelných tvarů těchto polynomů je více; v oblasti komunikací se nejčastěji používá polynom x16 + x12 + x5 + 1, doporučený organizací CCITT.