Инициализация TCP-соединения происходит в три этапа. Делается это для синхронизации отправки и получения сегментов, извещения другого узла о количестве данных, которые можно послать за один раз, и установки виртуального соединения.
Вот из каких операций состоит этот процесс:
1. Узел-отправитель запрашивает соединение, посылая сегмент с установленным флагом синхронизации (SYN).
2. Узел-адресат подтверждает получение запроса, отправляя обратно сегмент с:
- Установленным флагом синхронизации.
- Порядковым номером начального байта сегмента, который он может послать или номером последовательности (sequence number).
- Подтверждением, включающим порядковый номер следующего сегмента, который он ожидает получить.
3. Запрашивающий узел посылает обратно сегмент с подтверждением номера последовательности и номером своего подтверждения (acknowledgement number).
Для завершения соединения TCP действует аналогично. Это гарантирует, что оба узла закончат передачу и примут все данные.
Протокол TCP буферизирует данные для передачи между двумя узлами, используя скользящие окна (sliding windows). Каждый TCP/IP узел поддерживает два скользящих окна: одно для приема данных, а другое - для отправки. Размер окна определяет объем данных, которые могут быть буферизированы на компьютере.
Исходящий – outgoing – инициатива при подключении исходит от нас к клиенту.
Входящий – ingoing – инициатива при подключении исходит из вне к серверу.
Download – загрузка – копирование к себе.
Upload – выгрузка – копирование от себя.