Retransmisja – ponowne przesyłanie pakietów telekomunikacyjnych, które zostały uszkodzone lub utracone. Termin ten odnosi się do jednego z podstawowych mechanizmów stosowanych przez protokoły komunikacyjne, które działają na komutacji pakietów sieci komputerowej w celu zapewnienia niezawodnej łączności (np. takiej, która zapewnia niezawodny strumień bajtów, np. Transmission Control Protocol (TCP)).
Sieci te są zazwyczaj „niewiarygodne”, co oznacza, że może dojść do opóźnień, uszkodzenia lub stracenia pakietów, lub dostarczenia ich z opóźnieniem. Protokoły, które zapewniają niezawodną komunikację w tego typu sieciach, używają kombinację potwierdzeń (ang. acknowledgements), retransmisji brakujących i/lub uszkodzonych pakietów (zazwyczaj inicjowanej przez tzw. timeout) oraz sum kontrolnych w celu zapewnienia wiarygodności.
Potwierdzenia
Istnieje kilka rodzajów potwierdzeń, które mogą być używane samodzielnie lub w połączeniu z protokołami sieciowymi:
- Potwierdzenie pozytywne - odbiorca wyraźnie informuje nadawcę, które pakiety, wiadomości lub segmenty zostały odebrane poprawnie. Pozytywne potwierdzenia pośrednio informują nadawcę, które pakiety nie zostały otrzymane i dostarczają szczegółowe informacje na temat pakietów, które muszą być retransmitowane. Positive Acknowledgment with Re-Transmission (PAR; pol. Pozytywne potwierdzenia z retransmisją) to metoda stosowana przez TCP[1], aby sprawdzić odbiór przesyłanych danych. PAR polega na przekazywaniu danych w określonym czasie, póki odbierający je host potwierdza odbiór danych.
- Potwierdzenie negatywne (NACK) - odbiorca wyraźnie informuje nadawcę, które pakiety, wiadomości lub segmenty zostały otrzymane niepoprawnie i tym samym powinny być retransmitowane[2]
- Potwierdzenie selektywne (SACK) - odbiorca informuje, które pakiety, wiadomości lub segmenty, będące w strumieniu danych, zostały potwierdzone (pozytywnie lub negatywnie). Pozytywne potwierdzenie selektywne (ang. positive selective acknowledgement) jest opcją w TCP,[3] która jest przydatna w satelitarnych usługach internetowych.[4]
- Potwierdzenie zbiorcze - odbiorca potwierdza, że prawidłowo otrzymał pakiet, wiadomość lub segment w strumieniu, który pośrednio informuje nadawcę, że poprzednie pakiety zostały prawidłowo odebrane. TCP używa potwierdzenie skumulowane w swoim oknie przesuwnym (ang. TCP sliding window).
Retransmisja
Retransmisja jest bardzo prostym pojęciem. Zawsze, gdy jedna strona wysyła coś do drugiej strony, zachowuje kopię danych, do czasu, kiedy odbiorca potwierdzi, że je otrzymał. W wielu przypadkach nadawca automatycznie retransmituje dane przy użyciu zatrzymanych kopii. Przykładami takich przypadków są sytuacje, gdy:
- w ustalonym czasie nie zostanie dostarczone potwierdzenie (timeout)
- nadawca wykryje, że transmisja nie powiodła się
- odbiorca wie, że spodziewane dane nie dotarły, o czym następnie informuje nadawcę
- odbiorca nie wie, że dane zostały dostarczone, ale uszkodzone, o czym również informuje nadawcę