Podstawowe informacje dotyczące protokołu TCP

TCP (ang. Transmission Control Protocol) realizuje transmisje w trybie połączeniowym. Oznacza to, że między komunikującymi się hostami zestawiane jest wirtualne połączenie. Protokół TCP utrzymuje to połączenie i zapewnia niezawodny transfer danych między hostami. Realizowane jest to poprzez operacje potwierdzania pakietów i retransmitowania pakietów zagubionych. Dokonują tego specjalne algorytmy. W rezultacie program wysyłający dane może mieć pewność ich dostarczenia do odległego hosta. Utworzone połączenie wirtualne zapewnia kanał transmisji, w którym dane przyjmują postać strumienia bajtów. Konkretnie są to dwa strumienie, gdyż transmisja jest dwustronna. Strumień ten nie ma żadnej struktury, nie jest podzielony na żadne rekordy lub inne mniejsze części. Oczywiście przesyłany jest on przy pomocy pakietów (porcji danych) jednak podział strumienia na mniejsze części danych dokonywany przez protokół TCP nie powinien być wiążący dla strony odbierającej. Nadal powinna ona traktować nadchodzące we fragmentach dane jako część strumienia. Jest to dość ważna uwaga - przekonamy się o tym przy konstruowaniu konkretnych programów - protokół TCP nie zawsze zachowuje podział danych jaki mu sugeruje warstwa zastosowań po stronie wysyłającej. Czasem łączy mniejsze fragmenty, czasem dzieli większe.
Przykładowo jeśli program wysyła dwa komunikaty bezpośrednio następujące po sobie, warstwa transportowa może je wysłać w jednym pakiecie. Program odbierający, jeśli zastosuje proste odbieranie danych, może potraktować porcję danych jako jeden komunikat i w rezultacie nastąpi błąd. Szczegółowe informacje na temat TCP znaleźć można w RFC-793.