Опубликован: 03.10.2011 | Доступ: свободный | Студентов: 7478 / 2427 | Оценка: 4.48 / 4.40 | Длительность: 18:03:00
Лекция 2:

Верхние уровни моделей OSI, TCP/IP

< Лекция 1 || Лекция 2: 12 || Лекция 3 >

2.2. Транспортный уровень моделей OSI, TCP/IP

Транспортный уровень моделей OSI и TCP/IP одинаков как по функциям, так и по названию (см. рис. 1.6). TCP/IP – это комбинация двух протоколов. Протокол IP функционирует на Сетевом уровне 3 OSI модели, он является протоколом дейтаграммного типа без предварительного соединения connectionless, который обеспечивает доставку через сеть без гарантий ( best-effort delivery ), т. е. доставка ненадежная. Протокол TCP работает на транспортном Уровне 4 OSI модели и является протоколом типа connection-oriented, т. е. ориентированным на предварительное соединение, что обеспечивает контроль потока и надежность доставки. Когда эти протоколы объединены, они обеспечивают более широкий объем услуг, малую задержку и высокую надежность (см. рис. 1.9). Всемирная сеть Интернет строится на основе стека протоколов TCP/IP.

Основной функцией транспортного уровня является транспортировка сообщений и управление потоком информации от источника до устройства назначения с обеспечением надежности доставки. Контроль доставки сообщения из одного конца соединения до другого и надежность обеспечены целым рядом параметров, передаваемых в заголовках сегментов:

  • номерами последовательности передаваемых сегментов данных;
  • размером так называемого скользящего окна;
  • квитированием, т. е. подтверждением приема сообщения.

Транспортный уровень устанавливает логическое соединение между двумя конечными точками сети. Протоколы транспортного уровня (см. рис. 1.7) сегментируют данные, посланные приложениями верхнего уровня на передающей стороне, и повторно собирают (реассемблируют) из полученных сегментов целое сообщение на приемной стороне.

Таким образом, протоколы транспортного уровня:

  • реализуют сегментацию данных и повторную сборку целого сообщения из полученных сегментов. Большинство сетей имеет ограничение на объем передаваемых сообщений. Поэтому Транспортный уровень делит большое сообщение прикладного уровня на сегменты данных, размер которых соответствует требованиям протокола транспортных единиц PDU более низких уровней сетевой модели. Кроме того, если в процессе контроля обнаружится, что принятое сообщение содержит ошибку, то возникает необходимость повторной передачи всего большого сообщения. При обнаружении ошибки в одном из принятых сегментов только данный сегмент будет передан повторно. Сегменты могут быть направлены одному или многим узлам назначения;
  • обеспечивают многочисленные одновременно протекающие процессы обмена данными. На каждом конечном узле сети может быть запущено много разных приложений. Множество одновременно протекающих процессов обмена данными верхнего уровня может быть мультиплексировано поверх одного логического транспортного соединения. Чтобы передавать потоки данных соответствующим приложениям, протокол транспортного уровня должен идентифицировать каждое приложение. В протоколах TCP и UDP в качестве идентификатора приложения используют номер порта. Номер порта в заголовке сегмента транспортного уровня указывает, какое приложение создало передаваемое сообщение и какое должно обрабатывать полученные данные на приемной стороне. При множестве одновременно протекающих обменов данными каждому из приложений или услуг назначается свой адрес (номер порта) так, чтобы транспортный уровень мог определить, с каким конкретно приложением или службой передаваемые данные должны взаимодействовать.

Наиболее известными протоколами транспортного уровня являются протокол контроля передачи (Transmission Control ProtocolTCP ) и протокол дейтаграмм пользователя (User Datagram ProtocolUDP ). Протокол контроля передачи TCP является ориентированным на предварительное соединение типа connection-oriented. Помимо деления сообщения на сегменты и идентификации приложений TCP обеспечивает контроль потока и надежность. Он взаимодействует с протоколами прикладного уровня: HTTP, SMTP, FTP, Telnet и другими. Протокол UDP является протоколом дейтаграммного типа connectionless, взаимодействует с такими протоколами прикладного уровня, как система доменных именDNS, передачи потока видеоданных – Video Steaming, голос поверх IPVoice over IP и рядом других. Следует отметить, что система DNS взаимодействует как с TCP, так и с UDP.

