ПРОТОКОЛ IP. ЗАГОЛОВОК.
Пакет протокола имеет формат, показанный на рисунке
Поле «номер версии» (4 бита) указывает сейчас почти повсеместно версию IPv4, однако некоторые домены уже переходят на версию IPv6.
Поле «длина заголовка»(4 бита) указывает длину в 32-разрядных словах. Обычная длина - 5 слов, однако за счет поля опций (options) она может быть увеличена до 15 слов (60 байт).
Поле «тип сервиса»(8 бит) содержит:
• Три бита PR, указывающие приоритет пакета (0 - нормальный; 7 - самый высокий). Значение может приниматься во внимание маршрутизаторами.
• Биты D, Т и R используются протоколами маршрутизации. Они задают критерий выбора маршрута. D=l минимизация задержки при доставке пакета. Т=1 максимизация пропускной способности. R=1 максимальная надежность доставки.
• Два последних бита в этом поле зарезервированы.
Поле «общая длина»(2 байта) — это общая длина в байтах заголовка и поля данных. Макс длина составляет 65535 байт. При передаче по разным сетям длина пакета выбирается исходя из размера внутренней области кадра. На рисунке размещение для сети Ethernet. По стандарту все устройства сети Интернет должны быть готовы принимать пакеты длиной 576 байт.
Передача пакета в кадре называется инкапсуляцией. Длина пакета выбирается с учетом максимальной длины кадра протокола нижнего уровня, несущего IP-пакеты. Для сети Ethernet - это 1500 байт, для FDDI - 4096 байт.
Поле «идентификатор пакета»(2 байта) используется для распознавания пакетов, образованных в результате фрагментации исходного пакета. Все фрагменты должны иметь одинаковое значение этого поля.
Поле «флаги»(3 бита) содержит:
• Бит DF (Do not Fragment) = 1 запрещает маршрутизатору фрагментировать данный пакет.
• Бит MF (More Fragments) = 1 указывает на то, что данный пакет является промежуточным (не последним) фрагментом.
• Третий бит зарезервирован
Поле «смешение фрагмента»(13 бит) задает смещение в байтах поля данных этого пакета от начала общего поля данных исходного пакета, подвергнутого фрагментации. Это смещение должно быть кратно 8.
Поле «время жизни»(1 байт) указывает предельный срок, в течении которого пакет может перемещаться по сети. Задается в секундах. Каждый маршрутизатор вычитает величину задержки (но не менее 1 сек.) из этой величины. Если параметр становится равным нулю — пакет уничтожается. (Этот параметр можно считать часовым механизмом самоуничтожения.) На практике каждый маршрутизатор просто вычитает 1 из значения этого поля «Time to live», т.к. скорости в сети высокие и время пересылки между узлами практически всегда не превышает 1 секунды.
Поле «протокол верхнего уровня»(I байт) указывает, какому протоколу предназначается информация, размеш.енная в поле данных пакета. Например: 6 — для протокола TCP; 17 — протоколу UDP; 87 — протоколу OSPF и т.д.
Поле «контрольная сумма»(2 байта) применяется для защиты от ошибок заголовка пакета. Это сумма по mod 8 всех 16-битовых слов заголовка. При обнаружении маршрутизатором ошибки пакет отбрасывается.
Поля «адрес отправителя» и «адрес получателя» (по 32 бита).
Поле «опции»является необязательным. Используется обычно при отладке сети. В этом поле может быть, например, указан точный маршрут прохождения дейтаграммы по сети, могут содержаться временные отметки, данные о безопасности и т.д.
Поле «выравнивание»- это дополнение (при необходимости) нулями до полного 32-битового слова.
Основная функция протокола- это передача пакета от отправителя до получателя через объединенную систему компьютерных сетей.
В каждой очередной сети, лежащей на пути перемещения пакета, протокол IP вызывает средства транспортировки, принятые в этой сети, чтобы с их помощью передать этот пакет на маршрутизатор, ведущий к следующей сети, или непосредственно на узел-получатель.
Протокол IP относится к протоколам без установления соединения; Перед этим протоколом не ставится задача надежной доставки сообщения от отправителя к получателю. Этот протокол обрабатывает каждый IP-пакет как независимую единицу, не имеющую связи ни с какими другими IP-пакетами.
В протоколе нет механизмов, обеспечивающих достоверность передачи (защищен только заголовок дейтаграммы). В протоколе отсутствует квотирование (передача подтверждений), нет процедуры упорядочивания, повторных передач. При обнаружении ошибок или истечении времени жизни маршрутизатор просто стирает данный пакет. Все вопросы обеспечения надежности доставки решает протокол TCP, работающий непосредственно над протоколом IP.
Фрагментация IP-пакетов
В узле-отправителе задача фрагментации поступающих с прикладного уровня сообщений возлагается на протокол TCP.
На промежуточных же узлах фрагментацию должен обеспечивать сам протокол IP. Это делается, если нужно передать пакет в следующую сеть, где используется меньший размер поля данных протокола канального уровня.
IP-пакет может быть помечен при передаче как нефрагментируемый (бит DF=1). Это означает для маршрутизаторов запрет этой операции. Если такой пакет поступает в сеть с меньшим MTU, то он просто уничтожается, а узлу отправителю отправляется ICMP-сообщение. Фрагментирование может выполняться и средствами самой сети.
При фрагментации модуль IP на маршрутизаторе создает несколько новых пакетов и копирует заголовок в каждый из них (меняя признаки фрагментации). Соответствующая часть данных помещается в информационное поле нового фрагмента (см. рис.). Размер этой части должен быть кратен 8 байтам (кроме последнего пакета).
Классы IP-адресов
IP-адрес имеет длину 32 бита и обычно записывается в виде 4-х чисел, представляющих значение каждого байта в десятичной форме и разделенных точками.
128.10.2.5 =10000000000010100000001000000101
Адрес состоит из двух логических частей — номера сети и номера узла в сети. В зависимости от того, сколько цифр в адресе используется для задания номера сети, выделяют IP-адреса пяти классов: от А до Е.
Сети класса А имеют адреса от 1 до 126 (0 - не используется, а 127 -зарезервирован для специальных целей). Число узлов — 224 или 16777216.
В сети класса В может быть до 216 узлов или 65536.
Сеть класса С может иметь до 28 или 256 узлов.
Для сетей класса D задается групповой адрес multicast. Пакет будут получать все члены группы, которым присвоен такой адрес. Адреса класса Е зарезервированы для будущих применений.
………
Особые IP-адреса
1. Если весь адрес - одни нули - адрес того узла, который сгенерировал этот пакет.
2. Если в поле номера сети стоят одни нули - считается, что узел назначения принадлежит той же сети, что и узел-отправитель.
3. Если все разряды IP-адреса равны 1, то пакет с таким адресом рассылается всем узлам, находящимся в той же сети, что и узел-источник.
4. Если в поле номера узла назначения стоят только единицы, то такой пакет рассылается всем узлам сети с заданным номером. Например: 192.190.21.255 - сообщение рассылается всем узлам сети 192.190.21.
5. Адрес с первым байтом равным 127 используется для тестирования взаимодействия процессов внутри одной машины. Образуется «петля» внутри одного узла-отправителя — данные считаются только что принятыми.
Маски в IP-адресации
Маска — это число, которое используется в паре с IP-адресом. Двоичная запись маски содержит единицы в тех разрядах, которые должны в IP-адресе интерпретироваться как номер сети. (Эти единицы должны представлять непрерывную последовательность).
Например, для класса С маска имеет вид: 255.255.255.0.
Может использоваться и другая запись. Например: 185.23.44.206/16 указывает на то, что для адреса сети используется 16 разрядов.
Маска может иметь произвольное число разрядов, например:
IP-адрес: 129-64.134.5 Маска: 255.255.128.0, т.е./17
Здесь маска указывает на то, что для адреса сети используются не 15 бит (как в сети класса В), а 17 бит. Наложив маску на номер получим:
Номер сети: 129.64.128.0 Номер узла: 0.0.6.5
Механизм масок широко распространен в IP-маршрутизации. С их помощью администратор может структурировать свою сеть, не требуя от поставщика услуг дополнительных номеров сетей.
Протокол IP v.6.0.
Протокол IPv4 существует более 20 лет, и к середине 90-х годов стало ясно, что его ресурсы (в смысле адресации) скоро будут исчерпаны. Версия IPv6 (ее еще называют IPng — протокол IP нового поколения) была принята в 1995. В настоящее время осуществляется постепенный переход на эту новую версию. Существует уже несколько фрагментов Internet, маршрутизаторы которых поддерживают обе версии IP. Эти фрагменты образуют так называемую 6bоnе (шестую магистраль) в Интернете.
Для того чтобы передавать дейтаграммы IPv6 магистраль, 6bоnе инкапсулирует их в дейтаграмму IPv4 и передает их через те участки Internet, которые еще не поддерживают новую версию протокола. Этот процесс называется туннелированием.
Для перехода на новую версию создаются также узлы с двойным стеком TCP/IPv4 и TCP/lPv6. Наиболее существенно в шестой версии (v6) отличается схема адресации. Под адрес отводится 128 бит. Вместо 2-х уровней адресации, используемой в v4, в шестой версии введено 5 уровней. Это:
Префикс; Идентификатор провайдера; Идентификатор абонента; Идентификатор подсети; Идентификатор узла.
Первые 64 бита адреса распределяются следующим образом. Префикс определяет тип адреса (введено 20 типов). Далее указывается идентификатор организации, ответственной за выделение адресов провайдерам, следом за ним указывается непосредственно идентификатор провайдера, а за ним идентификатор пользователя, назначенный провайдером.
Вторая половина адреса (64 бита) - это адрес сети и номер устройства.
Такая структура адреса существенно упрощает маршрутизацию, т.к. поле «идентификатор провайдера» позволяет сразу определить сеть.
В IPv6 отменено разделение адресов на классы. Деление IP-адреса на адрес подсети и адрес устройства производится на основе маски переменной длины, которая назначается провайдером.
Для плавного перехода к IPv6 введен специальный тип адреса IPv4 compatible (совместимый с IPv4), который содержит 96 нулей, а 32 младших разряда - это обычный адрес IPv4.
Формат основного заголовка IPv6, показанный на рисунке, содержит 40 байт.
Поле «приоритет»может иметь значение , относящееся к одной из двух категорий. Если «приоритет» имеет значение от 0 до 7, то такой приоритет маршрутизатор может не учитывать. Если же значение приоритета находится в диапазоне от 8 до 15, то это указывает на принадлежность пакета к трафику аудио- или видеоинформации (передаваемому с постоянной скоростью и в реальном масштабе времени). Такой приоритет маршрутизатор обязан учитывать.
Поле «метка протокола»указывает на принадлежность данной дейтаграммы к некоторой последовательности - потоку, который требует определенных параметров обслуживания.
Поле «следующий заголовок»по своему значению соответствует полю «протокол» в версии 4. Оно определяет тип заголовка, который первым включен в поле данных пакета. Каждый следующий заголовок тоже содержит аналогичное поле.
Поле «лимит количества переходов»указывает на максимально допустимое количество промежуточных узлов при передаче пакета.
В качестве дополнительных заголовков (на которые указывает поле «следующий заголовок») могут, например, использоваться:
• Routing— содержит полный маршрут при маршрутизации от источника.
• Fragmentation— Протокол IPv6 не разрешает выполнять фрагментацию на промежуточных узлах (для повышения производительности при маршрутизации). Отправитель сам производит (при необходимости) фрагментацию и использует дополнительный заголовок «fragmentation», который идентифицирует фрагмент исходной дейтаграммы. Для предварительного определения минимального значения MTU используется механизм MTU path discovery process (процесс выяснения значений MTU на пути следования). Он заключается в следующем. Отправитель посылает дейтаграмму с длиной, соответствующей той сети, к которой он подключен. Если заданное значение MTU велико для какой-нибудь из промежуточных сетей, то с помощью протокола ICMP отправителю будет послано сообщение «Datagram Too Big» с указанием рекомендованного для этой сети значения MTU. Отправитель скорректирует MTU и снова отправит дейтаграмму и т.д., пока эта дейтаграмма не сможет пройти все промежуточные узлы.
• Encryption — используется для шифрования и дешифрования передаваемых данных.
Протокол TCP
Протокол IP является дейтаграммным протоколом и не может гарантировать надежность передачи данных. Эту задачу - обеспечение надежного канала обмена данными между прикладными процессами в составной сети — решает протокол TCP (управления передачей), относящийся к транспортному уровню (рис.).
Перед отправкой своих данных TCP помещает их в оболочку IP-пакета. Протокол IP используется протоколом TCP в качестве транспортного средства.
Протокол TCP взаимодействует через межуровневые интерфейсы с нижележащим протоколом IP и лежащими выше протоколами прикладного уровня (например, HTTP).
Для организации надежной передачи данных предусматривается установление логического соединения между двумя прикладными процессами.
Соединение в протоколе TCP идентифицируется парой сокетов (т.е. полных адресов процессов).
В рамках соединения осуществляется обязательное подтверждение правильности приема всех сообщений и при необходимости выполняется их повторная передача. Соединение является полнодуплексным, т.е. позволяет одновременно передавать в обе стороны.
Окно передачи
Правильность передачи подтверждается квитанцией получателя. В TCP применяется частный случай квитирования — алгоритм скользящего окна.
Получающий модуль TCP отправляет партнеру «окно». Это окно задает то число байтов, которое он готов принять, начиная с номера байта, на который уже была выслана квитанция.
Квитанции
Квитанция посылается только в случае правильного приема данных (отрицательные квитанции не посылаются). Таким образом отсутствие квитанции может означ: • прием искаженного сегмента; • потерю сегмента; • потерю квитанции.
В качестве квитанции используется поле «номер подтверждения» в заголовке сегмента. В нем помещается число, на единицу большее максимального номера байта в полученном сегменте (т.е. это номер следующего ожидаемого на приеме байта). Это число часто называют номером очереди.
Механизм тайм-аута ожидания подтверждения
Когда протокол TCP передает сегмент с данными, он помещает его копию в очередь повторной передачи и запускает таймер для повторной передачи. Когда приходит подтверждение (на данный сегмент) сегм стирается, а таймер выкл.
Выбор тайм-аута
В протоколе TCP тайм-аут Та выбирается с помощью достаточно сложного адаптивного алгоритма:
• При каждой передаче засекается время до прихода квитанции (время оборота).
• Получаемые значения усредняются с весовым коэффициентом, возрастающим от предыдущего замера к следующему. Таким образом стараются усилить влияние последних замеров времени оборота.
• В качестве Та выбирается среднее время оборота, умноженное на некоторый коэффициент. Практика показывает, что значение этого коэффициента должно превышать 2.
• При большом разбросе времени оборота в алгоритме выбора тайм-аута учитывается также и дисперсия этой величины.
Приостановка передачи
При полном заполнении входного буфера перегруженный узел-приемник указывает в своей квитанции нулевое окно. Даже после этого его партнер по соединению может направить на этот порт сообщение. Для этого оно должно сопровождаться пометкой «срочно» (в поле заголовка — «указатель срочности»). При поступлении такого срочного пакета порт обязан принять его даже путем вытеснения из буфера уже находящихся там данных. Ненулевое окно разрешает дальнейший приём данных.
Заголовок. Мин. длина - 20 байт
«Номер в последовательности»(Sequence number) - номер первого байта в текущем сегменте.
«Номер подтверждения»(Acknowledgment number) - номер следующего байта, который ожидает приемник. Тем самым подтверждается получение байтов с номерами до {AN-1}.
«Смещение данных»(Data offset) — указывает количество 32-битных слов в заголовке TCP.
«Резерв» (Reserved) - заполнено нулями и предназначено для будущего расширения протокола.
«Окно»(Window) - объявляет размер W окна в байтах.
«Контрольная сумма»(Checksum) - сумма всех 16 битовых слов заголовка и поля данных.
«Указатель срочности»(Urgent pointer) - используется совместно с флагом URG. Указывает размер в байтах поля срочных данных.
«Опции» - имеет переменную длину и может отсутствовать. Его размер всегда кратен 8 байтам. Здесь могут, к примеру, указываться: максимальный размер сегмента, дополнительные услуги и т.д.
«Выравнивание»(Padding) - заполнение нулями до 32-битовой длины.
Особенности протокола TCP
1. С помощью флага URG могут передаваться срочные данные.
2. Соединение является надежным за счет:
- использования режима обнаружения ошибок;
- присвоения порядковых номеров каждому байту сообщения
- использования тайм-аута ожидания подтверждения, по его истечении сегмент передается повторно.
3. Управление потоком путем использования окна передачи W.
Протокол UDP
UDP (User Datagram Protocol) - протокол пользовательских дейтаграмм. Он используется в том случае, если передаваемые данные помещаются в одном пакете, а гарантия их доставки не особенно важна. Этот протокол не заботится о пропавших пакетах, о расположении данных в правильном порядке и о других тонкостях. Протокол применяется для тех программ, которые посылают только короткие сообщения и могут повторить передачу данных, если ответ задерживается.
Формат дейтаграммы UDP показан на рисунке слева
Поле «длина» указывает количество байтов в дейтаграмме (т.е. длина заголовка и данных)
Данные протокола UDP инкапсулируется в IP-дейтаграммах при передаче их по сети (см. рис. справа вверху).
Только IP-заголовок определяет отправителя и получателя. Сама же дейтаграмма содержит только номера портов.
UDP обеспечивает мультиплексирование и демультиплексирование дейтаграмм (см. рис.6.23.).
Каждый такой порт (также как и в протоколе TCP) может быть представлен в виде входной и выходной очереди дейтаграмм.
33. Протокол 1СМР
Протокол обмена управляющими сообщениями ICMP (Internet Control Message Protocol) является вспомогательным в стеке TCP/IP.
Этот протокол позволяет маршрутизатору сообщать станции-источнику об ошибках и нештатных ситуациях, с которыми он столкнулся при передаче IP-дейтаграммы от этой станции.
Протокол включается в каждую реализацию протокола IP и может рассматриваться и как его неотъемлемая часть.
Сообщения ICMP передаются по сети в поле данных IP-дейтаграммы. Протокол посылает два вида сообщений:
• управляющие сообщения;
• сообщения об ошибках.
Эти сообщения могут быть посланы как на другие маршрутизаторы, так и на конечные станции.
Протокол сообщает об ошибках, но не предпринимает мер по их исправлению. Если маршрутизатор обнаруживает ошибку, он уничтожает дейтаграмму, но одновременно с помощью ICMP отсылает сообщение об ошибке отправителю для принятия мер по ее устранению.Доставка сообщений ICMP производится с помощью IP-дейтаграмм. Поэтому эти сообщения могут быть аналогично другим дейтаграммам утеряны или удалены. Сообщения ICMP требуют двух уровней инкапсуляции (см. рис.слева).
Все сообщения ICMP начинаются с трех одинаковых полей (см. рис.справа выше.).
Поле «тип» определяет смысл сообщения и его формат. Это поле может иметь, например, следующие значения* 3 — получатель недостижим; * 11 — время жизни дейтаграммы истекло;* 12 — ошибка параметра;
Сообщения «Запрос эха» и «Ответ наэхо» часто используются при отладке сети. Они позволяют убедиться в достижимости получателя IP-дейтаграммы и его способности отвечать на запросы. Во многих системах программа с такими функциями называется «Ping».
Сообщение «Получатель недостижим»посылается маршрутизатором, если он не может доставить IP-дейтаграмму по назначению. Поле «код» в таком сообщении указывает на причину недоставки, например: * 1 — устройство недостижимо; * 3 — порт недостижим; * 4 — требуется фрагментация; * 6 — сеть назначения неизвестна и т.д. В это сообщение включается IP-заголовок отвергнутой IP-дейтаграммы и ее первые 64 бита. Сообщение «Подавление источника»требует от узла-источника уменьшения скорости передачи дейтаграмм. Такое сообщение посылается тогда, когда на маршрутизаторе скапливается большая очередь и происходит переполнение буфера. Тогда на каждую из не поставленных в очередь IP-дейтаграмм посылается такое сообщение. Сообщение «Изменение маршрута»используется для указания источнику на то, что в данной сети существует более оптимальный путь доставки отправленной дейтаграммы. В сообщении указывается адрес рекомендуемого маршрутизатора. Сообщение «Время жизни дейтаграммы истекло»посылается при обнулении счетчика времени жизни дейтаграммы или при превышении времени ожидания формирования фрагментов дейтаграммы. Сообщение «Ошибка параметра»посылается маршрутизатором при обнаружении неправильного параметра в заголовке. Тогда дейтаграмма уничтожается. Неверный байт передается в специальном поле «указатель».
Дата добавления: 2016-10-07; просмотров: 3409;