Функции транспортного уровня:
Средства сетевого уровня обеспечивают доставку данных между устройствами в составной сети (компьютерами, маршрутизаторами и т.д). Однако не следует забывать, что на одном узле может функционировать параллельно несколько программ, которым требуется доступ к сети. Следовательно, данные внутри компьютерной системы должны распределяться между программами. Поэтому, при передаче данных по сети недостаточно просто адресовать конкретный узел. Необходимо также идентифицировать программу-получателя, что невозможно осуществить средствами сетевого уровня.
Другой серьезной проблемой протоколов сетевого уровня является отсутствие средств, позволяющих передавать большие массивы данных. Когда исходные данные превышают максимально допустимый размер пакета сетевого уровня, то эти данные должны быть разбиты на порции, каждая из которых передается в сеть отдельным пакетом. Однако каждый пакет сетевого уровня передается по сети как единый, независимый от других блок данных. В случае если какие-либо пакеты "потерялись", то модуль сетевого протокола на принимающей стороне не сможет обнаружить потерю, и, следовательно, – обнаружить нарушение целостности общего массива данных. Поэтому средства транспортного уровня обеспечивают отсутствие потерь информации. Такой режим передачи данных получил название гарантированной доставки.
Таким образом, средства транспортного уровня представляют собой функциональную надстройку над сетевым уровнем и решают две основных задачи:
-
обеспечение доставки данных между конкретными программами, функционирующими, в общем случае, на разных узлах сети;
-
обеспечение гарантированной доставки массивов данных произвольного размера.
В настоящее время в Интернет используются два транспортных протокола – UDP, обеспечивающий негарантированную доставку данных между программами, и TCP, обеспечивающий гарантированную доставку с установлением виртуального соединения.
Доставка данных между приложениями
Для идентификации программ протоколы транспортного уровня в сети Интернет (TCP и UDP), используют уникальные числовые значения, так называемые номера портов. Номера портов назначаются программам в соответствии с ее функциональным назначением на основе определенных стандартов. Для каждого протокола существуют стандартные списки соответствия номеров портов и программ. Так, например, программное обеспечение WWW, работающее через транспортный протокол TCP, использует TCP-порт 80, модули протокола FTP – TCP-порт 21, а служба DNS взаимодействует с транспортными протоколами TCP и UDP через TCP-порт 53 и UDP-порт 53 соответственно.
Таким образом, протокол сетевого уровня IP и транспортные протоколы TCP и UDP реализуют двухуровневую схему адресации: номера TCP- и UDP-портов позволяют однозначно идентифицировать программу в рамках узла, однозначно определяемого IP-адресом. Следовательно, комбинация IP-адреса и номера порта позволяет однозначно идентифицировать программу в сети Интернет. Такой комбинированный адрес называется сокетом (socket).
Гарантированная доставка
Принцип гарантированной доставки основан на том, что передающий компьютер всегда «знает», была ли доставлены данные получателю или нет. Это обеспечивается тем, что принимающий компьютер подтверждает успешный прием данных. Если передающий компьютер не получает подтверждения, он пытается произвести повторную передачу. Режим передачи с гарантией доставки имеет существенный недостаток – сеть дополнительно загружается пакетами-подтверждениями. Это может оказаться принципиальной проблемой на каналах с низкой производительностью. Поэтому при широковещательной рассылке, а также для передачи небольших порций данных, если нет необходимости в подтверждении, используется режим передачи с негарантированной доставкой.
Очевидно, что использование подтверждений не является достаточным для обеспечения правильной передачи больших массивов данных. В результате возможных задержек и/или потерь с последующей повторной передачей, фрагменты массива данных могут быть доставлены в неправильном порядке, часть из них может оказаться продублированной. Для того, чтобы восстановить правильную последовательность данных, принимающей стороне необходимо выделить определенные ресурсы (например, память) и согласовать параметры передачи с отправителем. Следовательно, перед началом передачи абоненты должны обменяться некоторой служебной информацией и перейти в состояние готовности к взаимодействию. Такой режим передачи данных по сети называется передачей с установлением виртуального соединения. По окончании взаимодействия выделенные ресурсы, как правило, освобождаются и абоненты "выходят из состояния готовности", то есть соединение закрывается.