Итак, протокол транспортного уровня TCP помимо деления сообщения на сегменты и идентификации приложений обеспечивает:

  1. Контроль потока.
  2. Надежность.

Для облегчения контроля и обеспечения надежности сообщения передаются частями (порциями), т. е. сегментами. При этом протокол транспортного уровня узла источника должен прослеживать каждый сегмент данных при передаче и повторно передавать любую часть сообщения, прием которой не был подтвержден устройством назначения. Транспортный уровень хоста на приемной стороне должен отследить получение данных и подтвердить это получение.

Контроль потока необходим, чтобы гарантировать, что источник, передавая данные с некоторой скоростью, не переполняет буферные устройства узла назначения. Если узел назначения не может обрабатывать данные в темпе их поступления, то может произойти переполнение буферов и потеря данных. Управление скоростью передачи данных обеспечивается изменением размера скользящего окна (Window), которое указывает, сколько байтов данных может быть передано за одну порцию. При переполнении буферных устройств узел назначения посылает источнику требование уменьшения размера окна.

После получения каждой порции данных узел назначения посылает источнику квитанцию подтверждения (acknowledgment). Подтверждение (квитирование) обеспечивает надежность сети передачи данных. Если подтверждение не получено, то неподтвержденная порция данных передается узлом-источником повторно.

В дейтаграммных IP-сетях пакеты одного сообщения между двумя конечными устройствами могут проходить разными путями. Поэтому на узел назначения сегменты могут прийти не в том порядке, в котором были переданы. Надежный протокол транспортного уровня (ТСР) должен восстановить правильный порядок сегментов и собрать переданное сообщение (реассемблировать его).

Надежность, контроль потока, сегментация сообщений и их реассемблирование, адресация приложений реализуются путем задания ряда параметров в заголовке сегмента TCP ( рис. 2.4), размер которого составляет 20 байт.

Формат заголовка сегмента TCP

Рис. 2.4. Формат заголовка сегмента TCP

Поля TCP сегмента определяют следующее:

  • номер порта источника (Source Port) – 16 бит номера порта, который посылает данные;
  • номер порта назначения (Destination Port) – 16 бит номера порта, который принимает данные;
  • номер последовательности (Sequence Number) – 32 бита номера первого байта в сегменте, используемого, чтобы гарантировать объединение частей (порций) данных в корректном порядке в устройстве назначения;
  • номер подтверждения (Acknowledgment Number) – 32 бита последовательного номера подтверждения принятых данных (начальный номер байта следующей ожидаемой порции данных);
  • ДЗ (HL) – длина заголовка (число 32-разрядных слов в заголовке);
  • резерв – разряды поля, установленные в ноль;
  • код (Code bits) – 6 разрядов, определяющих тип сегмента, например для выполнения функций установки (SYN) и завершения сеанса (FIN), подтверждения принятых данных (ACK), срочного сообщения (URG);
  • размер скользящего окна (Window) – число байт, передаваемых за одну порцию;
  • контрольная сумма (Checksum) – вычисленная контрольная сумма заголовка и поля данных;
  • индикатор (Urgent pointer) – индицирует конец срочных данных;
  • опции (Option) – каждая текущая опция определяет максимальный размер TCP-сегмента;
  • данные (Data) – сообщение протокола верхнего уровня.

Поскольку UDP является протоколом дейтаграммного типа, то в заголовке его сегмента ( рис. 2.5) отсутствуют такие параметры, как Номер последовательности, Номер подтверждения, Размер окна.

Формат сегмента UDP

Рис. 2.5. Формат сегмента UDP
  • номер порта источника (Source Port) – 32 бита номера порта, который посылает данные;
  • номер порта назначения (Destination Port) – 32 бита номера порта, который принимает данные;
  • длина (Length) – число байт в заголовке и данных,
  • контрольная сумма (Checksum)контрольная сумма заголовка и поля данных;
  • данные (Data) – сообщение протокола верхнего уровня.

