В протоколе TCP также, как и в UDP, для связи с прикладными процессами
используются порты. Номера портам присваиваются аналогичным образом: имеются
стандартные, зарезервированные номера (например, номер 21 закреплен за сервисом
FTP, 23 - за telnet), а менее известные приложения пользуются произвольно
выбранными локальными номерами.
Однако в протоколе TCP порты используются несколько иным способом. Для
организации надежной передачи данных предусматривается установление
логического соединения между двумя прикладными процессами. В рамках
соединения осуществляется обязательное подтверждение правильности приема для
всех переданных сообщений, и при необходимости выполняется повторная передача.
Соединение в TCP позволяет вести передачу данных одновременно в обе стороны, то
есть полнодуплексную передачу.
Соединение в протоколе TCP идентифицируется парой полных адресов обоих
взаимодействующих процессов (оконечных точек). Адрес каждой из оконечных точек
включает IP-адрес (номер сети и номер компьютера) и номер порта. Одна оконечная
точка может участвовать в нескольких соединениях.
Установление соединения выполняется в следующей последовательности:
- При установлении соединения одна из сторон является инициатором. Она
посылает запрос к протоколу TCP на открытие порта для передачи (active open).
- После открытия порта протокол TCP на стороне процесса-инициатора посылает
запрос процессу, с которым требуется установить соединение.
- Протокол TCP на приемной стороне открывает порт для приема данных (passive
open) и возвращает квитанцию, подтверждающую прием запроса.
- Для того чтобы передача могла вестись в обе стороны, протокол на приемной
стороне также открывает порт для передачи (active port) и также передает запрос
к противоположной стороне.
- Сторона-инициатор открывает порт для приема и возвращает квитанцию.
Соединение считается установленным. Далее происходит обмен данными в рамках
данного соединения.
|