Протокол
TCP предоставляет транспортные услуги и используется в тех случаях,
когда требуется надёжная доставка сообщений. Он освобождает прикладные
процессы от необходимости использовать тайм-ауты и повторные передачи
для обеспечения надежности. Наиболее типичными прикладными процессами,
использующими TCP, являются FTP (File Transfer Protocol – протокол
передачи файлов) и TELNET.
Протокол
TCP разбивает поток байт на пакеты; он не сохраняет границ между записями.
Например, если один прикладной процесс делает 5 записей в TCP-порт,
то прикладной процесс на другом конце виртуального канала может выполнить
10 чтений для того, чтобы получить все данные. Но этот же процесс
может получить все данные сразу, сделав только одну операцию чтения.
Не существует зависимости между числом и размером записываемых сообщений
с одной стороны и числом и размером считываемых сообщений с другой
стороны.
Протокол
TCP требует, чтобы все отправленные данные были подтверждены принявшей
их стороной. Он использует тайм-ауты и повторные передачи для обеспечения
надёжной доставки.
Отправителю
разрешается передавать некоторое количество данных, не дожидаясь подтверждения
приёма ранее отправленных данных. Таким образом, между отправленными
и подтвержденными данными существует окно уже отправленных, но ещё
неподтвержденных данных.
Количество
байт, которые можно передавать без подтверждения, называется размером
окна. Как правило, размер окна устанавливается в стартовых файлах
сетевого программного обеспечения.
Так как
TCP-канал является дуплексным, то подтверждения для данных, идущих
в одном направлении, могут передаваться вместе с данными, идущими
в противоположном направлении. Приёмники на обеих сторонах виртуального
канала выполняют управление потоком передаваемых данных для того,
чтобы не допускать переполнения буферов [18].