Поскольку протокол UDP не обладает механизмами надежности, она обеспечивается протоколами верхнего прикладного уровня. Однако небольшой размер заголовка UDP и отсутствие дополнительной обработки номера последовательности, окна и пересылки подтверждения получения данных повышают скорость обработки сообщений по сравнению с ТСР.

Комбинация номера порта и IP-адреса образует комплексный адрес, так называемый сокет (socket), который определяет не только уникальное устройство, но и программное обеспечение, используемое для создания и обработки сообщения, например 192.168.10.17:1275, 10.1.10.6:53.

Номера портов делятся на несколько типов:

  • известные номера (Well Known Ports), диапазон адресов которых находится в пределах от 0 до 1023;
  • зарегистрированные порты с номерами от 1024 до 49151;
  • динамические порты с номерами от 49152 до 65535, которые обычно динамически присваиваются пользователям.

Номера известных портов заданы организацией Internet Assigned Numbers Authority ( IANA ). Номера известных портов назначаются протоколам и службам сервиса прикладного уровня. Номера некоторых известных портов протокола TCP приведены в таблице 2.1

Таблица 2.1. Номера известных портов
Протоколы FTP Telnet SMTP HTTP HTTPS POP3
Порты 20, 21 23 25 80 443 110

В приложении протокола передачи файлов FTP используются два известных (стандартных) номера порта – 20 и 21. Порт 20 задействуется для передачи данных, а порт 21 – для управления соединением.

Среди номеров известных портов протокола UDP наиболее распространенными являются: протокол TFTP – 69, RIP – 520.

Служба DNS с номером порта 53 и простой протокол управления сетью SNMP – 161 применяются как протоколом TCP, так и UDP.

Зарегистрированные порты назначаются как пользователям, так и приложениям. Когда зарегистрированные порты не используются для ресурсов сервера, они могут быть использованы динамически клиентом как номер порта источника. Из зарегистрированных портов можно отметить альтернативные порты протокола HTTP – 8008 и 8080.

Заголовок TCP-сегмента ( рис. 2.4) содержит последовательный номер (Sequence Number), используемый, чтобы гарантировать объединение частей (сегментов) сообщения в том порядке, в котором они были переданы. Протокол UDP не имеет такого механизма, поэтому возможны ошибки при объединении сегментов данных при передаче по сложной сети. Однако скорость передачи данных с применением протокола UDP выше, чем TCP.

Если необходимо узнать, какие TCP-соединения активны на сетевом конечном узле, то можно использовать команду netstat в режиме командной строки. В распечатке команды ( рис. 2.6) указаны: протокол (TCP), локальный адрес узла с динамически назначенным номером порта, внешний адрес (или имя) узла назначения с номером порта, а также состояние связи.

Результат выполнения команды netstat

Рис. 2.6. Результат выполнения команды netstat

В данном примере номер порта локального адреса является динамически назначаемым зарегистрированным портом источника с номером больше 1023. Для адреса http://www.cisco.com внешний порт задан символически: http. Состояние связи может быть с установленным соединением (ESTABLISHED) или с ожиданием окончания соединения (TIME_WAIT), когда был послан запрос окончания соединения (FIN).

Установление соединения

Поскольку TCP является протоколом, ориентированным на предварительное соединение (connection-oriented), сначала необходимо установить сессию между приложениями конечных устройств. Узел-отправитель инициализирует соединение, которое должно быть подтверждено узлом-получателем. Программное обеспечение протокола TCP обменивается сообщениями через сеть, чтобы проверить, что передача разрешена и что обе стороны готовы к ней.

Соединение между двумя устройствами производится в три этапа ( рис. 2.7).

Во-первых, узел-отправитель инициализирует установление связи, посылая узлу-получателю запроса синхронизации SYN (1).

Установление соединения

Рис. 2.7. Установление соединения

Во-вторых, узел-получатель подтверждает запрос синхронизации и задает свои параметры синхронизации ACK (2).

В-третьих, узлу-получателю посылается подтверждение, что обе стороны готовы к тому, чтобы соединение было установлено (3).

Такой механизм получил название трехэтапного установления связи (Three-way handshake). Оба узла должны согласовать начальные номера последовательности передаваемых частей информации, что происходит через обмен сегментами синхронизации (SYN) и подтверждения (ACK).

