Лекции 4. Лекция 4 Функциональность протоколов tcp и udp
![]()
|
Использован источник C. Золотов "Протоколы Internet" 1998г. без изменений.1.1 Принципы построения и организационная структура Интернет. 1.1.1 Каким образом мы попадаем со своего компьютера на удаленный сервер? Маршрутизация в сети Internet - пакетная (бывает еще канальная, как в телефонии, АТС - маршрутизатор). Все наши компьютеры объединены в локальную сеть, и имеют локальную IP-адресацию. Пакеты с такой адресацией "путешествовать" в глобальной сети не смогут, т.к. маршрутизаторы их не пропустят. Поэтому существует шлюз, который преобразовывает пакеты с локальными IP-адресами, давая им свой внешний адрес. И дальше ваши пакеты путешествуют с адресом шлюза. ![]() Схема прохождения пакетов из локальной сети к серверу. Маршрутизаторы объединяют отдельные сети в общую составную сеть (см. рисунок ниже). К каждому маршрутизатору могут быть присоединены несколько сетей (по крайней мере две). Маршрут - это последовательность маршрутизаторов, которые должен пройти пакет от отправителя до пункта назначения. 1.1.2 Схема объединения отдельных сетей в общую составную сеть. ![]() Схема объединения отдельных сетей в общую составную сеть Локальных сетей слишком много, поэтому реально объединяют автономные системы. Автономная система (AS - autonomous system) - сеть находящаяся под одним административным контролем, это может быть несколько компьютеров или большая сеть (понятие достаточно условное) 1.1.3 Официальная документация по Internet RFC (Request for Comments) - официальная документация по Internet, можно найти по адресу http://www.rfc-editor.org/ или http://www.ietf.org/rfc.html . Все разработчики должны придерживаться этой документации, но на практике, не всегда так происходит. 1.2 Адресация в сети Internet. 1.2.1 Типы адресов. Типы адресов: Физический (MAC-адрес) Сетевой (IP-адрес) Символьный (DNS-имя) Компьютер в сети TCP/IP может имееть адреса трех уровней (но не менее двух): Локальный адрес компьютера. Для узлов, входящих в локальные сети - это МАС-адрес сетевого адаптера. Эти адреса назначаются производителями оборудования и являются уникальными адресами. IP-адрес, состоящий из 4 байт, например, 109.26.17.100. Этот адрес используется на сетевом уровне. Он назначается администратором во время конфигурирования компьютеров и маршрутизаторов. Символьный идентификатор-имя (DNS), например, www.kstu.ru. 1.2.2 IP-адреса IPv4 - адрес является уникальным 32-битным идентификатором IP-интерфейса в Интернет. IPv6 - адрес является уникальным 128-битным идентификатором IP-интерфейса в Интернет, иногда называют Internet-2, адресного пространства IPv4 уже стало не хватать, поэтому постепенно вводят новый стандарт. IP-адреса принято записывать разбивкой всего адреса по октетам (8), каждый октет записывается в виде десятичного числа, числа разделяются точками. Например, адрес 10100000010100010000010110000011 записывается как 10100000.01010001.00000101.10000011 = 160.81.5.131 ![]() Перевод адреса из двоичной системы в десятичную IP-адрес хоста состоит из номера IP-сети, который занимает старшую область адреса, и номера хоста в этой сети, который занимает младшую часть. 160.81.5.131 - IP-адрес 160.81.5. - номер сети 131 - номер хоста 1.3 Базовые протоколы (IP, TCP, UDP) 1.3.1 Стек протоколов TCP/IP TCP/IP - собирательное название для набора (стека) сетевых протоколов разных уровней, используемых в Интернет. Особенности TCP/IP: Открытые стандарты протоколов, разрабатываемые независимо от программного и аппаратного обеспечения; Независимость от физической среды передачи; Система уникальной адресации; Стандартизованные протоколы высокого уровня для распространенных пользовательских сервисов. ![]() Стек протоколов TCP/IP Стек протоколов TCP/IP делится на 4 уровня: Прикладной, Транспортный, Межсетевой, Физический и канальный. Позже была принята 7-ми уровневая модель ISO, но она не используется. Данные передаются в пакетах. Пакеты имеют заголовок и окончание, которые содержат служебную информацию. Данные, более верхних уровней вставляются, в пакеты нижних уровней. ![]() Пример инкапсуляции пакетов в стеке TCP/IP 1.3.2 Физический и канальный уровень. Стек TCP/IP не подразумевает использования каких-либо определенных протоколов уровня доступа к среде передачи и физических сред передачи данных. От уровня доступа к среде передачи требуется наличие интерфейса с модулем IP, обеспечивающего передачу IP-пакетов. Также требуется обеспечить преобразование IP-адреса узла сети, на который передается IP-пакет, в MAC-адрес. Часто в качестве уровня доступа к среде передачи могут выступать целые протокольные стеки, тогда говорят об IP поверх ATM, IP поверх IPX, IP поверх X.25 и т.п. 1.3.3 Межсетевой уровень и протокол IP. Основу этого уровня составляет IP-протокол. IP (Internet Protocol) – интернет протокол. Первый стандарт IPv4 определен в RFC-760 (DoD standard Internet Protocol J. Postel Jan-01-1980) Последняя версия IPv4 - RFC-791 (Internet Protocol J. Postel Sep-01-1981). Первый стандарт IPv6 определен в RFC-1883 (Internet Protocol, Version 6 (IPv6) Specification S. Deering, R. Hinden December 1995) Последняя версия IPv6 - RFC-2460 (Internet Protocol, Version 6 (IPv6) Specification S. Deering, R. Hinden December 1998). Основные задачи: Адресация Маршрутизация Фрагментация датаграмм Передача данных Протокол IP доставляет блоки данных от одного IP-адреса к другому. Программа, реализующая функции того или иного протокола, часто называется модулем, например, “IP-модуль”, “модуль TCP”. Когда модуль IP получает IP-пакет с нижнего уровня, он проверяет IP-адрес назначения. Если IP-пакет адресован данному компьютеру, то данные из него передаются на обработку модулю вышестоящего уровня (какому конкретно - указано в заголовке IP-пакета). Если же адрес назначения IP-пакета - чужой, то модуль IP может принять два решения: первое - уничтожить IP-пакет, второе - отправить его дальше к месту назначения, определив маршрут следования - так поступают маршрутизаторы. Также может потребоваться, на границе сетей с различными характеристиками, разбить IP-пакет на фрагменты (фрагментация), а потом собрать в единое целое на компьютере-получателе. Если модуль IP по какой-либо причине не может доставить IP-пакет, он уничтожается. При этом модуль IP может отправить компьютеру-источнику этого IP-пакета уведомление об ошибке; такие уведомления отправляются с помощью протокола ICMP, являющегося неотъемлемой частью модуля IP. Более никаких средств контроля корректности данных, подтверждения их доставки, обеспечения правильного порядка следования IP-пакетов, предварительного установления соединения между компьютерами протокол IP не имеет. Эта задача возложена на транспортный уровень. ![]() Структура дейтограммы IP. Слова по 32 бита. Версия - версия протокола IP (например, 4 или 6) Длина заг. - длина заголовка IP-пакета. Тип сервиса (TOS - type of service) - Тип сервиса (подробнее рассмотрен в лекции 8). TOS играет важную роль в маршрутизации пакетов. Интернет не гарантирует запрашиваемый TOS, но многие маршрутизаторы учитывают эти запросы при выборе маршрута (протоколы OSPF и IGRP). Идентификатор дейтаграммы, флаги (3 бита) и указатель фрагмента - используются для распознавания пакетов, образовавшихся путем фрагментации исходного пакета. Время жизни (TTL - time to live) - каждый маршрутизатор уменьшает его на 1, что бы пакеты не блуждали вечно. Протокол - Идентификатор протокола верхнего уровня указывает, какому протоколу верхнего уровня принадлежит пакет (например: TCP, UDP). Коды некоторые протоколов RFC-1700 (1994)
1.3.3.1 Маршрутизация. Протокол IP является маршрутизируемый, для его маршрутизации нужна маршрутная информация. Маршрутная информация, может быть: Статической (маршрутные таблицы прописываются вручную) Динамической (маршрутную информацию распространяют специальные протоколы) Протоколы динамической маршрутизации: RIP (Routing Information Protocol) - протокол передачи маршрутной информации, маршрутизаторы динамически создают маршрутные таблицы. OSPF (Open Shortest Path First) - протокол "Открой кротчайший путь первым", является внутренним протоколом маршрутизации. IGP (Interior Gateway Protocols) - внутренние протоколы маршрутизации, распространяет маршрутную информацию внутри одной автономной системе. EGP (Exterior Gateway Protocols) - внешние протоколы маршрутизации, распространяет маршрутную информацию между автономными системами. BGP (Border Gateway Protocol) - протокол граничных маршрутизаторов. 1.3.3.2 Протокол ICMP ICMP (Internet Control Message Protocol) - расширение протокола IP, позволяет передавать сообщения об ошибке или проверочные сообщения. 1.3.3.3 Другие служебные IP-протоколы IGMP (Internet Group Management Protocol) - позволяет организовать многоадресную рассылку средствами IP. RSVP (Resource Reservation Protocol) - протокол резервирования ресурсов. ARP (Address Resolution Protocol) - протокол преобразования IP-адреса и адреса канального уровня. 1.3.4 Транспортный уровень Протоколы транспортного уровня обеспечивают прозрачную доставку данных между двумя прикладными процессами. Процесс, получающий или отправляющий данные с помощью транспортного уровня, идентифицируется на этом уровне номером, который называется номером порта. Таким образом, роль адреса отправителя и получателя на транспортном уровне выполняет номер порта (или проще - порт). Анализируя заголовок своего пакета, полученного от межсетевого уровня, транспортный модуль определяет по номеру порта получателя, какому из прикладных процессов направлены данные, и передает эти данные соответствующему прикладному процессу. Номера портов получателя и отправителя записываются в заголовок транспортным модулем, отправляющим данные; заголовок транспортного уровня содержит также и другую служебную информацию; формат заголовка зависит от используемого транспортного протокола. На транспортном уровне работают два основных протокола: UDP и TCP. 1.3.4.1 Протокол надежной доставки сообщений TCP TCP (Transfer Control Protocol) – протокол контроля передачи, протокол TCP применяется в тех случаях, когда требуется гарантированная доставка сообщений. Первая и последняя версия TCP - RFC-793 (Transmission Control Protocol J. Postel Sep-01-1981). Основные особенности: Устанавливается соединение. Данные передаются сегментами. Модуль TCP нарезает большие сообщения (файлы) на пакеты, каждый из которых передается отдельно, на приемнике наоборот файлы собираются. Для этого нужен порядковый номер (Sequence Number - SN) пакета. Посылает запрос на следующий пакет, указывая его номер в поле "Номер подтверждения" (AS). Тем самым, подтверждая получение предыдущего пакета. Делает проверку целостности данных, если пакет битый посылает повторный запрос. ![]() Структура дейтограммы TCP. Слова по 32 бита. Длина заголовка - задается словами по 32бита. Размер окна - количество байт, которые готов принять получатель без подтверждения. Контрольная сумма - включает псевдо заголовок, заголовок и данные. Указатель срочности - указывает последний байт срочных данных, на которые надо немедленно реагировать. URG - флаг срочности, включает поле "Указатель срочности", если =0 то поле игнорируется. ACK - флаг подтверждение, включает поле "Номер подтверждения, если =0 то поле игнорируется. PSH - флаг требует выполнения операции push, модуль TCP должен срочно передать пакет программе. RST - флаг прерывания соединения, используется для отказа в соединении SYN - флаг синхронизация порядковых номеров, используется при установлении соединения. FIN - флаг окончание передачи со стороны отправителя 1.3.4.2 Протокол UDP UDP (Universal Datagram Protocol) - универсальный протокол передачи данных, более облегченный транспортный протокол, чем TCP. Первая и последняя версия UDP - RFC-768 (User Datagram Protocol J. Postel Aug-28-1980). Основные отличия от TCP: Отсутствует соединение между модулями UDP. Не разбивает сообщение для передачи При потере пакета запрос для повторной передачи не посылается UDP используется если не требуется гарантированная доставка пакетов , например, для потокового видео и аудио, DNS (т.к. данные небольших размеров). Если проверка контрольной суммы выявила ошибку или если процесса, подключенного к требуемому порту, не существует, пакет игнорируется (уничтожается). Если пакеты поступают быстрее, чем модуль UDP успевает их обрабатывать, то поступающие пакеты также игнорируются. ![]() Структура дейтограммы UDP. Слова по 32 бита. Не все поля UDP-пакета обязательно должны быть заполнены. Если посылаемая дейтаграмма не предполагает ответа, то на месте адреса отправителя могут помещаться нули. 1.3.4.2 Протокол реального времени RTP |