Основы соединения TCP
Что такое TCP
Протокол управления передачей (Transmission Control Protocol, TCP) - самый распространённый транспортный протокол, основа всего интернет-трафика. Идея TCP в том, чтобы дать двум взаимодействующим точкам (назовём их хост A и хост B) надёжный потоковый канал передачи данных. «Потоковый» означает, что ни хосту A, ни хосту B не нужно задумываться, как данные проходят по соединению. Хост A просто отправляет поток байтов, а хост B получает на своей стороне точно такой же поток. Разбиение данных на пакеты для передачи по сети, повторная отправка потерянных пакетов, контроль переполнения и прочее - задача TCP.
TCP - строго протокол «точка-точка»: в соединении могут участвовать только две стороны, третья присоединиться не может.
Соединения TCP
Прежде чем передавать данные, один из хостов должен установить соединение с другим. Это похоже на телефонный звонок: одна из сторон должна позвонить другой.
Хост, который берёт на себя инициативу установить соединение, открывает «исходящее соединение» или «выполняет активное открытие». Это как набрать телефонный номер нужного абонента, только вместо номера используется IP-адрес другого хоста.
Хост, который принимает «звонок», принимает «входящее соединение» или «выполняет пассивное открытие». Это как снять трубку, когда телефон зазвонил.
После установки соединения обе стороны могут в любой момент «что-то сказать» (отправить данные), а TCP позаботится о том, чтобы все данные, отправленные с одного конца, дошли до другого.
Соединения TCP должны закрываться (завершаться) корректно: хосты обмениваются специальными сообщениями, чтобы сообщить друг другу о завершении соединения. Это называется «плавным разъединением». Есть также «сброс» (прерывание), который гораздо проще и подобен резкому повешению трубки. Наконец, есть способ завершить соединение путём «отбрасывания», когда хост просто «забывает», что соединение существовало.
Соединение TCP может быть закрыто намеренно или по тайм-ауту.
Действующее соединение TCP полностью определяется четырьмя параметрами: IP-адресом и номером порта хоста A, а также IP-адресом и номером порта хоста B. Когда хост выполняет активное открытие, он должен «набрать» не только IP-адрес целевого хоста, но и номер порта на нём. Порты не физические - это просто логические подразделения IP-адреса (65 536 портов на один IP). Если IP - это телефонный номер всего офиса, то порт - добавочный. «Звонящий» хост тоже звонит не просто со своего IP-адреса, но и с определённого порта.
В выпуске TiOS V4 добавлена поддержка Transport Layer Security (TLS), так что теперь для защищённой связи через Интернет можно использовать стандартные отраслевые механизмы шифрования.