Синхронизация требует, чтобы каждая сторона послала собственный начальный номер последовательности и получила подтверждение от другой стороны. Каждая сторона, получив начальный номер последовательности от другой стороны, отвечает подтверждением ACK. Например, последовательность, соответствующая рис. 2.7, будет следующей.

  1. Узел-отправитель (A) инициализирует соединение, посылая сегмент SYN узлу-получателю (B), в котором указывает номер своей последовательности Sequence Number, например SECА = 101.
  2. Получив сегмент инициализации соединения, узел B делает запись принятого номера последовательности 101 и формирует ответ в виде ACKВ = 101 + 1 = 102. Ответ ACKВ = 102 означает, что хост B получил сегмент данных, включая байт с номером 101, и ожидает следующий байт с номером 102. Одновременно хост B формирует начальный номер своей последовательности данных, например SECВ = 51.
  3. Узел A, получив сегмент от B со значениями ACKВ = 102, SECВ = 51, формирует ответ ACKА = 52, SECА = 102, который завершает процесс соединения.

Передача данных

Сегменты данных нужно представить пользователю-получателю в том же порядке, в котором они были переданы. Сбой происходит, если какие-то сегменты данных потеряны, повреждены или получены в неверном порядке. Поэтому получатель должен подтвердить получение каждого сегмента. Однако если бы отправитель ждал ответ ACK после посылки каждого сегмента, то производительность сети была бы низкой. Поэтому надежный, ориентированный на предварительное соединение протокол, например TCP, позволяет послать несколько сегментов прежде, чем отправитель получит подтверждение ACK.

Размер скользящего окна (Window) заголовка сегмента TCP ( рис. 2.4) определяет, сколько байт данных передается в одной порции неподтвержденных данных. Последовательность сегментов передаваемых данных представляет собой последовательность байт. Поэтому и размер окна в заголовке сегмента задается в количестве передаваемых байт. Узелполучатель передает отправителю подтверждение ACK, когда примет указанное в окне количество байт данных.

На рис. 2.8 приведен пример, когда размер окна составляет 3000 байт, а каждый передаваемый сегмент содержит 1500 байт, что соответствует максимальному размеру кадра Ethernet Уровня 2.

Процесс передачи байт данных

Рис. 2.8. Процесс передачи байт данных

Поэтому узел-отправитель передает два сегмента подряд, на которые узел-получатель посылает подтверждение ACK с номером следующего ожидаемого байта, т. е. ACK = 3001. После получения узлом-отправителем подтверждения процесс передачи данных повторяется.

Если какой-то сегмент в процессе передачи был потерян, например, из-за перегрузки сети, то узел-получатель в ответе укажет начальный номер потерянного сегмента ( рис. 2.9), чтобы этот сегмент был передан повторно. При этом размер окна может быть уменьшен до 1500 байт, т. е. до размера одного передаваемого сегмента.

Перегрузка буферов данных может произойти по следующим причинам:

  1. Высокоскоростной узел-отправитель генерирует трафик быстрее, чем сеть может передать его, а узел-получатель – принять.
  2. Несколько узлов одновременно посылают сообщения одному узлу-получателю.

Когда данные прибывают на узел-получатель слишком быстро, буферные устройства адресата могут оказаться перегруженными и приходящие пакеты будут отбрасываться. Чтобы не потерять данные, процесс TCP на узле-получателе может послать отправителю индикатор "не готов", и отправитель приостановит передачу данных.

Перегрузка в процессе передачи байт данных

Рис. 2.9. Перегрузка в процессе передачи байт данных

Когда получатель вновь сможет обрабатывать дополнительные данные, он посылает индикатор "готов". Если этот индикатор получен, отправитель может продолжить передачу.

При передаче срочных сообщений используется бит URG в поле кода передаваемых сегментов. Такие сегменты передаются в первую очередь, даже за счет впереди стоящих в очереди сегментов.

Завершение соединения

Для завершения соединения в конце передачи данных узел- отправитель, инициализировавший обмен данными, посылает сегмент конца передачи FIN. В ответ на это узел-получатель подтверждает (ACK) конец передачи и также посылает сигнал конца передачи FIN. Узел- отправитель подтверждает получение информации (ACK), и на этом соединение заканчивается, т. е. завершение соединения происходит в четыре этапа.

