ВОПРОСЫ НА ЭКЗАМЕН 1. ВВЕДЕНИЕ. СХЕМА ВЗАИМОДЕЙСТВИЯ ПРОГРАММ В СЕТИ. СПОСОБЫ ОБЪЕДИНЕНИЯ УЗЛОВ В СЕТЬ Цель сетевого взаимодействия – передача цифрового кода из одной программы в другую. Прикладное сообщение – часть кода, которым обмениваются программы Передача этих кодов (единиц информации) происходит последовательно во времени, однако их обработка происходит с использованием параллельного представление, т.е. машинных слов Представление кода осуществляется по байтам (слева старший разряд, справа - младший), однако сам код может иметь разную последовательность из байт. Существует два представления (используются при обработке) сетевое и хостовое Стек TCP/IP реализован в виде модулей ядра ОС. Стек – набор взаимосвязанных протоколов (последовательностей действий) СПОСОБЫ ОБЪЕДИНЕНИЯ: 1) Общая шина: (Коаксиальный кабель) 2) Топология «Звезда» С помощью частей кабеля можно объединить компьютеры в сеть. Хаб не используется так как все что передано в сеть отправляется всем подключенным устройствам => все обязаны обрабатывать все, что было последовательно доставлено в сеть 3) Коммутатор: В заголовке кадра есть три поля: 1) Физический адрес получателя 2) Физический адрес отправителя 3) Тип кадра Первый кадр поступает на один из портов коммутатор анализирует заголовок и извлекает адрес отправителя сопоставляет этот адрес с номером порта и так происходит для каждого порта. (Так получается таблица из двух столбцов и N строк, где N – число портов.) В таблице соответствие между номером порта и физ. адресом отправителя. При дальнейшем поступлении кадров, коммутатор находит соответствующий физ. адресу получателя порт и отправляет сведения. Если физ. адрес получателя соответствует коду – всем, то кадр доставляется во все оставшиеся порты. (Такой кадр – широковещательный) 2. СТЕК ПРОТОКОЛА TCP/IP Стек – набор взаимосвязанных протоколов. Протокол – последовательность действий. Комплект протоколов TCP/IP – это сетевое программное обеспечение низкого уровня, в состав которого входит несколько компонентов: 1. IP – межсетевой протокол, обеспечивающий транспортировку пакетов без дополнительной обработки данных из одной программы в другую. Задачи: 1) 2) доставка пакетов из сети Фрагментация и дефрагментация получателя в сеть отправителя; 2. ICMP – межсетевой протокол управляющих сообщений, отвечающий за различные виды низкоуровневой поддержки протокола IP, включая сообщения об ошибках, содействие в маршрутизации, подтверждение получения сообщения. 3. ARP – протокол преобразования адресов, выполняющий трансляцию логических адресов в физические. RARP – обратная функция, преобразует в логические адреса по физическому. Логические адреса назначаются не компьютеру, а сетевому интерфейсу (администратором). Физические – назначаются интерфейсу (производителем). 4. UDP – протокол пользовательских дейтаграмм, позволяющий идентифицировать программы на передающей и принимающей сторонах. Обеспечивает транспортировку отдельных сообщений без проверки. 5. TCP – протокол управления передачей, обеспечивающий пересылку данных из одной программы в другую с помощью протокола IP. Он более надёжен и предполагает проверку установления соединения. TCP/IP предоставляет пользователям однородный интерфейс, обеспечивающий взаимодействие с сетевыми аппаратными средствами различных типов. Он гарантирует возможность обмена данными между системами, несмотря на различия между ними. TCP/IP позволяет соединять на программном уровне отдельные физические сети в более крупную и более гибкую логическую сеть. Стек протоколов TCP/IP базируется на простой четырёхуровневой схеме (OSI). Прикладной уровень – прикладные программы конечных пользователей. Транспортный – связь между программами сети (UDP, TCP). Сетевой – базовые коммуникации, адресация и маршрутизация (IP, ICMP). Канальный – сетевые аппаратные средства и драйверы устройств. Протоколы каждого уровня на основе тех, которые соответствуют более низкому уровню. Данные проходят вниз по стеку протоколов на машине-отправителе, затем движутся по физической сети и поднимаются вверх по стеку протоколов на машине-адресате. Каждое соединение машины с сетью называется сетевым интерфейсом. Машина, имеющая более одного интерфейса, может принимать данные по одному интерфейсу и передавать их по-другому, осуществляя пересылку данных между сетями – это функция маршрутизации, а машина, выполняющая её – маршрутизатор (или шлюз). 3. СТРУКТУРА СЕТЕВОГО ПРОГРАММНОГО ВЗАИМОДЕЙСТВИЯ В IP СЕТЯХ - Модуль * - IP – адрес. - трансивер @ - Физический адрес ТЕРМИНЫ: Драйвер – Программа, непосредственно взаимодействующая с сетевым адаптером Модуль – Программа, взаимодействующая с драйвером, сетевыми прикладными программами и другими модулями Название блока данных (БД), передаваемого по сети зависит от того, на каком уровне он находится: БД, с которым имеет дело сетевой интерфейс – кадр Если БД между сетевым интерфейсом и модулем IP – IP-пакет Если между модулем IP и модулем UDP – UDP-Дейтаграмма Если между модулем IP и модулем TCP – TCP-Сегмент (транспортное сообщение) Если на уровне сетевых прикладных процессов – прикладное сообщение Модули TCP, UDP, и драйвер Ethernet – мультиплексоры (переключают несколько входов на один выход), а также – демультиплексоры (переключают один вход на один из многих выходов в соответствии с полем типа в заголовке) 4. ТИПИЧНЫЙ СЕТЕВОЙ КАДР Данные передаются по сети в форме пакетов, каждый из которых состоит из заголовка и полезной нагрузки. Полезная нагрузка – это данные, подлежащие перeссылке. Когда пакет путешествует вниз по стеку протоколов, готовясь к отправке, каждый протокол вводит в него свою собственную информацию заголовка. Законченный пакет одного протокола становится полезной нагрузкой пакета, генерируемого следующим протоколом (инкапсуляция или оформление). На принимающей машине инкапсулированные кадры разворачиваются в обратном порядке. В стеке протоколов TCP/IP за разбивку пакетов в соответствии с MTU конкретной сети отвечает уровень IP. Если пакет направляется через несколько сетей, то у одной из промежуточных сетей MTU может оказаться меньшим, чем у сети-отправителя. В этом случае шлюз, ведущий к сети с меньшим MTU, выполнит дальнейшее деление пакета. Функцию сегментации могут выполнять протоколы и других уровней. 5. ПЕРЕДАЧА КАДРОВ В СЕТЬ !!Передача в сеть проще чем прием, так как путь при передаче один. Прикладной программист при передаче порции кода в стек TCP/IP должен указать параметры настройки сокета: Размер порций кода Порт программы отправителя и порт программы получателя Порт – Шестнадцатеричный код, который определяет саму программу. Как правило можно задать любой незарезервированный код. (Порт программы назначения – зарезервированный порт) IP адрес отправляющей программы и IP адрес принимающей программы. Это можно сделать, назначив доменные имена Прикладной код (порция данных) поступает на транспортный уровень (транспортный протокол должен быть явно указан в прикл. программе) (Допустим UDP) Порция данных(ПД) поступает на UDP, который приписывает ПД свой заголовок, который среди прочих полей содержит порт отправителя и порт получателя Дейтаграмма поступает в модуль IP, где также приписывается заголовок в котором среди прочих полей есть поле IP-адрес отправителя и IP-адрес получателя После того, как пакет поступает в сетевой интерфейс, драйверы приписывают ему заголовок кадра: Физический адрес получателя (с помощью ARP) Физический адрес отправителя (с помощью ПЗУ адаптера) Тип протокола (указывает на то, что в кадре содержится: может быть записан код, указывающий на протоколы IP, ARP, ICMP Полученный кадр сеть Кадр не может попасть в другую сеть, т.к. при ретрансляции пакета маршрутизатор должен приписать пакету другой заголовок Когда сетевой кадр поступает на интерфейс (???) сетевого адаптера драйверы должны: Если физ.адрес получателя совпадает с физ.адресом интерфейса или это широковещательный запрос, то o Драйвер анализирует поле тип и если указан код, указывающий на IP, содержимое кадра (IP-пакет) передается в модуль IP, если указан код протокола ARP, то ARP-пакет передается в модуль ARP Предположим, что модуль IP o Анализирует поле заголовка, и если лог.адрес получателя равен лог.адресу интерфейса, то анализируется поле протокол (UDP или TCP) o Содержимое пакета передается модулем IP в модуль UDP (н-р) o UDP анализирует поле порт получателя и передает прикладной код в нужную программу 6. СЛУЧАЙ ДВУХ ИНТЕРФЕЙСОВ. МАРШРУТИЗАТОР На рисунке показан узел с двумя сетевыми интерфейсами Ethernet. Он имеет 2 Ethernetадреса 2 IP-адреса. IP маршрутизирующий протокол, который доставляет свои пакеты из сети отправителя в сеть получателя. На шлюз Ethernet 1 могут поступать кадры не только от узлов, но и от других шлюзов. Шлюзы могут приходить от других шлюзов и их шлюз должен использоваться для организации маршрутизации (введение своих таблиц маршрутизации) => на интерфейс Ethernet1 могут приходить кадры от разных протоколов и разных отправителей ARP, IP, DNS. Все они (но не ARP) проходят через модуль IP. Путь на интерфейс Ethernet1 поступил кадр с его физическим адресом (не широковещательным). Он должен быть обработан и поэтому передаётся либо в модуль ARP, либо в IP. 1 случай: IP модуль анализирует IP-адрес получателя и если он совпадает с собственным IP-адресом, то передает его наверх (транспортный уровень) тот из модулей, на который указывает код поля протокола заголовка. Этот пакет используется протоколом маршрутизации для заполнения таблицы маршрутов. 2 случай: если IP-адрес места назначения не совпадает с собственным IP-адресом шлюза, то он пытается его перетранслировать, т.е. передать ENET2 в другой интерфейс Ethernet. Для этого он обращается к своей таблице маршрутов. Если маршрут найден в таблице, то в дальнейшем с использованием этих таблиц для передачи в сеть Ethernet2. 7. ПРОТОКОЛ IP Протокол сетевого уровня. Заголовок содержит информацию об адресации и управляющую информацию для обработки и маршрутизации пакетов. ФУНКЦИИ: Доставка пакетов из сети отправителя в сеть получателя методом негарантированной доставки без подтверждения соединения Обеспечение фрагментации и обратной сборки дейтаграмм для поддержки каналов передачи данных с различными размерами максимального передаваемого модуля данных (MTU) ФОРМАТ ЗАГОЛОВКА ПРОТОКОЛА IP 0 16 31 Версия Длина заголовка Тип службы Общая длина Идентификатор Флаги Смещение фрагмента 20 байт Время жизни Протокол Контрольная сумма IP-адрес получателя IP-адрес отправителя Опции + заполнение 40 байт 1) Версия – код протокола 4 версии 2) Длина заголовка и общая длина (16 бит) дает возможность определить байт, с которого начинаются данные 3) Тип службы (8 бит) – содержит код, указывающий на приоритет для обработки данного пакета 4) Идентификатор – содержит порядковый номер фрагмента, если он был разбит на части. Служит для того, чтобы при сборке определить порядок 5) Флаг (3 бита) – 1-поднят, 0-опущен. Старший не используется, младший – можно фрагментировать или нет, средний – последний ли пакет из фрагментированных 6) Контрольная сумма – Подтверждает целостность заголовка при получении. 7) Смещение фрагмента – Позволяет собрать пакет в нужном порядке. Показывает смещение относительно начала данных 8) Время жизни – Счетчик, который при ретрансляции уменьшается на 1 и когда равен нулю пакет больше не обрабатывается 9) Протокол – Код, указывающий на протокол транспортного уровня, использующего содержимое пакета 10) Опции используются при настройке и тестировании сети. 11) Данные – информация верхнего уровня ФРАГМЕНТАЦИЯ: Осуществляется шлюзом, если длина пакета> MTU. Общая длина делиться на MTU и +1 т.к. всегда бывает остаток. – количество фрагментов Каждому фрагменту приписывается новый заголовок, в котором изменены поля: 1) Общая длина 2) Идентификатор 3) Смещение фрагмента 4) Время жизни 5) Контр.сумма У последнего фрагмента поднимается флаг – последний фрагмент пакеты в сеть ДЕФРАГМЕНТАЦИЯ: Осуществляется получателем: Определяет пул фрагментов, соединяет части в соответствии со смещением. Конец когда флаг указывает, что это последний фрагмент 8. ПРОТОКОЛ УПРАВЛЯЮЩИХ СООБЩЕНИЙ ICMP ICMP предназначен для уведомления об ошибках при маршрутизации пакета и для выявления проблем в сети. Сообщения ICMP переносятся в IP-пакетах, и поэтому протокол ICMP в стеке протоколов должен быть на ступеньку выше IP. Поскольку сервис, предоставляемый этим протоколом, имеет смысл только в контексте IP-протокола в большинстве операционных систем ICMP входит в состав IP-модуля. ICMP-сообщения передаются в IP-пакетах с протоколом, равным 1. ICMP не нуждается в гарантированной доставке, его сообщения защищены контрольной суммой. Каждое сообщение содержит тип, дополнительный код, уточняющий этот тип и дополнительную информацию, позволяющую получателю надёжно обработать полученное сообщение. ICMP версии 4 поддерживает следующие типы сообщений: 1) Destination Unreachable (получатель недоступен) – посылается получателем или шлюзом, когда IP-пакет невозможно добавить по назначению, при этом используются доп.коды: net unreachable – недоступна вся подсеть получателя; host unreachable – недоступен узел получателя; protocol unreachable – протокол недоступен, узел-получатель не поддерживает указанный в заголовке пакета протокол 4-го уровня; port unreachable – протокол поддерживается, но в данный момент не существует приложения, получающего пакеты по указанному адресу (этот адрес называют портом и он содержится не в заголовке IP-пакета, а в заголовке дейтаграммы или прикладного сообщения, который содержится в этом IP-пакете); fragmentation needed and DF set – необходима фрагментация для доставки пакета получателю, но в заголовке пакета поднят флаг «не фрагментировать». Source route failed – маршрут, предписанный отправителем в опции IP-пакета, не годится для доставки пакета получателю. В качестве доп. информации ICMP-пакет содержит заголовок и первые 64 бита исходного IP-пакета. Также большинство шлюзов возвращают также в сообщение с кодом fragmentation needed and DF set, MTU, поддерживаемое на интерфейсе, через который пакет должен быть послан. На этом механизме основан алгоритм определения MTU для маршрута, который узел может использовать, если по какой-то причине не хочет допускать фрагментации своих пакетов. 2) Time Exceeded (время истекло). Посылается в 2х случаях: С кодом 0, если TTL поле в заголовке IP-пакета стало равным 0 С кодом 1, если получатель не может собрать дейтаграмму из-за слишком долгого отсутствия одного IP-пакета. Доп. Информация - номер байта, с которого начинается параметр, содержащий ошибку, заголовок и первые 64 бита исходного IP-пакета. 3) Parameter Problem (неправильный параметр) – посылается, когда параметр в заголовке IPпакета содержит ошибку. Доп. Информация - номер байта, с которого начинается параметр, содержащий ошибку, заголовок и первые 64 бита исходного IP-пакета. 4) Source Quench– посылается, когда отправитель быстро посылает пакеты и шлюз не успевает обрабатывать. Доп. Информация – заголовок и первые 64 бита исходного IP-пакета. 5) Redirect (перепослать) – посылает, когда промежуточный шлюз посылает IP-пакет в тот же самый сетевой интерфейс, откуда его и принял (другому маршрутизатору). Сообщение – таблица маршрутов некорректна. Получив это сообщение, станция анализирует доп. информацию (заголовок и первые 64 бита исходного IP-пакета и адрес маршрутизатора) и обновляет таблицу маршрутизации. 6) Echo и Echo Reply – используется для определения присутствует ли станция в сети и какое качество связи между станциями. Сообщение содержит идентификатор, порядковый номер, иногда доп. данные. Станция, получив сообщение Echo, должна отправить полученный пакет назад, не изменяя его данных, а изменив только тип с Echo на Echo Reply и IP-заголовок. 7) Timestamp и Timestamp Reply – аналоги (6), но получатель Timestamp в возвращаемом пакете проставляет врем тех моментов, когда пакет был принят и когда он был отправлен назад. 9. ПРОТОКОЛ РАЗРЕШЕНИЯ АДРЕСОВ ARP Определение физического адреса по логическому в данной сети или подсети Пакеты протокола ARP бывают 1) запросные 2) ответные. Они никогда не выходят за пределы своей сети (подсети) ARP – универсальный протокол и может использоваться не только в стеке TCP/IP. Необходим так как IP-адрес и физ.адрес выбираются независимо и нет алгоритма для преобразования одного в другой. (IP – администратором сети, физ – производителем сетевого оборудования) Сопоставление адресов выполняется только для отправляемых IP-пакетов, т.к. только в момент отправки создаются заголовки IP и Ethernet. Преобразование выполняется путем поиска в таблице, которая содержит 2 столбца (IPадрес и MAC-адрес) Таблица хранится в памяти, если узел выключают, она исчезает и надо возобновлять. Таблица заполняется автоматически модулем ARP по мере необходимости. Когда не удается преобразовать, то: По сети передается широковещательный ARP-запрос Исходящий IP-пакет ставится в очередь. Каждый сетевой адаптер принимает широковещательные передачи, все драйвера Ethernet проверяют поле типа в принятом кадре и передают пакеты модулю ARP. Каждый модуль ARP проверяет поле искомого IP-адреса в полученном пакете и если адрес совпадает с его собственным IP-адресом, то посылает ответ по Ethernet-адресу отправителю запроса. Ответ получает машина, сделавшая запрос. Ее драйвер проверяет поле типа в Ethernetкадре и передает ARP пакет модулю ARP. Модуль ARP анализирует пакет и добавляет запись в таблицу. Получение ARP-ответа и занесение адреса в ARP-таблицу Преобразование пакета, поставленного в очередь Ethernet-кадр передается по сети Ethernet Если ответ не пришел, то пакеты, отправленные по этому адресу, будут уничтожаться. Некоторые реализации IP и ARP не ставят пакет в очередь. Он уничтожается. Его восстановление возлагается на модуль TCP или прикладной процесс, работающий через UDP, с помощью таймаутов и повторной передачи. 10. ТЕХНОЛОГИЯ ETHERNET Основана на методе множественного доступа к среде передачи данных с прослушиванием несущей и обнаружением коллизий CSMA/CD. Каждый сетевой адаптер реализуется для выполнения алгоритма CSMA/CD на аппаратном уровне. Адаптер имеет приёмопередатчик – трансивер. Сетевой адаптер, нуждающийся в передаче информации, прослушивает линию и дожидается «тишины» - отсутствия сигнала (несущей). Далее он формирует кадр, начинающийся с синхронизирующей преамбулы, за которой следует поток двоичных данных в самосинхронизирующемся коде. Все остальные узлы принимают этот сигнал, синхронизируют по преамбуле и декодируют его в последовательность бит. Окончание кадра определяется по пропаданию несущей, и по этому событию приёмники анализируют принятый кадр. Этот кадр контролируется на отсутствие ошибок, после чего в «хорошем» кадре проверяется адресная информация. Передающие узлы, обнаружив коллизию (столкновение 2х сигналов) прекращают передачу кадра, после чего сделают повторную попытку после освобождения среды. Сеть Ethernet относится к категории широковещательных, поэтому каждый узел должен проверять - ему ли предназначаются передаваемые кадры. Достоинства технологии: экономичность и лёгкость подключения новых узлов. 11. ПРОТОКОЛ ПОЛЬЗОВАТЕЛЬСКИХ ДЕЙТАГРАММ UDP Протокол транспортного уровня, не требующий подтверждения соединения. Простой протокол, заголовок содержит 8 байт. UDP – ненадежный протокол. Является интерфейсом между IP и протоколами верхнего уровня. Порты протокола UDP различают приложения, запущенные на одном устройстве. В отличии от TCP, UDP не добавляет IP надежности, управления потоком, или функций исправления ошибок. Формат пакета UDP: Порт источника Длина Порт получателя Контрольная сумма Порт отправителя, получатели и источника связывают программу с сетью С помощью длины можно найти начало данных Контрольная сумма для проверки целостности UDP-заголовка и данных. 12. ПРОТОКОЛ УПРАВЛЕНИЯ ПЕРЕДАЧЕЙ TCP Обеспечивает надёжную передачу данных в среде IP, относится к транспортному уровню. TCP использует метод PAR – подтверждение приёма и повторная передача. PAR обеспечивает надёжность и такую технологию управления потоком (последовательность байт, при которой узел посылает байт, запускает таймер и ждёт подтверждения приёма перед отправкой следующего пакета). Если подтверждение не получено, то узел передаёт пакет ещё раз. Присваивая каждому пакету порядковый номер, метод позволяет узлам отслеживать пакеты, повторения и дублирования вследствие сетевых задержек и преждевременной повторной передачи. Номера последовательности посылаются обратно как уведомление о подтверждении приёма. TCP предоставляет такие службы, как: 1) Потоковая передача данных – TCP передаёт неструктурированный поток байтов, идентифицированный по порядковым номерам. TCP группирует байты в сегменты и передаёт их на уровень протокола IP для пересылки. 2) Надёжность – обеспечивается сквозной, ориентированной на соединение передачей пакетов по объединённой сети. Она достигается упорядочением байтов при помощи номеров подтверждения передачи, по которым получатель определяет, какой байт должен поступить следующим. Байты, не получившие подтверждения в течение определенного времени, передаются заново. Надёжный механизм позволяет устройствам обрабатывать потерянные, задержанные, дублированные и неверно прочитанные пакеты. Механизм лимита времени позволяет устройствам распознавать потерянные пакеты и запрашивать их повторную передачу. 3) Эффективное управление потоком – При отправке подтверждений источнику данных принимающий TCP-процесс указывает наибольший порядковый номер, который он может принять без переполнения внутренних буферов. 4) Дуплексный режим – TCP-процесс может одновременно пересылать и принимать пакеты. 5) Мультиплексирование TCP – означает одновременную передачу по одному соединению нескольких диалогов верхнего уровня. 13. УСТАНОВИВШИЕСЯ СОЕДИНЕНИЕ. СКОЛЬЗЯЩЕЕ ОКНО TCP Для использования надежных транспортных служб TCP-узлы должны устанавливать друг с другом сеансы, ориентированные на соединение. Установка соединения выполняется по механизму – трёхэтапная синхронизация. Этот механизм синхронизирует обе стороны соединения, позволяя им согласовать начальные порядковые номера. Также обеспечивает готовность сторон к передаче данных и информированность каждой из сторон о готовности другой. (для избежание повторной передачи пакетов в процессе установки сеанса и после его разрыва) Каждый узел выбирает случайным образом порядковый номер, чтобы следить за приемом и передачей байтов потока. Алгоритм: SEG – Сегмент TCP SYN – Бит (флаг) синхронизации ACK – Бит подтверждения Клиент TCP отсылает серверу TCP специальный сегмент не содержащий данные 1) Флаг SYN в заголовке сегмента установлен в 1, поэтому этот сегмент – SYN-сегмент При этом клиентская сторона устанавливает начальный порядковый номер client_sin и помещает его в поле текстового номера в заголовке SYN-сегмента. Этот сегмент помещается в IP-пакет и отправляется серверу 2) Когда IP-пакет SYN-сегмента достигает узла сервера, сервер извлекает из пакета SYNсегмент, создает буфер и переменные для соединения, затем отправляют клиенту сегмент, уведомляющий о выделении TCP-соединения. Этот сегмент также не содержит прикладных данных 3) Получив ACK, клиент выделяет память для буфера и TCP соединения и отсылает серверу сегмент, подтверждающий получение ACK 4) Поскольку соединение установлено флаг SYN сбрасывается Скользящее окно: Позволяет эффективно использовать пропускную способность сети, т.к. можно отсылать несколько байтов (пакетов) не дожидаясь подтверждения. В TCP принимающий узел определяет размер окна каждого пакета (в байтах). Т.о. окно – то количество байтов, которое можно отправить, не дожидаясь подтверждения. Допустим, размер окна – 5, а надо отправить 10 байт. Отправитель помещает в окно перые 5 байт, отправляет их сразу и ждет подтверждения. Получатель отвечает ACK, равным 6, показывая, что получил байты 1-5 и ждет 6 байт. Отправитель сдвигает скользящее окно вправо и передает байты с 6 по 10. Получатель отвечает ACK = 11. Получатель может указать в этом пакете, что размер окна – 0, тогда отправитель больше не сможет посылать байты. 14. ФОРМАТ ЗАГОЛОВКА TCP 0 Порт отправителя 20 байт Размер заголовка Резерв Контрольная сумма 31 Порт получателя Порядковый номер Номер подтверждения Флаги Размер окна Указатель срочности Опции и заполнения Данные (байты) 40 байт Порт источника и порт получателя. Точки, в которых процессы верхнего уровня источника и получателя принимают услуги TCP. Порядковый номер – номер, присвоенный первому байту данных в текущем сообщении. При установке соединения может использоваться для обозначения исходного порядкового номера в предстоящей передаче. Номер подтверждения – порядковый номер следующего байта данных, который ожидает получить получатель. Сдвиг данных – число 32-разрядных слов в заголовке TCP. Резервные – область, зарезервированная для использования в будущем. Флаги – различная управляющая информация, в том числе биты SYN и ACK, используемые для установки соединения, и бит FIN для разрыва соединения. Размер окна – размер приёмного окна получателя (объём буфера для входящих данных). Контрольная сумма – показывает, не был ли заголовок повреждён при передаче. Указатель срочности – указывает на первый байт срочных данных в пакете. Параметры – различные доп. параметры TCP. Данные – информация верхнего уровня. 15. МАРШРУТИЗАЦИЯ В IP СЕТЯХ Протокол IP является маршрутизирующим протоколом, т.е. он выполняет саму маршрутизацию пакетов. Возможности протокола IP позволяют выполнить статическую маршрутизацию (таблица заполняется человеком), но из-за изменений использовать статическую маршрутизацию невозможно Случай, когда сеть организована только на основе протокола IP, относится к статической маршрутизации. 2 случая: 1) Имеется одна изолированная сеть без подсетей: доставка происходит без участия IP протокола по аппаратным адресам, которые разрешает ARP протокол относительно IP адресов. – вырожденный случай, относится к прямой статической маршрутизации, которая не может быть использована для объединения. 2) Косвенная статическая маршрутизация, где можно организовать объединенную сеть только на основе протокола IP: Для отправленных пакетов модуль IP должен определить способ доставка: прямой или косвенный. (прямой – в свою сеть, косвенный – в другую сеть). Этот выбор делается на основе поиска в таблице маршрутов. Для принимаемых IP-пакетов модуль IP должен решить нужно ли их ретранслировать в другую сеть или передать на верхний уровень: Если необходимо ретранслировать, то обработка происходит также, как и с отправляемыми IP пакетами Особенности: Входящий IP-пакет никогда не ретранслируется через тот же сетевой интерфейс, через который он был принят. Решение о маршрутизации принимается до того, как IP-пакет передается сетевому драйверу, и до того, как происходит обращение к ARPтаблице. Модуль IP осуществляет поиск в таблице маршрутов. Ключом поиска служит номер IPсети, выделенный из IP-адреса места назначения IP-пакета. Простейшая таблица содержит по одной строке для каждого маршрута. Столбцы: Номер сети получателя Флаг прямой или косвенной маршрутизации IP-адрес шлюза Номер сетевого интерфейса 16. ПРИМЕР КОСВЕННОЙ СТАТИЧЕСКОЙ МАРШРУТИЗАЦИИ Таблица маршрутов содержит по 1-ой строке для каждого маршрута. В столбце адрес шлюза таблицы маршрутов узла альфа указывается IP-адрес точки соединения узла дельта с сетью 223.1.2.0. Пусть узел альфа посылает IP-пакет узлу эпсилон. Этот пакет находится в модуле IP узла альфа, и IP-адрес места назначения равен IP-адресу узла эпсилон (223.1.3.2). Модуль IP выделяет сетевой номер из IP-адреса (223.1.3.0) и ищет соответствующую ему строку в таблице маршрутов. Соответствие находится во второй строке. Запись в этой строке указывает на то, что машины требуемой сети доступны через шлюз 223.1.2.1. Модуль IP в узле альфа осуществляет поиск по ARP-таблице, с помощью которого определяет Ethernet-адрес, соответствующий IP-адресу шлюза. Затем IP-пакет, содержащий IP-адрес места назначения эпсилон, посылает через интерфейс Eth0 шлюзу 223.1.2.1 IP-пакет принимается сетевым интерфейсом шлюза дельта и передается по модулю IP. Проверяется IP-адрес места назначения, и т.к. он не соответствует ни одному из собственных IP-адресов дельта, шлюз решает ретранслировать IP-пакет. Модуль IP в узле дельта выделяет сетевой номер из IP-адреса места назначения IP-пакета (223.1.3.0) и ищет соответствующую запись в таблице маршрутов. Соответствие – в 3-й строке. Теперь модуль IP шлюза напрямую посылает IP-пакет узлу эпсилон через интерфейс eth2. Пакет содержит IP и Ethernet-адрес места назначения, равные эпсилон. Узел эпсилон принимает IP-пакет, и его модуль IP проверяет IP адрес места назначения. Он соответствует IP-адресу эпсилон, поэтому содержащееся в IP-пакете сообщение передаётся протокольному модулю верхнего уровня. 17. ОСНОВЫ МАРШРУТИЗАЦИИ В IP СЕТЯХ Отправители и промежуточные маршрутизаторы при выборе следующей промежуточной станции (next hop) руководствуются таблицей маршрутизации. Таблица маршрутизации шлюза содержит информацию о каждом маршруте: 1) Номер сети получателя 2) Маска маршрута 3) Адрес следующего перехода 4) Номер сетевого интерфейса 5) Длина маршрута (прыжка) 6) Способ получения маршрута 7) доп.флаги Алгоритм, которому следует шлюз при осуществлении маршрутизации: 1) Для всех маршрутов из таблицы выбирается актуальный (пригодный к использованию и не устаревший) маршрут. Если ни один не удовлетворяет, то пакет не обрабатывается В таблице хранится длина каждого маршрута – число шагов до сети получателя. Если сеть с очень низкой производительностью, то пересылке сопоставляется ни один шаг, а несколько. 2) Из маршрутов в 1) выбираются все с наименьшей длиной. В таблицу маршрутизации маршруты могут быть добавлены 2мя способами: 1) статически т.е. человеком и 2) динамически т.е. с помощью протоколов маршрутизации. Каждому маршруту приписывается приоритет в зависимости от способа и протокола добавления. 3) Выбираются маршруты с наивысшим приоритетом 4) Если после 3) осталось больше 1 маршрута, то он выбирается либо случайным образом, либо циклически (лучше) 5) Для использования выбранного маршрута необходимо: Проанализировать флаги, выходной интерфейс и возможно, адрес следующего перехода Маршруты могут иметь много флагов, но необходимый: direct/indirect. Показывает является ли маршрут прямым (конечный получатель находится в подсети, к которой у маршрутизатора есть интерфейс) или нужно проходить еще 1 или N маршрутизаторов. В 1м случае адрес следующего прыжка не анализируется, в выходной интерфейс передается адрес получателя из заголовка. Во 2м случае в выходной интерфейс – адрес следующего прыжка. Выходной интерфейс разрешает переданный адрес в адрес канального уровня и посылает в сеть Только 1) и 5) – общепринятые. Способы выбора маршрута зависят от сетевого ПО станции и политики маршрутизации в сети. Если хост находится в локальной сети, где только 1 шлюз, нет смысла держать таблицу на узлах редко используются протоколы маршрутизации, а в таблице – 2 маршрута: прямой (в свою подсеть) и маршрут по умолчанию. Если нет маршрута по умолчанию, часть пакетов будут теряться. 18. ПРОТОКОЛЫ МАРШРУТИЗАЦИИ Эти протоколы определяют топологию сети и сохраняют информацию о ней в таблицах. Функции: С их помощью определяется наилучший путь для передачи пакета по сети. Обычно выбирается путь, обеспечивающий минимальное количество ретрансляций при максимальной надёжности. Это путь с минимальным числом транзитных узлов (исключение: передача данных в обход загруженных участков для избегания заторов). Протокол маршрутизации предполагает постоянный сбор информации о состоянии маршрутов и обновление таблиц маршрутизации при изменении топологии сети вследствие отказов или перегрузок. Передача пакетов по сети. Получая очередной пакет, маршрутизатор считывает адрес назначения из заголовка пакета и определяет, в каком направлении осуществить дальнейшую передачу пакета (информация берется из табл. маршрутизации). Протоколы, используемые при создании таблицы можно разделить на 3 категории: 1) Протоколы длины вектора – простейший и распространённый. Название получил от способа обмена данными. Периодически каждый маршрутизатор копирует адреса получателей и метрику из своей таблицы маршрутизации и помещает эту информацию в рассылаемые соседям сообщения об обновлении. Соседние маршрутизаторы сверяют полученные данные со своими собственными табл. маршрутиз и вносят необходимые изменения. Этот алгоритм прост и надёжен, но применяется в небольших сетях. 2) Протоколы состояния канала – вместо рассылки соседям содержимого своих таблиц каждый маршрутизатор осуществляет широковещательную рассылку списка маршрутизаторов, с которыми он имеет связь, и напрямую подключенных к нему локальных сетей. За исключением широковещательных сообщений о своем присутствии сети, маршрутизатор рассылает объявления о состоянии каналов в случае изменения информации о них или по истечении времени. 3) Протоколы правил маршрутизации: задача – эффективная доставка сообщений получателю по разрешенным маршрутам. Они позволяют оператору Ethernet получать информацию о маршрутизации от соседних операторов на основе контрактов. Алгоритм схож с (1), но информация о метрике и пути базируется на списке операторов магистрали. Автономная система (АС) – множество подсетей, ведущих согласованную политику маршрутизации. АС принадлежит 1-му владельцу. Каждая АС имеет номер, выделяемый централизованно, и IP-адрес. Все сетевые протоколы разделяются на: 1) работающие внутри АС (interior); 2) используемые для обмена информацией между АС (exterior). 19. ПРОТОКОЛ МАРШРУТНОЙ ИНФОРМАЦИИ (RIP) RIP использует дистанционно-векторный алгоритм. Это обозначает, что станции обмениваются маршрутами, с указанием их длины. RIP не годится для использования в сетях, в которых расстояние между самыми удаленными станциями превышает 15 пересылок (hop-ов) (т.е., для пересылки пакета между ними требуется больше 14 промежуточных маршрутизаторов). При этом следует учитывать, что некоторым пересылкам ставится длина больше 1 хопа, если канал связи имеет слишком низкую скорость. Про каждый маршрут шлюз, поддерживающий RIP, должен иметь следующую информацию: адрес получателя; маска маршрута (в I версии RIP не поддерживались); next hop (IP ближайшего шлюза на пути к получателю); номер выходного интерфейса; метрика маршрутизатора (длина марш-ра); timer (время, прошедшее с момента, когда маршрут последний раз обновлялся). Каждый RIP маршрутизатор время от времени (обычно каждые 30 сек) посылает сообщения об обновлении, описывающие информацию, хранящуюся в его базе маршрутов. Кроме регулярных сообщений могут также посылаться нерегулярные (описывающие только часть базы маршрутов), если таблица маршрутизации изменилась. АЛГОРИТМ ПО ВЫЯВЛЕНИЮ ЛУЧШЕГО МАРШРУТА: Предположим, что маршрут 𝐷(𝐼, 𝑗) – наилучший маршрут от 𝑖 до 𝑗, а 𝑑(𝑖, 𝑗) – стоимость пересылки из 𝑖 до 𝑗. Функционал для выявления маршрута: 𝐷(𝑖, 𝑗) = min(𝑑(𝑗, 𝑘) + 𝐷(𝑘, 𝑗)). Если 𝑖 = 𝑗, то 𝐷(𝐼, 𝑗) = 0. Т.О. получив информацию от всех своих соседей, шлюз может правильно сформировать свою таблицу маршрутизации. При этом, когда приходит сообщение об обновлении, шлюз пересчитывает метрики для всех маршрутов и заменяет их на новые маршруты, если выясняется, что они эффективней. Для передачи своих сообщений RIP использует протокол UDP (порт 520). Его сообщения могут посылаться на broadcast, если сеть поддерживает broadcast, или на мульти кастовый адрес. RIP-пакет: 0 7 8 Тип пакета 15 Версия RIP Идентификатор семейства адресов 16 31 Нули Тэг маршрута IP-адрес получателя (первый параметр маршрута) Маска маршрута Next Hop Метрика маршрута Типов пакета бывает два – запрос и ответ. Часть пакета, начиная с идентификатора, может повторяться с разными маршрутами до 25 раз. Запрос шлюз использует обычно при инициализации, когда хочет получить таблицу маршрутизации от соседей, не дожидаясь регулярного обновления. Ответ содержит всю таблицу маршрутизации шлюза, или ее часть. Идентификатор семейства адресов для IP равен 2. (может использоваться не только с IP) Тэг маршрута (в I версии не присутствовал (поле заполнялось нулями)) обычно используется при обмене маршрутами между протоколами. Если в запросе указано, какие конкретно маршруты интересуют станцию, то станции присылается информация об этих маршрутах. Если в запросе только 1 элемент с идентификатором семейства адресов = 0 и метрикой = 16, то запрашиваемому присылается вся таблица маршрутизации (возможно в нескольких пакетах). Поле Next Hop заполняется отправителем в том случае, если не он является промежуточным маршрутизатором для этого маршрута в данной подсети. Иначе при инсталлировании маршрута в таблицу маршрутизации шлюз-получатель проставляет для маршрута поле next hop address, равное IP-адресу маршрутизатора, от которого он этот маршрут получил. Метрики маршрутизатора могут меняться от 1 до 15. Метрика равная 16 обозначается ∞. В distance-vector-алгоритме есть ряд недостатков. Главный из них: Если шлюз, приславший лучший маршрут, выйдет из строя, то согласно алгоритму этот, уже негодный маршрут, так и останется в таблице. Поэтому для каждого маршрута хранится его возраст. Когда маршрут устаревает, он удаляется из таблицы. Это происходит, когда от источника этого маршрута больше 3 минут не поступает обновление. Для того, чтобы в таблице не было негодных маршрутов используются два приема: 1) Шлюз не должен транслировать маршруты в ту сеть, из которой он их получил 2) Для предупреждения аналогичных случаев используется максимальная метрика – 15. 20. ПРОТОКОЛ ОТКРЫТИЯ КРАТЧАЙШЕГО ПУТИ (OSPF) Основан на алгоритме нахождения кратчайшего пути в графе Дейкстры. (заключ. часть) Позволяет решать проблемы, присущие RIP в относительно больших сетях и в автономных системах. Если задан некоторый граф, то каждому его ребру можно сопоставить определенную метрику. Необходимо найти кратчайшие пути от некоторой вершины до остальных вершин. В OSPF в роли вершин графа - сети и шлюзы, имеющие интерфейсы. Т.О. все вершины, смежные с вершиной-маршрутизатором, являются сетями, а вершины, смежные с вершиной-сетью, являются шлюзом. Метрики вершин характеризуют свойства среды передачи в подсети. п.1: Идентификация и контакт с соседними узлами. Для каждого узла необходимо знать кто с ним соединен в заданный момент. Такую информацию получают с помощью передачи специальных пакетов. Главным является то, чтобы каждый узел имел индивидуальный идентификатор. п.2: Определение стоимости каждого смежного узла. На этом шаге каждый узел пытается определить расстояние или стоимость, которые связаны с каждым из его звеньев, затем создаётся таблица с этой информацией. п.3: Отправка таблицы всем остальным узлам. На этом шаге важно, что каждый узел может принимать пакеты и начинает их использовать одновременно со всеми другими узлами, иначе маршрутизация может оказаться нарушена. п.4: Вычисление каждому узлу наилучших маршрутов ко всем остальным узлам. Для определения кратчайших путей для всех остальных узлов каждый узел использует формальные алгоритмы (н-р Дейкстры) Ряд проблем алгоритма: необходимо обеспечить, чтобы в подходящие моменты создавались или обновлялись таблицы состояния звеньев, чтобы модифицированные пакеты правильно посылались и принимались, также чтобы было известно что делать, когда они теряются. Существует несколько видов маршрутизаторов OSPF: Маршрутизаторы, граничащие с другой автономной системой – отвечают за импортирование маршрутов, полученных от внешних протоколов маршрутизации. Маршрутизаторы, ответственные за сбор информации из одной области и передачу её другим областям. Внутренние маршрутизаторы – принадлежат только одной области. 4 и 5 типы используют протокол Hello и обеспечивают обслуживание тупиковых областей 21. IP-АДРЕСАЦИЯ. КЛАССОВАЯ СТРУКТУРА IP-АДРЕСОВ Схема IP-адресации неразрывно связана с процессом маршрутизации IP-дейтаграмм по объединенной сети. IP-адреса делятся на категории (классы) и используются для соединения адресов подсетей Каждому узлу в сети TCP/IP присваивается уникальный 32-х разрядный логический адрес, который делится на 2 главные части: номер сети и номер узла. Номер сети определяет сеть и если сеть является часть Internet, то должен присваиваться информационным центром. Поставщик услуг Internet может получить у инф.центра блоки сетевых адресов, и самостоятельно назначить сетевое пространство. Номер узла определяет узел в сети и присваивается администратором сети Модуль IP, проанализировав старшие биты адреса может определить класс данного адреса, а, следовательно, назначить маску для данного адреса IP-сети часто делятся на сети меньшего размера, называемые подсетями Использование подсетей дает преимущества: Повешенная гибкость Более эффективное использование сетевых адресов Возможность ограничить трафик, в том числе и широковещательный Наличие всех нулей в адресной части узла указывает на то, что это не адрес узла, а номер сети Если создается локальная сеть, которая не подключена к сети можно назначить любые адреса, но из соображений безопасности определены диапазоны IP-адресов, которые специально зарезервированы. Для класса С: 192.168.1.1 – 192.168.254.254 22. МАСКА IP ПОДСЕТИ Адрес подсети создаётся «заимствованием» битов из поля узла и использованием их для поля подсети. Количество заимствованных битов из поля узла не является постоянным и определяется маской подсети. Маски подсети имеют тот же формат и представление, что и IP-адреса. Но в маске подсети во всех разрядах, определяющих зоны сети и подсети, стоит двоичная единица, а во всех разрядах, определяющих поле узла, - двоичный ноль. Стандартная маска подсети для адреса класса В без подсетей – 255.255.255.0, а маска подсети для номера 171.16.0.0 класса В, где для подсети отводится 8 битов, - 255.255.0.0. Значение этих 8 битов – 28-2 (1 –для сетевого и 1 – для широковещательного адреса) = 254 возможных подсетей по 254 узла в каждой. Маска подсети для номера 192.168.2.0 класса С, где для подсети отводится 5 битов, имеет вид 255.255.255.248. Если для подсети отводится 5 битов, то количество возможных подсетей равно 252 = 30, при этом в каждой из них будет 23-2=6 узлов. Обработка входящего пакета с использованием маски происходит следующим образом. Вначале из входящего пакета извлекается IP-адрес получателя и восстанавливается маска внутренней подсети. Затем путем логического умножения получается номер сети, причем IP-адрес узла получателя удаляется, а номер сети получателя остается. После этого находится номер сети получателя, и затем он сравнивается с исходящим интерфейсом. Наконец, кадр передаётся в сеть.