8. Общая характеристика стека протоколов TCP/IP. Основные протоколы сетевого и транспортного уровней.
Модель OSI имеет исключительно теоретическую направленность, а ее практическая реализация популярности не получила, зато мировое признание имеет модель TCP/IP, которая имеет 3 уровня, представленные ниже.
Межсетевой уровень определяет официальный формат пакета и протокол, называемый IP (Internet Protocol). Задачей межсетевого протокола является доставка IP-пакетов к пунктам назначения. Основными аспектами здесь являются адресация компьютеров, выбор маршрута пакета и недопущение закупорки транспортных артерий. Поэтому можно утверждать, что межсетевой уровень модели TCP/IP функционально близок сетевому уровню модели OSI.
Транспортный уровень создан для того, чтобы одноуровневые сущности на приемных и передающих компьютерах могли поддерживать связь, подобно связи при транспортном уровне модели OSI. На этом уровне описаны два протокола.
TCP (Transmission Control Protocol – протокол управления передачей), является надежным протоколом с установлением соединений, позволяющим без ошибок доставлять байтовый поток с одной машины на любую другую машину объединенной сети. Он разбивает входной поток байтов на отдельные сообщения и передает их межсетевому уровню. В пункте назначения получающий TCP-процесс собирает из полученных сообщений выходной поток. Кроме того, TCP осуществляет управление потоком, чтобы быстрый отправитель не перегрузил информацией медленного получателя.
UDP (User Data Protocol – пользовательский протокол данных), является ненадежным протоколом без установления соединения, не использующим последовательное управление потоком протокола TCP, а предоставляющим свое собственное. Он также широко используется в одноразовых клиент-серверных запросах и приложениях, в которых оперативность важнее аккуратности, например при передаче речи и видео.
Прикладной уровень. содержит все протоколы высокого уровня и по функционалу соответствует одноименному уровню модели OSI. Главной задачей протоколов и служб данного уровня является формирование потока (stream) данных, который будет переправляться нижележащему транспортному уровню для нарезания его на сегменты.
Протокол IP находится на межсетевом уровне стека протоколов TCP/IP и обеспечивает передачу блоков данных, называемых пакетами, от отправителя к получателям, где отправители и получатели яв-ляются компьютерами, идентифицируемыми адресами фиксирован-ной длины (IP-адресами). Протокол IP обеспечивает при необходимо-сти также фрагментацию и сборку пакетов для передачи данных через сети блоками малого размера.
Протокол IP является ненадежным протоколом без установления соединения. Это означает, что протокол IP не подтверждает доставку данных, не контролирует целостность полученных данных и не про-изводит операцию квитирования (от англ. handshaking) – обмена слу-жебными сообщениями, подтверждающими установку соединения с узлом назначения и его готовность к приему данных. Протокол IP об-рабатывает каждый пакет как независимую единицу, не имеющую связи ни с какими другими пакетами в сети. После того как пакет от-правляется в сеть, его дальнейшая судьба никак не контролируется отправителем (на уровне протокола IP). Если пакет не может быть доставлен, он уничтожается. Гарантию правильной передачи данных предоставляют протоко-лы вышестоящего уровня (например, протокол TCP), которые имеют для этого необходимые механизмы.
Одна из основных задач, решаемых протоколом IP, – маршрутизация пакетов, то есть определение пути следования пакета от одного узла сети к другому на основании адреса получателя. Маршрутизатором, или шлюзом, называется узел сети с несколькими IP-интерфейсами, подключенными к разным IP-сетям, который осуществляется на основе решения задачи маршрутизации (перенаправление пакетов из одной сети в другую для доставки от отправителя к получателю). Хостами называются узлы IP-сети, не являющиеся маршрутизаторами. Обычно хост имеет один IP-интерфейс (например, связанный с сетевой картой Ethernet или с модемом), хотя может иметь и не-сколько [13].
Главная задача транспортного уровня заключается в передаче данных между прикладными процессами. Эту задачу решают протокол управления передачей TCP (Transmission Control Protocol) и протокол пользовательских дейтаграмм UDP (User Datagram Protocol). Протоколы TCP и UDP имеют много общего. Тот и другой обеспечивают интерфейс с вышележащим прикладным уровнем, передавая данные, поступающие на входной интерфейс хоста, соответствующему приложению. При этом оба протокола используют концепции «порт» и «сокет». Оба они также поддерживают интерфейс с нижележащим сетевым уровнем IP, упаковывая свои пакеты в IP-пакеты.
Процедура приема протоколами TCP и UDP данных, поступающих от нескольких различных прикладных служб, называется мультиплексированием. Обратная процедура – процедура распределения протоколами TCP и UDP поступающих от сетевого уровня пакетов между набором высокоуровневых служб – называется демультиплексированием.
TCP протокол. Информация, поступающая к протоколу TCP от протоколов более высокого уровня, рассматривается протоколом TCP как неструктурированный поток байтов. Поступающие данные буферизуются средствами TCP. Для передачи на сетевой уровень из буфера «вырезается» некоторая непрерывная часть данных, которая называется сегментом, и снабжается заголовком.
Основным отличием протокола TCP от UDP является то, что на протокол TCP возложена дополнительная задача – обеспечить надежную доставку сообщений, используя в качестве основы протокол IP.
TCP-протокол решает задачу обеспечения надежного обмена данными путем установления между компьютерами логических соединений, благодаря которым TCP следит, чтобы передаваемые сег-менты не были потеряны, не были продуб¬лированы и пришли к полу-чателю в том порядке, в котором были отправлены.
При установлении логического соединения модули TCP договариваются между собой о параметрах процедуры обмена данными. В протоколе TCP каждая сто¬рона соединения посылает противополож-ной стороне следующие параметры: 1) максимальный размер сегмента, который она готова принимать; 2) максимальный объем данных (возможно несколько сегментов), которые она разрешает другой стороне передавать в свою сторону, даже если та еще не по¬лучила квитанцию на предыдущую порцию данных; 3) начальный порядковый номер байта, с которого она начинает отсчет потока данных в рамках этого соединения.
Таким образом, из всего вышеизложенного о двух протоколах транспортно¬го уровня стека TCP/IP следует, что на один из них – TCP – возложена сложная и очень важная задача обеспечения надежной передачи данных через ненадежную сеть.
С другой стороны, функциональная простота протокола UDP обусловливает простоту алгоритма его работы, компактность и высокую скорость. Поэто¬му те приложения, в которых реализован собст-венный, достаточно надежный механизм обмена сообщениями, осно-ванный на установлении соединения, пред¬почитают использовать для непосредственной передачи данных по сети менее надежные, но бо-лее быстрые средства транспортировки, в качестве которых по отно-шению к протоколу TCP и выступает протокол UDP.
Протокол UDP может быть использован и в том случае, когда хорошее качество линий связи обеспе¬чивает достаточный уровень надежности и без применения дополнительных приемов (например, ус-тановление логического соединения и квитирования пере¬даваемых пакетов (подтверждение получения)). Заметим, что, поскольку прото-кол TCP основан на ло¬гических соединениях, он не годится для ши-роковещательной и групповой рассылки, в отличие от протокола UDP.