Краткие итоги

  1. Прикладной уровень представляет собой комплекс программных средств, представленных в двух формах: приложений и служб сервиса.
  2. Сопряжение человека с сетью обеспечивают приложения.
  3. Программы служб сервиса готовят данные для передачи по сети, обеспечивая эффективное использование ресурсов сети.
  4. Наиболее распространенными протоколами и службами прикладного уровня являются: протоколы электронной почты SMTP, POP, IMAP; протокол передачи гипертекстовой информации HTTP; протокол передачи файлов FTP; простой протокол передачи файлов TFTP; система доменных имен DNS; протоколы удаленного доступа Telnet и SSH; протокол динамического назначения адресов узлов DHCP.
  5. В сети peer-to-peer связанные через сеть конечные узлы разделяют общие ресурсы (принтеры, файлы) без выделенного сервера.
  6. В сети модели "клиент-сервер" клиент запрашивает информацию, пересылая запрос выделенному серверу, который в ответ на запрос посылает файл, принимаемый клиентом.
  7. Протокол IP функционирует на сетевом Уровне 3 модели OSI и является протоколом дейтаграммного типа без предварительного соединения и без обеспечения надежной доставки.
  8. Высокую надежность обеспечивает протокол управления передачей TCP, для чего используется контроль потока, нумерация последовательности и подтверждение принятых данных.
  9. Протоколы транспортного уровня сегментируют данные, посланные приложениями верхнего уровня на передающей стороне, и повторно собирают его на приемной стороне.
  10. В протоколах TCP и UDP в качестве идентификатора приложения используется номер порта.
  11. Номера известных портов назначаются протоколам и службам сервиса прикладного уровня.
  12. Установление и завершение соединения производится по определенным правилам.

Вопросы

  1. Каковы две формы программных средств прикладного уровня?
  2. Где находятся основные ресурсы сети модели "клиент-сервер"?
  3. Где находятся основные ресурсы сети модели "peer-to-peer"?
  4. Назовите протоколы передачи электронной почты.
  5. Какие функции выполняет протокол HTTP?
  6. В чем различие между протоколами HTTP и HTTPS?
  7. В чем различие между протоколом FTP и HTTP?
  8. Для чего используется система доменных имен DNS?
  9. По какой команде можно получить адрес DNS-сервера?
  10. Какие протоколы обеспечивают виртуальное соединение пользователя с удаленными сетевыми устройствами?
  11. Какой протокол обеспечивает динамическое назначение адресов узлов?
  12. В чем различие между протоколами TCP и UDP?
  13. По какой команде можно узнать, какие TCP-соединения активны на сетевом конечном узле?
  14. Какую функцию в формате заголовка сегмента TCP выполняет номер последовательности?
  15. Какую функцию в формате заголовка сегмента TCP выполняет подтверждение?
  16. Какую функцию в формате заголовка сегмента TCP выполняет размер скользящего окна?
  17. Какую функцию в формате заголовка сегмента TCP выполняет номер порта?
  18. За сколько этапов выполняется предварительное установление соединения у протокола TCP?
  19. Чем определяется размер поля данных сегмента?

Упражнения

  1. Перечислите номера портов протоколов HTTP, HTTPS, FTP, DNS, Telnet, SMTP. Укажите, какие функции выполняют данные протоколы.
  2. Изобразите формат заголовка сегмента TCP. Объясните назначение полей заголовка.
  3. Изобразите процесс установления соединения протокола TCP.
  4. Изобразите процесс передачи данных при использовании протокола TCP.
  5. Объясните, за счет чего протокол TCP реализует надежность передачи данных.
< Лекция 1 || Лекция 2: 12 || Лекция 3 >
Александр Хованский
Александр Хованский
в курсе построение сетей на базе коммутаторов и маршрутизаторов некорректно задан вопрос. звучит так сколько портов сконфинурировать в VLAN0 для управления коммутатором. (поменяйте например на VLAN1 или VLAN управления ) 0-го VLAN не может быть