Протокол TCP (Transmission Control Protocol) обеспечивает надёжную доставку данных через составные сети и относится к транспортному уровню по схеме OSI. TCP протокол использует для передачи своих блоков по сети протокол IP устанавливая связь между двумя процессами на логическом уровне. По сути ненадежный протокол IP используется протоколом TCP как транспортное средство. Протокол IP помещает в себя блоки TCP, выполняя по необходимости их фрагментацию и сборку.
Протокол IP относится к сетевому уровню, и его основной задачей является доставка пакетов по
произвольному маршруту от приемника до источника. Основной же задачей TCP является передача данных, между произвольными прикладными процессами, выполняющихся на произвольных узлах составной сети.
После доставки пакета IP протоколом в приемник (компьютер), данные необходимо передать определенному процессу, эту функцию выполняет операционная система. Она организует очереди к точкам входа прикладных процессов. Такие очереди называются портами. Для протокола TCP адресом назначения является номер порта прикладного процесса (службы). Номер порта плюс номер сети плюс номер конечного узла однозначно определяют прикладной процесс в сети и называются сокетом (socket).
Разработчики приложений имеют договоренность о использовании номеров портов для наиболее используемых процессов. Например процесс обмена файлами по протоколу FTP, использует стандартный номер пора 21.
Диапазоны портов:
— меньше 255 используются приложениями общего пользования
— от 255 до 1023 отданы компаниям для коммерческих приложений
— свыше 1023 не регламентируется
Сегмент — является единицей измерения для протокола TCP. Данные переданные от вышестоящих протоколов, протокол TCP воспринимает как неструктурированный поток байтов. Поступающие байты буферизируются, и затем нарезаются на сегменты для передачи на сетевой уровень. Следует отметить что протокол TCP подтверждает получение не пакета а байтов потока, чем и отличается от других протоколов.
Перед началом сеанса обмена, оба участника соединения договариваются о размере сегмента. Размер вбирается таким образом что бы сегмент не превышал размер поля данных IP пакета.
Для исключения ошибочного соединения используется многошаговая процедура подтверждения связи. Во время инициализации соединения процессы обмениваются рядом параметров, некоторые из них остаются постоянными, а некоторые меняются в ходе сеанса. В качестве параметров могут выступать размер сегментов, начальные и текущие номера передаваемых байтов. Следует отметить что каждый процесс может участвовать в нескольких соединениях.
Использование протоколов прикладного уровня (TCP) позволяет обеспечивать стабильную работу приложений конечных пользователей при постоянно изменяющийся конфигурации сети. Это и сделало протокол TCP популярным среди разработчиков ПО и оборудования.