TCP
Протокол TCP (Transmission Соntrоl Рrоtосоl - протокол керування передачею ) - протокол керування передачею даних, що використовує автоматичну повторну передачу пакетів, що містять помилки. Протокол TCP відповідає за розбивку переданої інформації на пакети і правильне відновлення інформації з пакетів одержувача.
Незважаючи на те, що TCP і UDP використовують той самий мережний рівень (IP), TCP надає додаткам абсолютно інші сервиси, ніж UDP. TCP надає заснований на з'єднанні надійний сервіс потоку байтів.
Термін "заснований на з'єднанні" (connection-oriented) означає, що два додатки, що використовують TCP (як правило, це клієнт і сервер), повинні установити TCP з'єднання один з одним, після чого в них з'являється можливість обмінюватися даними. Типова аналогія - це набір телефонного номера, чекання відповіді від вилученого абонента, коли він говорить "алло", після чого необхідно сказати, хто дзвонить.
TCP забезпечує свою надійність завдяки наступному: - Дані від додатка розбиваються на блоки визначеного розміру, що будуть відправлені. Це цілком відрізняється від UDP, у якому кожен запис, що здійснює додаток, генерує IP датаграму цього розміру. Блок інформації, що передається від TCP у IP, називається сегментом (segment). - Коли TCP посилає сегмент, він установлює таймер, очікуючи, що з вилученого кінця прийде підтвердження на цей сегмент. Якщо підтвердження не отримане після закінчення часу, сегмент передається повторно. - Коли TCP приймає дані від віддаленої сторони з'єднання, він відправляє підтвердження. Це підтвердження не відправляється негайно, а звичайно затримується на долі секунди. - TCP здійснює розрахунок контрольної суми для свого заголовка і даних. Це контрольна сума, що розраховується на кінцях з'єднання, метою якої є виявити будь-яку зміну даних у процесі передачі. Якщо сегмент прибуває з невірною контрольною сумою, TCP відкидає його і підтвердження не генерується. (Очікується, що відправник відробить тайм-аут і здійснить повторну передачу.) - Через те що TCP сегменти передаються у вигляді IP датаграм, а IP датаграми можуть прибувати безладно, також безладно можуть прибувати і TCP сегменти. Після одержання даних TCP може по необхідності змінити їхню послідовність, у результаті додаток одержує дані в правильному порядку. - Через те що IP датаграма може бути продубльована, що TCP, який приймає, повинен відкидати продубльовані дані. - TCP здійснює контроль потоку даних. Кожна сторона TCP з'єднання має визначений простір буфера. TCP на приймаючій стороні дозволяє вилученій стороні посилати дані тільки в тому випадку, якщо одержувач може помістити них у буфер. Це запобігає переповненню буферів повільних хостів швидкими хостами.
Між двома додатками по TCP з'єднання здійснюється обмін потоком 8-бітових байтів. Автоматично TCP не вставляє запису маркерів. Це називається сервісом потоку байтів (byte stream service). Якщо додаток на одному кінці записав спочатку 10 байт, потім 20 байт і потім ще 50 байт, додаток на іншому кінці з'єднання не може сказати якого розміру був кожен запис. На іншому кінці ці 80 байт можуть бути лічені, наприклад, за 4 рази по 20 байт за щораз. Один кінець з'єднання поміщає потік байт у TCP, і точно так само ідентичний потік байт з'являється на іншому кінці.
TCP не інтерпретує вміст байтів. TCP поняття не має про те, чи відбувається обмін двійковими даними, ASCII символами, EBCDIC символами або чим-небудь ще. Ця інтерпретація потоку байтів здійснюється додатками на кожній стороні з'єднання.
Передача TCP сегментів здійснюється у вигляді Internet датаграм. Заголовок датаграми в Internet протоколі має кілька інформаційних полів, включаючи адреси хост- комп'ютерів, що відправляють і приймають. Заголовок TCP слідує за Internet заголовком і доповнює його інформацією, специфічною для TCP протоколу. Такий розподіл допускає використання на рівні хост-комп’ютерів протоколів, інших ніж TCP.
Формат TCP заголовка