Содержание

Что означает TCP/IP? — Блог веб-программиста

Подробности
марта 28, 2016
Просмотров: 7559

Что такое TCP/IP? Как расшифровывается эта аббревиатура и что она означает? Прочитайте эту статью, чтобы узнать об этом.

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

В Интернете набор протоколов, известных как TCP/IP, состоит из множества слоев, где каждый слой отвечает за определенную сетевую задачу и обеспечивает верхний слой с определенными службами. Протоколы нижнего уровня преобразовывают данные в формы, которые могут быть физически, переданы по сети. Протоколы верхнего уровня имеют дело с абстрактными данными и функционируют на уровне, близком к пользователю.

Агентство передовых оборонных исследовательских проектов США разработала набор протоколов Интернета, в 1970-х годах.

 

Протокол TCP

Протокол управления передачей, (англ. Transmission Control Protocol, сокращенно TCP) работает на транспортном уровне набора протоколов интернета и обеспечивает сетевые компьютеры надежными средствами связи. Электронная почта и передача файлов являются распространенными приложениями по протоколу TCP.

 

IP

Интернет протокол (англ. Internet Protocol, сокращенно IP), является сетевым протоколом, используемым для передачи данных через сеть с коммутацией пакетов. Он работает на межсетевом уровне набора протоколов и облегчает доставку дейтаграмм на основе IP-адресов сетевых узлов.


Читайте также

 

 

 

 

Компьютерные сети от А до Я: стек протоколов TCP/IP

Стек протоколов TCP/IP – это альфа и омега Интернета, и нужно не только знать, но также понимать модель и принцип работы стека.

Предыдущая статья

Мы разобрались с классификацией, стандартами сетей и моделью OSI. Теперь поговорим о стеке, на базе которого построена всемирная система объединенных компьютерных сетей Интернет.

Изначально данный стек создавался для объединения больших компьютеров в университетах по телефонным линиям связи соединения «точка-точка». Но когда появились новые технологии, широковещательные (Ethernet) и спутниковые, возникла необходимость адаптировать TCP/IP, что оказалось непростой задачей. Именно поэтому наряду с OSI появилась модель TCP/IP.

Через модель описывается, как необходимо строить сети на базе различных технологий, чтобы в них работал стек протоколов TCP/IP.

В таблице представлено сравнение моделей OSI и TCP/IP. Последняя включает в себя 4 уровня:

  1. Самый нижний, уровень сетевых интерфейсов, обеспечивает взаимодействие с сетевыми технологиями (Ethernet, Wi-Fi и т. д.). Это объединение функций канального и физического уровней OSI.
  2. Уровень интернет стоит выше, и по задачам перекликается с сетевым уровнем модели OSI. Он обеспечивает поиск оптимального маршрута, включая выявление неполадок в сети. Именно на этом уровне работает маршрутизатор.
  3. Транспортный отвечает за связь между процессами на разных компьютерах, а также за доставку переданной информации без дублирования, потерь и ошибок, в необходимой последовательности.
  4. Прикладной объединил в себе 3 уровня модели OSI: сеансовый, представления и прикладной. То есть он выполняет такие функции, как поддержка сеанса связи, преобразование протоколов и информации, а также взаимодействие пользователя и сети.

Иногда специалисты пытаются объединить обе модели в нечто общее. Например, ниже приведено пятиуровневое представление симбиоза от авторов «Компьютерные сети» Э. Таненбаума и Д. Уэзеролла:

Модель OSI обладает хорошей теоретической проработкой, но протоколы не используются. С моделью TCP/IP все иначе: протоколы широко используются, но модель подходит исключительно для описания сетей на базе TCP/IP.

Не путайте их:

  • TCP/IP – это стек протоколов, представляющий собой основу Интернета.
  • Модель OSI (Базовая Эталонная Модель Взаимодействия Открытых Систем) подходит для описания самых разных сетей.

Рассмотрим каждый уровень более подробно.

Нижний уровень сетевых интерфейсов включает в себя Ethernet, Wi-Fi и DSL (модем). Данные сетевые технологии формально не входят в состав стека, но крайне важны в работе интернета в целом.

Основной протокол сетевого уровня – IP (Internet Protocol). Это маршрутизированный протокол, частью которого является адресация сети (IP-адрес). Здесь также работают такие дополнительные протоколы, как ICMP, ARRP и DHCP. Они обеспечивают работу сетей.

На транспортной уровне расположились TCP – протокол, обеспечивающий передачу данных с гарантией доставки, и UDP – протокол для быстрой передачи данных, но уже без гарантии.

Прикладной уровень – это HTTP (для web), SMTP (передача почты), DNS (назначение IP-адресам понятных доменных имен), FTP (передача файлов). Протоколов на прикладном уровне стека TCP/IP больше, но приведенные можно назвать самыми значимыми для рассмотрения.

Помните, что стек протоколов TCP/IP задает стандарты связи между устройствами и содержит соглашения о межсетевом взаимодействии и маршрутизации.

Следующая статья

Основы TCP/IP для будущих дилетантов / Хабр

Предположим, что вы плохо владеете сетевыми технологиями, и даже не знаете элементарных основ. Но вам поставили задачу: в быстрые сроки построить информационную сеть на небольшом предприятии. У вас нет ни времени, ни желания изучать толстые талмуды по проектированию сетей, инструкции по использованию сетевого оборудования и вникать в сетевую безопасность. И, главное, в дальнейшем у вас нет никакого желания становиться профессионалом в этой области. Тогда эта статья для вас.
Вторая часть этой статьи, где рассматривается практическое применение изложенных здесь основ: Заметки о Cisco Catalyst: настройка VLAN, сброс пароля, перепрошивка операционной системы IOS

Понятие о стеке протоколов


Задача — передать информацию от пункта А в пункт В. Её можно передавать непрерывно. Но задача усложняется, если надо передавать информацию между пунктами AB и AC по одному и тому же физическому каналу. Если информация будет передаваться непрерывно, то когда С захочет передать информацию в А — ему придётся дождаться, пока В закончит передачу и освободит канал связи. Такой механизм передачи информации очень неудобен и непрактичен. И для решения этой проблемы было решено разделять информацию на порции.

На получателе эти порции требуется составить в единое целое, получить ту информацию, которая вышла от отправителя. Но на получателе А теперь мы видим порции информации как от В так и от С вперемешку. Значит, к каждой порции надо вписать идентификационный номер, что бы получатель А мог отличить порции информации с В от порций информации с С и собрать эти порции в изначальное сообщение. Очевидно, получатель должен знать, куда и в каком виде отправитель приписал идентификационные данные к исходной порции информации. И для этого они должны разработать определённые правила формирования и написания идентификационной информации. Далее слово «правило» будет заменяться словом «протокол».

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

В протоколе Ethernet находятся номер сетевого адаптера отправителя (MAC-адрес), номер сетевого адаптера получателя, тип передаваемых данных и непосредственно передаваемые данные. Порция информации, составленная в соответствии с протоколом Ethernet, называется кадром. Считается, что сетевых адаптеров с одинаковым номером не существует. Сетевое оборудование извлекает передаваемые данные из кадра (аппаратно или программно), и производит дальнейшую обработку.

Как правило, извлечённые данные в свою очередь сформированы в соответствии с протоколом IP и имеют другой вид идентификационной информации — ip адрес получателя (число размером в 4 байта), ip адрес отправителя и данные. А так же много другой необходимой служебной информации. Данные, сформированные в соответствии с IP протоколом, называются пакетами.

Далее извлекаются данные из пакета. Но и эти данные, как правило, ещё не являются изначально отправляемыми данными. Этот кусок информации тоже составлен в соответствии определённому протоколу. Наиболее широко используется TCP протокол. В нём содержится такая идентификационная информация, как порт отправителя (число размером в два байта) и порт источника, а так же данные и служебная информация. Извлечённые данные из TCP, как правило, и есть те данные, которые программа, работающая на компьютере В, отправляла «программе-приёмнику» на компьютере A.

Вложность протоколов (в данном случае TCP поверх IP поверх Ethernet) называется стеком протоколов.

ARP: протокол определения адреса


Существуют сети классов A, B, C, D и E. Они различаются по количеству компьютеров и по количеству возможных сетей/подсетей в них. Для простоты, и как наиболее часто встречающийся случай, будем рассматривать лишь сеть класса C, ip-адрес которой начинается на 192.168. Следующее число будет номером подсети, а за ним — номер сетевого оборудования. К примеру, компьютер с ip адресом 192.168.30.110 хочет отправить информацию другому компьютеру с номером 3, находящемуся в той же логической подсети. Это значит, что ip адрес получателя будет такой: 192.168.30.3

Важно понимать, что узел информационной сети — это компьютер, соединённый одним физическим каналом с коммутирующим оборудованием. Т.е. если мы отправим данные с сетевого адаптера «на волю», то у них одна дорога — они выйдут с другого конца витой пары. Мы можем послать совершенно любые данные, сформированные по любому, выдуманному нами правилу, ни указывая ни ip адреса, ни mac адреса ни других атрибутов. И, если этот другой конец присоединён к другому компьютеру, мы можем принять их там и интерпретировать как нам надо. Но если этот другой конец присоединён к коммутатору, то в таком случае пакет информации должен быть сформирован по строго определённым правилам, как бы давая коммутатору указания, что делать дальше с этим пакетом. Если пакет будет сформирован правильно, то коммутатор отправит его дальше, другому компьютеру, как было указано в пакете. После чего коммутатор удалит этот пакет из своей оперативной памяти. Но если пакет был сформирован не правильно, т.е. указания в нём были некорректны, то пакет «умрёт», т.е. коммутатор не будет отсылать его куда либо, а сразу удалит из своей оперативной памяти.

Для передачи информации другому компьютеру, в отправляемом пакете информации надо указать три идентификационных значения — mac адрес, ip адрес и порт. Условно говоря, порт — это номер, который, выдаёт операционная система каждой программе, которая хочет отослать данные в сеть. Ip адрес получателя вводит пользователь, либо программа сама получает его, в зависимости от специфики программы. Остаётся неизвестным mac адрес, т.е. номер сетевого адаптера компьютера получателя. Для получения необходимой данной, отправляется «широковещательный» запрос, составленный по так называемому «протоколу разрешения адресов ARP». Ниже приведена структура ARP пакета.

Сейчас нам не надо знать значения всех полей на приведённой картинке. Остановимся лишь на основных.

В поля записываются ip адрес источника и ip адрес назначения, а так же mac адрес источника.

Поле «адрес назначения Ethernet» заполняется единицами (ff:ff:ff:ff:ff:ff). Такой адрес называется широковещательным, и такой фрейм будер разослан всем «интерфейсам на кабеле», т.е. всем компьютерам, подключённым к коммутатору.

Коммутатор, получив такой широковещательный фрейм, отправляет его всем компьютерам сети, как бы обращаясь ко всем с вопросом: «если Вы владелец этого ip адреса (ip адреса назначения), пожалуйста сообщите мне Ваш mac адрес». Когда другой компьютер получает такой ARP запрос, он сверяет ip адрес назначения со своим собственным. И если он совпадает, то компьютер, на место единиц вставляет свой mac адрес, меняет местами ip и mac адреса источника и назначения, изменяет некоторую служебную информацию и отсылает пакет обратно коммутатору, а тот обратно — изначальному компьютеру, инициатору ARP запроса.

Таким образом ваш компьютер узнаёт mac адрес другого компьютера, которому вы хотите отправить данные. Если в сети находится сразу несколько компьютеров, отвечающих на этот ARP запрос, то мы получаем «конфликт ip адресов». В таком случае необходимо изменить ip адрес на компьютерах, что бы в сети не было одинаковых ip адресов.

Построение сетей


Задача построения сетей

На практике, как правило, требуется построить сети, число компьютеров в которой будет не менее ста. И кроме функций файлообмена, наша сеть должна быть безопасной и простой в управлении. Таким образом, при построении сети, можно выделить три требования:
  1. Простота в управлении. Если бухгалтера Лиду переведут в другой кабинет, ей по-прежнему понадобится доступ к компьютерам бухгалтеров Анны и Юлии. И при неправильном построении своей информационной сети, у администратора могут возникнуть трудности в выдаче Лиде доступа к компьютерам других бухгалтеров на её новом месте.
  2. Обеспечение безопасности. Для обеспечения безопасности нашей сети, права доступа к информационным ресурсам должны быть разграничены. Так же сеть должна быть защищена от угроз раскрытия, целостности и отказа в обслуживании. Подробнее читайте в книге «Атака на Internet» автора Илья Давидович Медведовский, глава «Основные понятия компьютерной безопасности».
  3. Быстродействие сети. При построении сетей есть техническая проблема — зависимость скорости передачи от количества компьютеров в сети. Чем больше компьютеров — тем ниже скорость. При большом количестве компьютеров, быстродействие сети может стать настолько низким, что она станет неприемлемой заказчику.

Из-за чего при большом количестве компьютеров снижается скорость сети? — причина проста: из-за большого количества широковещательных сообщений (ШС). ШС — это сообщение, которое, приходя на коммутатор, отправляется всем хостам сети. Или, грубо говоря, всем компьютерам, находящимся в вашей подсети. Если компьютеров в сети 5, то каждый компьютер будет принимать по 4 ШС. Если их будет 200, то каждый компьютер в такой большой сети будет принимать по 199 ШС.

Существует большое множество приложений, программных модулей и сервисов, которые, для своей работы отправляют в сеть широковещательные сообщения. Описанный в пункте ARP: протокол определения адреса лишь один из множества ШС, отправляемый вашим компьютером в сеть. Например, когда вы заходите в «Сетевое окружение» (ОС Windows), ваш компьютер посылает ещё несколько ШС со специальной информацией, сформированной по протоколу NetBios, что бы просканировать сеть на наличие компьютеров, находящихся в той же рабочей группе. После чего ОС рисует найденные компьютеры в окне «Сетевое окружение» и вы их видите.

Так же стоит заметить, что во время процесса сканирования той или иной программой, ваш компьютер отсылает ни одно широковещательное сообщение, а несколько, к примеру для того, что бы установить с удалёнными компьютерами виртуальные сессии или ещё для каких либо системных нужд, вызванных проблемами программной реализации этого приложения. Таким образом, каждый компьютер в сети для взаимодействия с другими компьютерами вынужден посылать множество различных ШС, тем самым загружая канал связи не нужной конечному пользователю информацией. Как показывает практика, в больших сетях широковещательные сообщения могут составить значительную часть трафика, тем самым замедляя видимую для пользователя работу сети.

Виртуальные локальные сети

Для решения первой и третьей проблем, а так же в помощь решения второй проблемы, повсеместно используют механизм разбиения локальной сети на более маленькие сети, как бы отдельные локальные сети (Virtual Local Area Network). Грубо говоря, VLAN — это список портов на коммутаторе, принадлежащих одной сети. «Одной» в том смысле, что другой VLAN будет содержать список портов, принадлежащих другой сети.

Фактически, создание двух VLAN-ов на одном коммутаторе эквивалентно покупке двух коммутаторов, т.е. создание двух VLAN-ов — это всё равно, что один коммутатор разделить на два. Таким образом происходит разбиение сети из ста компьютеров на более маленькие сети, из 5-20 компьютеров — как правило именно такое количество соответствует физическому местонахождению компьютеров по надобности файлообмена.

  • При разбиении сети на VLAN-ы достигается простота управления. Так, при переходе бухгалтера Лиды в другой кабинет, администратору достаточно удалить порт из одного VLAN-а и добавить в другой. Подробнее это рассмотрено в пункте VLAN-ы, теория.
  • VLAN-ы помогают решить одно из требований к безопасности сети, а именно разграничение сетевых ресурсов. Так, студен из одной аудитории не сможет проникнуть на компьютеры другой аудитории или компьютер ректора, т.к. они находятся в фактически разных сетях.
  • Т.к. наша сеть разбита на VLAN-ы, т.е. на маленькие «как бы сети», пропадает проблема с широковещательными сообщениями.

VLAN-ы, теория


Возможно, фраза «администратору достаточно удалить порт из одного VLAN-а и добавить в другой» могла оказаться непонятной, поэтому поясню её подробнее. Порт в данном случае — это не номер, выдаваемый ОС приложению, как было рассказано в пункте Стек протоколов, а гнездо (место) куда можно присоединить (вставить) коннектор формата RJ-45. Такой коннектор (т.е. наконечник к проводу) прикрепляется к обоим концам 8-ми жильного провода, называемого «витая пара». На рисунке изображён коммутатор Cisco Catalyst 2950C-24 на 24 порта:
Как было сказано в пункте ARP: протокол определения адреса каждый компьютер соединён с сетью одним физическим каналом. Т.е. к коммутатору на 24 порта можно присоединить 24 компьютера. Витая пара физически пронизывает все помещения предприятия — все 24 провода от этого коммутатора тянутся в разные кабинеты. Пусть, к примеру, 17 проводов идут и подсоединяются к 17-ти компьютерам в аудитории, 4 провода идут в кабинет спецотдела и оставшиеся 3 провода идут в только что отремонтированный, новый кабинет бухгалтерии. И бухгалтера Лиду, за особые заслуги, перевели в этот самый кабинет.

Как сказано выше, VLAN можно представлять в виде списка принадлежащих сети портов. К примеру, на нашем коммутаторе было три VLAN-а, т.е. три списка, хранящиеся во flash-памяти коммутатора. В одном списке были записаны цифры 1, 2, 3… 17, в другом 18, 19, 20, 21 и в третьем 22, 23 и 24. Лидин компьютер раньше был присоединён к 20-ому порту. И вот она перешла в другой кабинет. Перетащили её старый компьютер в новый кабинет, или она села за новый компьютер — без разницы. Главное, что её компьютер присоединили витой парой, другой конец которой вставлен в порт 23 нашего коммутатора. И для того, что бы она со своего нового места могла по прежнему пересылать файлы своим коллегам, администратор должен удалить из второго списка число 20 и добавить число 23. Замечу, что один порт может принадлежать только одному VLAN-у, но мы нарушим это правило в конце этого пункта.

Замечу так же, что при смене членства порта в VLAN, администратору нет никакой нужды «перетыкать» провода в коммутаторе. Более того, ему даже не надо вставать с места. Потому что компьютер администратора присоединён к 22-ому порту, с помощью чего он может управлять коммутатором удалённо. Конечно, благодаря специальным настройкам, о которых будет рассказано позже, лишь администратор может управлять коммутатором. О том, как настраивать VLAN-ы, читайте в пункте VLAN-ы, практика [в следующей статье].

Как вы, наверное, заметили, изначально (в пункте Построение сетей) я говорил, что компьютеров в нашей сети будет не менее 100. Но к коммутатору можно присоединить лишь 24 компьютера. Конечно, есть коммутаторы с большим количеством портов. Но компьютеров в корпоративной сети/сети предприятия всё равно больше. И для соединения бесконечно большого числа компьютеров в сеть, соединяют между собой коммутаторы по так называемому транк-порту (trunk). При настройки коммутатора, любой из 24-портов можно определить как транк-порт. И транк-портов на коммутаторе может быть любое количество (но разумно делать не более двух). Если один из портов определён как trunk, то коммутатор формирует всю пришедшую на него информацию в особые пакеты, по протоколу ISL или 802.1Q, и отправляет эти пакеты на транк-порт.

Всю пришедшую информацию — имеется в виду, всю информацию, что пришла на него с остальных портов. А протокол 802.1Q вставляется в стек протоколов между Ethernet и тем протоколом, по которому были сформированные данные, что несёт этот кадр.

В данном примере, как вы, наверное, заметили, администратор сидит в одном кабинете вместе с Лидой, т.к. витая пора от портов 22, 23 и 24 ведёт в один и тот же кабинет. 24-ый порт настроен как транк-порт. А сам коммутатор стоит в подсобном помещении, рядом со старым кабинетом бухгалтеров и с аудиторией, в которой 17 компьютеров.

Витая пара, которая идёт от 24-ого порта в кабинет к администратору, подключается к ещё одному коммутатору, который в свою очередь, подключён к роутеру, о котором будет рассказано в следующих главах. Другие коммутаторы, которые соединяют другие 75 компьютеров и стоят в других подсобных помещениях предприятия — все они имеют, как правило, один транк-порт, соединённый витой парой или по оптоволокну с главным коммутатором, что стоит в кабинете с администратором.

Выше было сказано, что иногда разумно делать два транк-порта. Второй транк-порт в таком случае используется для анализа сетевого трафика.

Примерно так выглядело построение сетей больших предприятий во времена коммутатора Cisco Catalyst 1900. Вы, наверное, заметили два больших неудобства таких сетей. Во первых, использование транк-порта вызывает некоторые сложности и создаёт лишнюю работу при конфигурировании оборудования. А во вторых, и в самых главных — предположим, что наши «как бы сети» бухгалтеров, экономистов и диспетчеров хотят иметь одну на троих базу данных. Они хотят, что бы та же бухгалтерша смогла увидеть изменения в базе, которые сделала экономистка или диспетчер пару минут назад. Для этого нам надо сделать сервер, который будет доступен всем трём сетям.

Как говорилось в середине этого пункта, порт может находиться лишь в одном VLAN-е. И это действительно так, однако, лишь для коммутаторов серии Cisco Catalyst 1900 и старше и у некоторых младших моделей, таких как Cisco Catalyst 2950. У остальных коммутаторов, в частности Cisco Catalyst 2900XL это правило можно нарушить. При настройке портов в таких коммутаторах, каждый пор может иметь пять режимов работы: Static Access, Multi-VLAN, Dynamic Access, ISL Trunk и 802.1Q Trunk. Второй режим работы именно то, что нам нужно для выше поставленной задачи — дать доступ к серверу сразу с трёх сетей, т.е. сделать сервер принадлежащим к трём сетям одновременно. Так же это называется пересечением или таггированием VLAN-ов. В таком случае схема подключения может быть такой:


Продолжение следует


Вторая часть этой статьи, где рассматривается практическое применение изложенных здесь основ: Заметки о Cisco Catalyst: настройка VLAN, сброс пароля, перепрошивка операционной системы IOS

Об этой статье


Статья опробована на реальных студентах. Я давал им прочитать часть статьи и оценить на понятность. Затем редактировал и упрощал материал до тех пор, пока он ни стал понятен даже самым отпетым двоечникам.

Протокол TCP/IP или как работает Интернет (для чайников)

В основе работы глобальной сети Интернет лежит  набор (стек) протоколов TCP/IP. Но эти термины лишь на первый взгляд кажутся сложными. На самом деле стек протоколов TCP/IP — это простой набор правил обмена информацией, и правила эти на самом деле вам хорошо известны, хоть вы, вероятно, об этом и не догадываетесь. Да, все именно так, по существу в принципах, лежащих в основе протоколов TCP/IP, нет ничего нового: все новое — это хорошо забытое старое.

Человек может учиться двумя путями:

  1. Через тупое формальное зазубривание шаблонных способов  решения  типовых задач (чему сейчас в основном и учат в школе). Такое обучение малоэффективно. Наверняка вам приходилось наблюдать панику и полную беспомощность бухгалтера при смене версии офисного софта — при малейшем изменении последовательности кликов мышки, требуемых для выполнения привычных действий. Или  приходилось видеть человека, впадающего в ступор при изменении интерфейса рабочего стола? 
  2. Через понимание сути проблем, явлений, закономерностей. Через понимание принципов построения той или иной системы. В этом случае обладание энциклопедическими знаниями не играет большой роли — недостающую информацию легко найти. Главное — знать, что искать. А для этого необходимо не формальное знание предмета, а понимание сути.

В этой статье я предлагаю пойти вторым путем, так как понимание принципов, лежащих в основе работы Интернета, даст вам возможность чувствовать себя в Интернете уверенно и свободно — быстро  решать возникающие проблемы, грамотно формулировать проблемы и уверенно общаться с техподдержкой.

Итак, начнем.

Принципы работы интернет-протоколов TCP/IP по своей сути очень просты и сильно напоминают работу нашей советской почты.

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

На конверте письма будет написано примерно следующее:

Адрес отправителя:
От кого: Иванов Иван Иванович
Откуда: Ивантеевка, ул. Большая , д. 8, кв. 25

Адрес получателя:
Кому: Петров Петр Петрович
Куда: Москва, Усачевский переулок, д. 105, кв. 110

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

Каждый компьютер (он же: узел, хост) в рамках сети Интернет тоже имеет уникальный адрес, который называется IP-адрес (Internet Protocol Address), например: 195.34.32.116. IP адрес состоит из четырех десятичных чисел (от 0 до 255), разделенных точкой. Но знать только IP адрес компьютера еще недостаточно, т.к. в конечном счете обмениваются информацией не компьютеры сами по себе, а приложения, работающие на них. А на компьютере может одновременно работать сразу несколько приложений (например почтовый сервер, веб-сервер  и пр.). Для доставки обычного бумажного письма недостаточно знать только адрес дома — необходимо еще знать номер квартиры. Также и каждое программное приложение имеет подобный номер, именуемый номером порта. Большинство серверных приложений имеют стандартные номера, например: почтовый сервис привязан к порту с номером 25 (еще говорят: «слушает» порт, принимает на него сообщения), веб-сервис привязан к порту 80, FTP — к порту 21 и так далее.

Таким образом имеем следующую практически полную аналогию с нашим обычным почтовым адресом:

"адрес дома" = "IP компьютера"
"номер квартиры" = "номер порта"

В компьютерных сетях, работающих по протоколам TCP/IP, аналогом бумажного письма в конверте является пакет, который содержит собственно передаваемые данные и адресную информацию — адрес отправителя и адрес получателя, например:

Адрес отправителя (Source address):
IP: 82.146.49.55
Port: 2049

Адрес получателя (Destination address):
IP: 195.34.32.116
Port: 53

Данные пакета:
...

Конечно же в пакетах также присутствует служебная информация, но для понимания сути это не важно.

Обратите внимание, комбинация: «IP адрес и номер порта» — называется  «сокет».

В нашем примере мы с сокета 82.146.49.55:2049 посылаем пакет на сокет 195.34.32.116:53, т.е. пакет пойдет на компьютер, имеющий IP адрес 195.34.32.116, на порт 53. А порту 53 соответствует сервер распознавания имен (DNS-сервер), который примет этот пакет. Зная адрес отправителя, этот сервер  сможет после обработки нашего запроса сформировать ответный пакет, который пойдет в обратном направлении на сокет отправителя 82.146.49.55:2049, который для DNS сервера будет являться сокетом получателя.

Как правило взаимодействие осуществляется по схеме «клиент-сервер»: «клиент» запрашивает какую-либо информацию (например страницу сайта), сервер принимает запрос, обрабатывает его и посылает результат. Номера портов серверных приложений общеизвестны, например:  почтовый SMTP сервер «слушает» 25-й порт,  POP3 сервер, обеспечивающий чтение почты из ваших почтовых ящиков «слушает» 110-порт, веб-сервер — 80-й порт и пр.

Большинство программ на домашнем компьютере являются клиентами — например почтовый клиент Outlook, веб-обозреватели IE, FireFox и пр. 

Номера портов на клиенте не фиксированные как у сервера, а назначаются операционной системой динамически. Фиксированные серверные порты как правило имеют номера до 1024 (но есть исключения), а клиентские начинаются после 1024.

Повторение — мать учения: IP — это адрес компьютера (узла, хоста) в сети, а порт — номер конкретного приложения, работающего на этом компьютере.

Однако человеку запоминать цифровые IP адреса трудно — куда удобнее работать с буквенными именами. Ведь намного легче запомнить слово, чем набор цифр. Так и сделано — любой цифровой IP адрес можно связать с  буквенно-цифровым именем. В результате например вместо 82.146.49.55 можно использовать имя www.ofnet.ru.  А преобразованием доменного имени в цифровой IP адрес занимается сервис доменных имен — DNS (Domain Name System).

Рассмотрим подробнее, как это работает. Ваш провайдер явно (на бумажке, для ручной настройки соединения) или неявно (через автоматическую настройку соединения) предоставляет вам IP адрес сервера имен (DNS). На компьютере с этим IP адресом работает приложение (сервер имен), которое знает все доменные имена в Интернете и соответствующие им цифровые IP адреса. DNS-сервер «слушает» 53-й порт, принимает на него запросы и выдает ответы, например:

Запрос от нашего компьютера: "Какой IP адрес соответствует имени www.ofnet.ru?"
Ответ сервера: "82.146.49.55."

Теперь рассмотрим, что происходит, когда в своем браузере вы набираете доменное имя (URL) этого сайта (www.ofnet.ru) и, нажав <enter>, в ответ от веб-сервера получаете страницу этого сайта.

Например:

IP адрес нашего компьютера: 91.76.65.216
Браузер: Internet Explorer (IE),
DNS сервер (стрима): 195.34.32.116 (у вас может быть другой), Страница, которую мы хотим открыть: www.ofnet.ru.

Набираем в адресной строке браузера доменное имя www.ofnet.ru и жмем <enter>. Далее операционная система производит примерно следующие действия:

Отправляется запрос (точнее пакет с запросом) DNS серверу на сокет 195.34.32.116:53. Как было рассмотренно выше, порт 53 соответствует DNS-серверу — приложению,  занимающемуся распознаванием имен. А DNS-сервер, обработав наш запрос, возвращает IP-адрес, который соответствует введенному имени.

Диалог примерно следующий:

- Какой IP адрес соответствует имени www.ofnet.ru?
- 82.146.49.55.

Далее наш компьютер устанавливает соединение с портом 80 компьютера  82.146.49.55 и посылает запрос (пакет с запросом) на получение страницы www.ofnet.ru. 80-й порт соответствует веб-серверу. В адресной строке браузера 80-й порт как правило не пишется, т.к. используется по умолчанию, но его можно и явно указать после двоеточия — http://www.ofnet.ru:80.

Приняв от нас запрос, веб-сервер обрабатывает его и в нескольких пакетах посылает нам страницу в на языке HTML — языке разметки текста, который понимает браузер.

Наш браузер, получив страницу, отображает ее. В результате мы видим на экране главную страницу этого сайта.

Зачем эти принципы надо понимать?

Например, вы заметили странное поведение своего компьютера — непонятная сетевая активность, тормоза и пр. Что делать? Открываем консоль (нажимаем кнопку «Пуск» — «Выполнить» — набираем cmd — «Ок»). В  консоли набираем команду netstat -anи жмем <Enter>. Эта утилита отобразит список установленных соединений между сокетами нашего компьютера и сокетами удаленных узлов. Если мы видим в колонке «Внешний адрес» какие-то чужие IP адреса, а через двоеточие 25-й порт, что это может означать? (Помните, что 25-й порт соответствует почтовому серверу?) Это означает то, что ваш компьютер установил соединение с каким-то почтовым сервером (серверами) и шлет через него какие-то письма. И если ваш почтовый клиент (Outlook например) в это время не запущен, да если еще таких соединений на 25-й порт много, то, вероятно, в вашем компьютере завелся вирус, который рассылает от вашего имени спам или пересылает номера ваших кредитных карточек вкупе с паролями злоумышленникам.

Также понимание принципов работы Интернета необходимо для правильной настройки файерволла (проще говоря брандмауэра :)). Эта программа (которая часто поставляется вместе с антивирусом), предназначенна для фильтрации пакетов — «своих» и «вражеских». Своих пропускать, чужих не пущать. Например, если ваш фаерволл сообщает вам, что некто хочет установить соединение с каким-либо портом вашего компьютера. Разрешить или запретить?

Ну и самое главное — эти знания крайне полезны при общении с техподдержкой.

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

135-139 — эти порты используются Windows для доступа к общим ресурсам компьютера — папкам, принтерам. Не открывайте эти порты наружу, т.е. в районную локальную сеть и Интернет. Их следует закрыть фаерволлом. Также если в локальной сети вы не видите ничего в сетевом окружении или вас не видят, то вероятно это связано с тем, что фаерволл заблокировал эти порты. Таким образом для локальной сети эти порты должны быть открыты, а для Интернета закрыты.

21 — порт FTP сервера.

25 — порт почтового SMTP сервера. Через него ваш почтовый клиент отправляет письма. IP адрес SMTP сервера и его порт (25-й) следует указать в настройках вашего почтового клиента.

110 — порт POP3 сервера. Через него ваш почтовый клиент забирает письма из вашего почтового ящика. IP адрес POP3 сервера и его порт (110-й) также следует указать в настройках вашего почтового клиента.

80 — порт WEB-сервера.

3128, 8080 — прокси-серверы (настраиваются в параметрах браузера).


Несколько специальных IP адресов:

127.0.0.1 — это localhost, адрес локальной системы, т.е. локальный адрес вашего компьютера.
0.0.0.0 - так обозначаются все IP-адреса.
192.168.xxx.xxx — адреса, которые можно произвольно использовать в локальных сетях, в глобальной сети Интернет они не используются. Они уникальны только в рамках локальной сети. Адреса из этого диапазона вы можете использовать по своему усмотрению, например, для построения домашней или офисной сети.

Что такое маска подсети и шлюз по умолчанию (роутер, маршрутизатор)?

(Эти параметры задаются в настройках сетевых подключений).

Все просто. Компьютеры объединяются в локальные сети. В локальной сети компьютеры напрямую «видят» только друг друга. Локальные сети соединяются друг с другом через шлюзы (роутеры, маршрутизаторы). Маска подсети предназначена для определения — принадлежит ли компьютер-получатель к этой же локальной сети или нет. Если компьютер-получатель принадлежит этой же сети, что и компьютер-отправитель, то пакет передается ему напрямую, в противном случае пакет отправляется на шлюз по умолчанию, который далее, по известным ему маршрутам, передает пакет в другую  сеть, т.е. в другое почтовое отделение (по аналогии с советской почтой).

Напоследок рассмотрим что же означают непонятные термины:

TCP/IP — это название набора сетевых протоколов. На самом деле передаваемый пакет проходит несколько уровней. (Как на почте: сначала вы пишете писмо, потом помещаете в конверт с адресом, затем на почте на нем ставится штамп и т.д.).

IP протокол — это протокол так называемого сетевого уровня. Задача этого уровня — доставка ip-пакетов от компьютера отправителя к компьютеру получателю. По-мимо собственно данных, пакеты этого уровня имеют ip-адрес отправителя и ip-адрес получателя. Номера портов на сетевом уровне не используются. Какому порту, т.е. приложению адресован этот пакет, был ли этот пакет доставлен или был потерян, на этом уровне неизвестно — это не его задача, это задача транспортного уровня.

TCP и UDP — это протоколы так называемого транспортного уровня. Транспортный уровень находится над сетевым. На этом уровне к пакету добавляется порт отправителя и порт получателя.

TCP — это протокол с установлением соединения и с гарантированной доставкой пакетов. Сначала производится обмен специальными пакетами для установления соединения, происходит что-то вроде рукопожатия (-Привет. -Привет. -Поболтаем? -Давай.). Далее по этому соединению туда и обратно посылаются пакеты (идет беседа), причем с проверкой, дошел ли пакет до получателя. Если пакет не дошел, то он посылается повторно («повтори, не расслышал»).

UDP — это протокол без установления соединения и с негарантированной доставкой пакетов. (Типа: крикнул что-нибудь, а услышат тебя или нет — неважно).

Над транспортным уровнем находится прикладной уровень. На этом уровне работают такие протоколы, как httpftp и пр. Например HTTP и FTP — используют надежный протокол TCP, а DNS-сервер работает через ненадежный протокол UDP.

Как посмотреть текущие соединения?

Текущие соединения можно посмотреть с помощью команды

netstat -an

(параметр n указывает выводить IP адреса вместо доменных имен).

Запускается эта команда следующим образом:

«Пуск» — «Выполнить» — набираем cmd — «Ок». В появившейся консоли (черное окно) набираем команду netstat -an и жмем <Enter>. Результатом будет список установленных соединений между сокетами нашего компьютера и удаленных узлов.

Например получаем:

Активные подключения
ИмяЛокальный адресВнешний адресСостояние
TCP0.0.0.0:1350.0.0.0:0LISTENING
TCP91.76.65.216:1390.0.0.0:0LISTENING
TCP91.76.65.216:1719212.58.226.20:80ESTABLISHED
TCP91.76.65.216:1720212.58.226.20:80ESTABLISHED
TCP91.76.65.216:1723212.58.227.138:80CLOSE_WAIT
TCP91.76.65.216:1724212.58.226.8:80ESTABLISHED
...

В этом примере 0.0.0.0:135 — означает, что наш компьютер на всех своих IP адресах слушает (LISTENING) 135-й порт и готов принимать на него соединения от кого угодно (0.0.0.0:0) по протоколу TCP.

91.76.65.216:139 — наш компьютер слушает 139-й порт на своем IP-адресе 91.76.65.216.

Третья строка означает, что сейчас установлено (ESTABLISHED) соединение между нашей машиной (91.76.65.216:1719) и удаленной (212.58.226.20:80). Порт 80 означает, что наша машина обратилась с запросом к веб-серверу (у меня, действительно, открыты страницы в браузере).

В следующих статьях мы рассмотрим, как применять эти знания, например общаясь с техподдержкой. 

Модель стека протоколов TCP/IP и ее особенности. Уровни модели TCP/IP и принципы их работы.

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать основы работы компьютерных сетей, напомню, что эти записи основаны на программе Cisco ICND1 и помогут вам подготовиться к экзаменам CCENT/CCNA. Продолжаем разговор об эталонных моделях и на этот раз мы рассмотрим модель, которая была разработана путем практических наработок, эта модель называется модель стека протоколов TCP/IP, она похожа на модель OSI 7, но имеются и свои отличия, которые довольно значительны и их стоит обсудить, а также обозначить.

Помимо разбора самой модели TCP/IP в общем и целом, а также каждого уровня этой модели в отдельности, которых кстати четыре, мы сделаем сравнение эталонной модели OSI 7 и модели стека протоколов TCP/IP, чтобы понять какими недостатками и преимуществами обладают эти концепции передачи данных, в завершении мы выведем компромиссную модель передачи данных, которая будет включать в себя преимущества обеих упомянутых концепций.

Перед началом я хотел бы вам напомнить, что ознакомиться с опубликованными материалами первой части нашего курса можно по ссылке: «Основы взаимодействия в компьютерных сетях».

1.15.1 Введение

Содержание статьи:

Ранее мы рассмотрели модель OSI 7 и уделили особое внимание той ее части, за которую отвечает сетевой инженер. Также в блоге есть отдельная публикация, где эталонная модель сетевого взаимодействия рассмотрена более подробно. Мы отмечали, что модель OSI 7 была разработана теоретиками и имеет огромное количество сложных протоколов, которые так и не были реализованы на практике.

Давайте теперь взглянем на модель, которая была разработана практиками и протоколы которой применяются в реальных компьютерных сетях, эта модель называется модель стека протоколов TCP/IP, я уверен, что эти протоколы вы уже слышали и каждый день ими пользуетесь, даже не зная того. До этих протоколов мы еще доберемся, сейчас рассмотрим саму модель.

1.15.2 Общий принцип работы модели стека протоколов TCP/IP

Общий принцип работы модели стека протоколов TCP/IP очень похож на принцип работы модели OSI 7, разница только в количестве уровней и их функционале. Думаю, что не будет лишним отметить следующее (тут многие могут со мной согласиться): модель OSI 7 более полно описывает взаимодействие компьютерной сети с точки зрения логики ее работы, но ее протоколы абсолютно не прижились в современных реалиях, а модель стека протоколов TCP/IP описывает компьютерную сеть не так полно, зато ее протоколы используются повсеместно.

Вообще модель TCP/IP более удобна для сетевого инженера, здесь более четко описаны его границы ответственности. Давайте посмотрим на структуру модели TCP/IP, которая показана на Рисунке 1.15.1.

Рисунок 1.15.1 Модель стека протоколов TCP/IP

Как видим, отличие модели TCP/IP от OSI 7 заключается в количестве уровней, у эталонной модели их семь, в модели стека протоколов их четыре. В модели TCP/IP объединены первых два уровня модели OSI 7 (канальный и физический), здесь первый уровень называется уровень доступа к сети или канальный уровень. На уровне доступа к сети в модели сетка протоколов TCP/IP работают такие технологии и протоколы как: Ethernet, который есть практически в каждой локальной сети, IEEE 802.11 (Wi-Fi), PPP, в общем и целом на первом уровне модели стека протоколов TCP/IP реализуется функционал физического и канального уровней модели OSI 7.

Второй уровень модели TCP/IP соответствует третьему уровню модели OSI 7, в разных источниках вы можете встретить разные названия третьего уровня: уровень сети Интернет, сетевой уровень, межсетевой уровень. Можно сказать, что это основной и самый интересный для сетевого инженера уровень. Так как на этом уровне определяется логическая адресация узлов сети Интернет и, по сути, этот уровень является конечным для сетевого оборудования, за взаимодействие компьютеров на более высоких уровнях уже отвечают конечные устройства: клиентское и серверное оборудование.

Третий уровень модели TCP/IP имеет такое же название, как и в модели OSI – Транспортный уровень, правда в модели OSI этот уровень в порядке нумерации идет четвертым. Транспортный уровень отвечает за надёжность передачи для конечных устройств поверх ненадежной компьютерной сети, в которой в любой момент могут возникать самые разные проблемы. К тому же транспортный уровень помогает различать компьютерам следующее: какой трафик какое приложение генерирует и какому приложению предназначены те или иные пакеты, это возможно благодаря сокетам. На транспортном уровне для нас будут интересны два протокола: TCP, который обеспечивает надежную передачу с установкой соединения, этот протокол используется для передачи данных типа текст, файлов и так далее, а также протокол UDP, этот протокол без установки соединения и используется он для передачи данных в системах реального времени: аудио и видео связь. Про работу служб с установлением соединения и без вы можете узнать из записи, опубликованной ранее.

Ну а на самом верху модели TCP/IP находится уровень приложений или прикладной уровень, который отвечает за взаимодействие с конечным пользователем. Этот уровень модели TCP/IP включает в себя сразу три уровня модели OSI 7 (сеансовый, представительский и прикладной уровни), что на самом деле очень удобно как для программистов и разработчиков, так и для сетевых инженеров. Программист может писать приложения, не задумываясь об уровнях, сосредоточившись на своих абстракциях, а сетевому инженеру многие вещи верхних уровней просто неинтересны, но об этом чуть позже.

1.15.3 Первый уровень модели TCP/IP или уровень доступа к сети

Первый уровень – это фундамент компьютерной сети, поверх которого строится вся логика взаимодействия. Пожалуй, основной недостаток модели стека протоколов TCP/IP заключается в том, что физический и канальный уровень модели OSI здесь объединены в один под названием уровень доступа к сети или канальный уровень. На мой взгляд, нужно отделять физические процессы, происходящие на первом уровне от логики, которая реализована в канале связи на втором уровне. Хотя тут могут быть возражения в следующем ключе: такие популярные технологии как Ethernet и IEEE 802.11 в контексте модели OSI 7 работают на двух уровнях (канальном и физическом), тогда как в контексте модели TCP/IP эти технологии реализуют свой функционал на одном уровне – уровне доступа.

Итак, на уровне доступа модели TCP/IP решаются физические вопросы, связанные с передачей сигнала в различных средах:

  • максимальный и минимальный допустимые уровни сигнала в среде передачи данных: если с минимальным все более-менее очевидно, то с максимальным немного поясню: с усилением полезного сигнала усиливаются и помехи;
  • какой уровень сигнала нужно принимать за логический ноль (логический ноль – это не отсутствие сигнала), а какой уровень сигнала будет считаться логической единицей;
  • на физическом уровне определяются технические и конструктивные требования к среде передачи данных, например, если передача по медной линии, то тут можно выделить сетевые интерфейсы типа RJ-45 и RJ-11 или, например, витая пара или коаксиальный кабель;
  • данные в чистом виде никогда не передаются по сети, по сети передаются два объединенных сигнала: полезный сигнал с данными (его еще называют модулирующий) и несущий сигнал, процесс объединения этих двух сигналов называется модуляцией, более подробно об этом читайте в книгах, указанных в самой первой теме.

На самом деле этот список можно было продолжать, но для темы нашего курса физический уровень не так важен, так как разработчики сетевого оборудования уже решили за нас все самые сложные аспекты, касающиеся физики передачи данных, нам лишь придется оперировать простыми параметрами, о которых мы поговорим, когда коснемся технологий Ethernet и Wi-Fi.

Уровень доступа к сети в модели TCP/IP включает в себя еще и функционал канального уровня эталонной модели. Собственно, разработчики модели TCP/IP считают канальные функции более важными, и они правы с точки зрения логики процесса передачи данных. Вообще на уровне доступа решается задача кодирования данных для их передачи по физической среде, также на этом уровне реализуется адресация, при помощи которой коммутаторы понимают: какому устройству какой кадр отправить, эти адреса называются мак-адресами, если говорить про Ethernet сети.

Вообще, если говорить про названия единиц передачи данных на уровне доступа в модели TCP/IP, то здесь используются кадры (общую информацию о единицах измерения в компьютерной сети вы можете получить из этой публикации), которые получаются путем логического объединения битов в последовательности. Например, если говорить про Ethernet, то его заголовок, как минимум, будет содержать мак-адрес назначения, мак-адрес источника, тип вышестоящего протокола, а также специальное поле для проверки целостности данных.

Можно выделить следующие протоколы и технологии, которые работают на канальном уровне модели TCP/IP: Ethernet, IEEE 802.11 WLAN, SLIP, Token Ring, ATM. Первым двум мы выделим по целой части, так как в локальных сетях вы будете чаще всего сталкиваться именно с ними.

Еще на канальном уровне реализуется механизм обнаружения и исправления ошибок при помощи специальных кодов, очень подробно про канальные коды рассказано в книге Бернарда Скляра «Цифровая связь», здесь мы на них не останавливаемся. Из физических устройств, работающих на уровне доступа к сети можно выделить (дополнительно можете почитать про основные физические компоненты компьютерной сети): усилители сигнала, преобразователи сигнала (SFP-модули, медиаконвертеры и т.д.), ретрансляторы, хабы, концентраторы, радио антенны, а также коммутаторы уровня L2, которые будет представлять для нас наибольший интерес, так как их можно и нужно настраивать и у них есть различные по своей полезности механизмы для защиты сети и обеспечения надежности передачи данных.

1.15.4 Второй уровень или уровень сети Интернет

Второй уровень модели TCP/IP называется уровнем сети Интернет, сетевым или межсетевым уровнем. Это один из самых важных уровней для сетевого инженера, так как именно здесь работает протокол IP, отвечающий за логическую адресацию в компьютерных сетях и в сети Интернет, если говорить о частностях. Непосредственно протоколу IP мы уделим целых две части, сначала мы поговорим про версию IPv4, а затем разберемся с версией протокола IPv6. Также на этом уровне работают протоколы динамической маршрутизации, в этом курсе мы разберемся с протоколом RIP, который очень прост, но уже практически нигде не используется. А если будет продолжение, то мы еще будем разбираться с такими замечательными протоколами динамической маршрутизации, как OSPF и EIGRP.

Также на сетевом уровне модели TCP/IP работает такой протокол как NAT, отвечающий за магию превращения (трансляцию) частных IP-адресов в публичные, которые маршрутизируются в сети Интернет. Вообще, этот уровень разрабатывался для того, чтобы появилась возможность взаимодействия между двумя независимыми сетями. Основным физическим устройством уровня сети Интернет является маршрутизатор, который определяет куда направить пакет по IP-адресу, находящемуся в заголовке IP-пакета, для этого маршрутизатор использует маски, а также в этом ему помогают протоколы динамической маршрутизации, при помощи которых один роутер рассказывает о известных ему IP-адресах другому роутеру.

Вообще, как я уже говорил, мы будем разбираться с протоколом IP и IP-адресами в дальнейшем, сейчас же стоит отметить, что есть так называемый мультикаст трафик и специальные IP-адреса, если нужен пример использования, то это IPTV (вот здесь вы можете немного узнать о видах сетевого взаимодействия и сетевого трафика). Так вот для работы с мультикаст IP-адресами используются такие протоколы как IGMP и PIM, которые мы не будем затрагивать в рамках этого трека, но упомянуть о них стоит. Вообще, протоколов сетевого уровня достаточно много, самые важные для нас на данном этапе мы уже перечислили, однако не упомянули протокол ARP, который помогает определить мак-адрес по известному IP-адресу, этот протокол работает между канальным и сетевым уровнем.

На межсетевом уровне единица измерения данных или PDU называется пакетом, хотя об этом вы уже догадались, когда я использовал слово IP-пакет. При этом структура заголовка IP-пакета в IPv4 достаточно сильно отличается от структуры пакета в IPv6, как и сами IP-адреса этих протоколов.

Стоит еще добавить, что настройки, производимые на сетевом уровне модели TCP/IP влияют на логику работу компьютерной сети, то есть на ее логическую топологию, в то время как действия выполняемые на первом уровне влияют на физическую топологию компьютерной сети.

1.15.5 Третий или транспортный уровень стека протоколов TCP/IP

Транспортный уровень в современных компьютерных сетях в сущности представлен двумя протоколами: TCP и UDP. Первый большой и толстый, в основном используется для передачи текстовых данных и файлов по сети, второй маленький, тонкий и очень простой и используется для передачи аудио и видео данных по сети. У протокола TCP есть механизм повторной передачи битых или потерянных данных, у UDP такого механизма нет. Принципиальных отличий у этих двух протоколов много, но самое важное отличие заключается в том, что у TCP есть механизм установки соединения, а вот у UDP такого механизма нет.

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

Если говорить про протокол TCP, то данные передаваемые по сети при помощи этого протокола называются сегментами, а вот у данных, передаваемых по сети при помощи протокола UDP имеется другое название – датаграммы/дейтаграммы, кому как удобно, второй вариант я использую чаще. Транспортный уровень гарантирует целостность и правильность поступления данных на конечных устройствах, а также помогает компьютерам разобраться кому какие данные принадлежат, работает это примерно так (смотрите на Рисунок 1.15.2): какому-либо приложению назначается определенный TCP/UDP порт или же этот порт генерируется динамически, допустим со стороны клиента этот порт был сгенерирован динамически, а со стороны серверов порт был задан разработчиками или же системным администратором вручную (если интересно, то вот здесь описан принцип взаимодействия клиент-сервер).

Рисунок 1.15.2 Сильно упрощенная схема взаимодействия на транспортном уровне

Итак, получаем, что у клиентского ПК IP-адрес: 192.168.2.3, а также клиентский ПК выдал клиентскому приложению порт с номером 23678 для установки соединения с первым сервером (пусть приложением будет браузер), а для установки со вторым сервером браузер получил порт 23698. Клиентский ПК делает запросы к веб-серверам, находящимся в одной сети с клиентом: у первого сервера IP-адрес: 192.168.2.8, а у второго: 192.168.2.12, при этом порт серверного приложения как в первом, так и во втором случае одинаковый – 80, также хочу обратить внимание на то, что клиентский ПК сообщает серверам разные порты, на которые нужно слать ответы. Таким образом, если клиентский компьютер хочет сделать запрос к первому серверу, то он использует примерно следующую конструкцию для запроса: 192.168.2.8:80, это означает, что запрос был послан машине с IP-адресом 192.168.2.8 на 80 порт, сервер же пошлет ответ, используя вот такую конструкцию 192.168.2.3:23678. Если же запрос идет на 192.168.2.12:80, то ответ будет передан на 192.168.2.3:23698.

Таким образом происходит разделение трафика и компьютер не путается. Вообще, это описание предельно упрощено, более подробно мы будем говорить о протоколах транспортного уровня в отдельной части, так как эта тема довольно большая и требует отдельного разговора, кстати сказать, в курсах Cisco ICND1 и ICND2 достаточно мало времени уделено транспортному уровню. Здесь же стоит добавить что комбинация IP-адрес + порт транспортного уровня обычно называется сокетом, при этом не имеет значения протокол транспортного уровня (TCP или UDP).

За работу транспортного уровня отвечает компьютер и его операционная система или же специальная сетевая библиотека на этом компьютере, к которой может обращаться любое приложение, желающее передавать или получать данные.

1.15.6 Четвертый уровень или уровень приложений

Четвертый уровень модели TCP/IP представляет наименьший интерес для сетевого инженера, этот уровень создают и обслуживают: программисты, системные администраторы, devops-инженеры, хотя на уровне приложений есть несколько протоколов, которые важны и нужны сетевому инженеру. Вообще, основная задача прикладного уровня заключается в том, чтобы предоставить пользователю удобный интерфейс для взаимодействия с компьютерами и компьютерными сетями, но это если говорить коротко.

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

  • DHCP – протокол, позволяющий динамически выдавать клиентским машинам IP-адреса и другие данные для подключения к сети;
  • DNS – этот протокол придумали люди с дырявой памятью, которые не хотели запоминать IP-адреса, DNS позволяет преобразовывать IP-адреса в доменные имена сайтов и наоборот, для практики можете разобраться с командой nslookup;
  • SNMP – протокол, который используется во всех системах управления и мониторинга компьютерных сетей;
  • SSH – протокол для безопасного удаленного управления, при использовании SSH данные шифруются;
  • Telnet – еще один протокол удаленного управления, этот протокол реализует простой текстовый сетевой интерфейс.

Вообще этот список можно продолжить, но пока этого нам достаточно. В рамках курса мы разберемся как подключаться к коммутаторам и маршрутизаторам при помощи протоколов Telnet и SSH, научимся управлять соединениями и его параметрами, также мы немного разберемся с протоколами DHCP и DNS, возможно, в дальнейшем знакомство будет продолжено, а вот протокол SNMP мы трогать не будем.

Также стоит отметить следующие протоколы, относящиеся к прикладному уровню модели стека протоколов TCP/IP: RDP для удаленного управления компьютером, SMPT, IMAP, POP3 это всё почтовые протоколы для реализации разного функционала, FTP и SFTP это протоколы для передачи файлов по сети, первый использует протокол TCP, а второй более простой использует UDP.

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

1.15.7 Сравнение моделей OSI 7 и TCP/IP, а также поиск компромисса

Прежде чем перейти к сравнению моделей OSI 7 и TCP/IP, нам следует сказать, что модель стека протоколов TCP/IP использовалась для создания сети ARPANET, которая спустя годы превратилась в тот Интернет, которым мы пользуемся, сеть ARPANET – была исследовательской сетью, финансируемой министерством обороны США, эта сеть объединила сотни университетов и правительственных зданий в единую систему передачи данных при помощи телефонных линий, но с развитием технологий появилась спутниковая связь, радиосвязь, связь при помощи оптических линий и появились проблемы с передачей данных во всем этом зоопарке, разработка моделей передачи данных должна была решить возникшие проблемы и в принципе задача была решена.

Давайте же теперь попробуем сравнить эталонную модель сетевого взаимодействия OSI 7 с моделью стека протоколов TCP/IP и посмотрим, чем практическая модель отличается от теоретической. Для начала обратите внимание на Рисунок 1.15.3.

Рисунок 1.15.3 Сравнение эталонных моделей передачи данных TCP/IP и OSI 7

Слева показана эталонная модель сетевого взаимодействия, а справа вы видите модель стека протоколов TCP/IP. Сначала очевидные вещи: физический и канальный уровень модели OSI 7 соответствует уровню доступа к сети в модели TCP/IP, сетевой и транспортный уровень у обеих моделей совпадают, а вот три верхних уровня модели OSI соответствуют прикладному уровню модели TCP/IP.

Сразу отметим, что функциональность уровней этих моделей во многом схожа, а вот протоколы двух этих моделей очень разнятся, стоит заметить, что протоколы модели OSI 7 так и не были реализованы или же не получили широкого практического применения, поэтому их мы не упоминаем. Вообще, данной теме люди посвящают целые книги, мы же попробуем уложиться побыстрее.

В основе модели OSI 7 лежат три важных объекта: протокол, интерфейс и служба, модель OSI 7 четко выделяет эти три концепции и подчеркивает, что это совершенно разные вещи. Сервис или служба определяют то, что именно делает тот или иной уровень, но он никак не описывает каким образом это все происходит, другими словами сервис описывает услугу, которую нижележащий уровень предоставляет вышестоящему уровню, но он не говорит как это делается и как вообще третий уровень получает доступа ко второму, а второй к первому.

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

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

А вот в первоначальном виде модели стека протоколов TCP/IP не было таких четких границ между тремя вышеописанными сущностями, поэтому реализация протоколов здесь скрыта хуже, чем в модели OSI 7, да и замена одного протокола на другой может происходить более болезненно, чем в модели OSI 7, в общем, на практике не все так гладко.

Еще одним важны отличием моделей TCP/IP и OSI 7 является то, что эталонная модель OSI 7 была разработана раньше, чем ее протоколы появились на бумаге. С одной стороны, это говорит про универсальность модели передачи данных, но с другой стороны: универсальные вещи хуже решают конкретные задачи. Например, простым кухонным ножом можно открыть банку сгущенки, но это гораздо удобнее сделать специальным консервным ножом. Отсюда и основные проблемы эталонной модели: у разработчиков модели OSI не было четкого понимания того, какие функции на каком уровне должны быть реализованы.

Также модель OSI изначально не была рассчитана на то, что когда-нибудь появятся широковещательные сети. Передача данных в сетях, построенных на принципах модели OSI 7, велась от узла к узлу, с вероятностью 99% ваша домашняя сеть и сеть вашего поставщика услуг доступа в Интернет широковещательная. Поэтому разработчикам пришлось вносить коррективы, добавив новый подуровень в модель OSI. Городульки в модели OSI не закончились на канальном уровне, когда на основе модели OSI 7 начали реализовывать первые компьютерные сети, оказалось, что существующие протоколы не соответствуют спецификациям служб, поэтому в модель были добавлены дополнительные подуровни для устранения несоответствия. И в заключении: при разработке модели OSI 7 не был учтен момент интеграции и объединения нескольких небольших сетей в одну большую, предполагалось, что в каждой стране будет одна большая единая сеть, находящаяся под управлением государства.

В TCP/IP все вышло ровным счетом наоборот: сначала были придуманы и реализованы протоколы этой модели, а затем появилась необходимость в том, чтобы создать модель, которая описывает сетевое взаимодействие с использованием этих протоколов. Таким образом протоколы модели стека TCP/IP четко соответствуют уровням и функциям этих уровней. Единственный минус, этот минус не такой значительный для современного мира, заключается в том, что модель стека протоколов TCP/IP не соответствует никаким другим моделям. Минус незначительный, так как большинство компьютерных сетей построены на основе модели TCP/IP и ее протоколов.

Еще одно важное отличие моделей TCP/IP и OSI 7 кроется на сетевом и транспортном уровнях. Модель TCP/IP на сетевом уровне реализуется связь без установления соединения при помощи протокола IP, а на транспортном уровне предлагает два протокола: UPD и TCP. А вот модель OSI 7 предлагает инженерам выбор на сетевом уровне: можно выбрать связь с установлением соединения или без него, а на транспортном уровне есть один протокол, который поддерживает связь только с установлением соединения.

Можно выделить четыре основных пункта, из-за которых критикуют эталонную модель сетевого взаимодействия:

  1. Несвоевременность.
  2. Неудачная технология.
  3. Неудачная реализация.
  4. Неудачная политика распространения.

Этим мы и ограничимся и перейдем к основным недостаткам модели TCP/IP. Во-первых, модель стека протоколов TCP/IP не проводит четких границ между службами, интерфейсами и протоколами, поэтому в модель TCP/IP не всегда легко вписать новые протоколы и технологии. Второй недостаток заключается в том, что при помощи модели TCP/IP можно описать не все сети и не все технологии, например, вы не сможете достаточно полно описать технологию Bluetooth при помощи модели TCP/IP.

Канальный уровень модели TCP/IP на самом деле никакой не уровень и всё, что было описано выше про канальный уровень модели TCP/IP в большей степени подходит для физического и уровня передачи данных модели OSI 7, а не для первого уровня модели TCP/IP. На самом деле канальный уровень модели TCP/IP – это даже не уровень, а интерфейс, позволяющий взаимодействовать сетевому уровню с физической средой передачи данных из этого следует и то, что здесь нет различия между физическим уровнем и канальной логикой, хотя это абсолютно разные вещи.

Итак, из всех вышеописанных недостатков модели TCP/IP для инженеров, обеспечивающих передачу данных по сети, самым важным недостатком является то, что фундаментальный, то есть первый уровень этой модели вовсе никакой не уровень, а интерфейс, а также то, что нет деления на физику и канальную логику. Исходя из этого, а также из того, что модель TCP/IP используется для построения большинства компьютерных сетей, мы можем сделать свою компромиссную модель, которая устранит вышеописанный недостаток и будет удобной для сетевого инженера, эта модель показана на Рисунке 1.15.4.

Рисунок 1.15.4 Компромиссная модель сетевого взаимодействия

Итак, эта модель разделяет уровень доступа к сети на два уровня: физический уровень, описывающий физические параметры среды передачи данных и ее свойства, и канальный уровень, который призван решать задачу объединения бит в кадры, логическое деление ресурсов физической среды, объединение нескольких компьютеров в сеть и надежность передачи данных. Естественно, что эта модель в качестве протоколов должна использовать протоколы модели TCP/IP.

Ее сетевой уровень должен решать задачи объединения нескольких небольших сетей в одну большую. А транспортный уровень должен увеличивать надежность передачи данных по сети, организуя туннельное соединение между конечными участниками обмена данных. Ну а на самом верхнем уровне решаются задачи взаимодействия пользователей с ПК и компьютерной сетью.

1.15.8 Выводы

Подводя итог разговору у модели передачи данных, которая называется модель стека протоколов TCP/IP следует отметить, что в отличие от модели OSI 7, данная модель сформировалась уже после того, как были разработаны и введены в реальный мир ее протоколы и на данные момент большинство компьютерных сетей работают именно по модели стека протоколов TCP/IP. У этой модели есть два минуса: первый заключается в том, что здесь нет четкой границы между протоколом и службой, вторым недостатком является то, что в модели TCP/IP нет явного деления на канальный и физический уровень, здесь канальный уровень представляет собой интерфейс между сетевым уровнем и средой передачи данных.

Второй минус легко исправить самостоятельно, выработав для себя компромиссную модель передачи данных, где есть деление на физический и канальный уровень. Также стоит сказать, что для сетевого инженера наличие на верху модели TCP/IP только прикладного уровня – это скорее плюс, чем минус, формально говоря, в задачи сетевого инженера не входит настройка пользовательских приложений, работающих с сетью, это должны делать системные администраторы, задача сетевого инженера заключает в том, чтобы обеспечить канал связи между точкой А и Б, то есть выполнить необходимые настройки на оборудование, которое работает на уровня от физического до транспортного, модель TCP/IP это демонстрирует четко.

Еще в этой теме мы разобрались с тем, что происходит на каждом из важных для нас уровней модели TCP/IP и посмотрели, что происходит с данными, когда они переходят с одного уровня на другой, нужно запомнить этот принцип, так как его мы уже увидим в действие, когда будем разговаривать о принципах работы роутеров, тогда мы увидим, что роутер, оперирующий IP-пакетами, для того чтобы до них добраться, распаковывает Ethernet кадр, а после обработки IP пакета роутер его упаковывает в кадр и отправляет дальше.

Подробное, простое описание протокола Modbus TCP с примерами команд

В этой статье вы узнаете о протоколе Modbus TCP, который является развитием протокола Modbus RTU. Англоязычная версия статьи доступна на ipc2u.com.

Оглавление:

Куда посылать команду Modbus TCP?

В сети Ethernet адресом устройства является его IP-адрес. Обычно устройства находятся в одной подсети, где IP адреса отличаются последними цифрами 192.168.1.20 при использовании самой распространённой маски подсети 255.255.255.0.

Интерфейсом является сеть Ethernet, протоколом передачи данных – TCP/IP.

Используемый TCP-порт: 502.

Наверх к оглавлению

Описание протокола Modbus TCP

Команда Modbus TCP состоит из части сообщения Modbus RTU и специального заголовка.

О Modbus RTU написано в этой статье.

Из сообщения Modbus RTU удаляется SlaveID адрес в начале и CRC контрольная сумма в конце, что образует PDU, Protocol Data Unit.

Ниже приведен пример запроса Modbus RTU для получения значения AO аналогового выхода (holding registers) из регистров от #40108 до 40110 с адресом устройства 17.

11 03 006B 0003 7687

11Адрес устройства SlaveID (17 = 11 hex)
03Функциональный код Function Code (читаем Analog Output Holding Registers)
006BАдрес первого регистра (40108-40001 = 107 =6B hex)
0003Количество требуемых регистров (чтение 3-х регистров с 40108 по 40110)
7687Контрольная сумма CRC

Отбрасываем адрес устройства SlaveID и контрольную сумму CRC и получаем PDU:

03 006B 0003

К началу получившегося сообщения PDU добавляется новый 7-байтовый заголовок, который называется MBAP Header (Modbus Application Header). Этот заголовок имеет следующие данные:

Transaction Identifier (Идентификатор транзакции): 2 байта устанавливаются Master, чтобы однозначно идентифицировать каждый запрос. Может быть любыми. Эти байты повторятся устройством Slave в ответе, поскольку ответы устройства Slave не всегда могут быть получены в том же порядке, что и запросы.

Protocol Identifier (Идентификатор протокола): 2 байта устанавливаются Master, всегда будут = 00 00, что соответствует протоколу Modbus.

Length (Длина): 2 байта устанавливаются Master, идентифицирующие число байтов в сообщении, которые следуют далее. Считается от Unit Identifier до конца сообщения.

Unit Identifier (Идентификатор блока или адрес устройства): 1 байт устанавливается Master. Повторяется устройством Slave для однозначной идентификации устройства Slave.

Итого получаем:

Modbus RTUSlave IDЗапросCRC
Modbus RTU1103 006B 00037687
Modbus TCP0001 0000 0006 1103 006B 0003
Modbus TCPMBAP HeaderPDU
Modbus TCPADU, Application Data Unit

Где:

0001Идентификатор транзакцииTransaction Identifier
0000Идентификатор протоколаProtocol Identifier
0006Длина (6 байтов идут следом)Message Length
11Адрес устройства (17 = 11 hex)Unit Identifier
03Функциональный код (читаем Analog Output Holding Registers)Function Code
006BАдрес первого регистра (40108-40001 = 107 =6B hex)Data Address of the first register
0003Количество требуемых регистров (чтение 3-х регистров с 40108 по 40110)The total number of registers

В ответе от Modbus TCP Slave устройства мы получим:

0001 0000 0009 11 03 06 022B 0064 007F

Где:

0001Идентификатор транзакцииTransaction Identifier
0000Идентификатор протоколаProtocol Identifier
0009Длина (9 байтов идут следом)Message Length
11Адрес устройства (17 = 11 hex)Unit Identifier
03Функциональный код (читаем Analog Output Holding Registers)Function Code
06Количество байт далее (6 байтов идут следом)Byte Count
02Значение старшего разряда регистра (02 hex)Register value Hi (AO0)
2BЗначение младшего разряда регистра (2B hex)Register value Lo (AO0)
00Значение старшего разряда регистра (00 hex)Register value Hi (AO1)
64Значение младшего разряда регистра (64 hex)Register value Lo (AO1)
00Значение старшего разряда регистра (00 hex)Register value Hi (AO2)
7FЗначение младшего разряда регистра (7F hex)Register value Lo (AO2)

Регистр аналогового выхода AO0 имеет значение 02 2B HEX или 555 в десятичной системе.

Регистр аналогового выхода АО1 имеет значение 00 64 HEX или 100 в десятичной системе.

Регистр аналогового выхода АО2 имеет значение 00 7F HEX или 127 в десятичной системе.

Наверх к оглавлению

Типы команд Modbus TCP

Приведем таблицу с кодами функций чтения и записи регистров Modbus TCP.

Код функцииЧто делает функцияТип значенияТип доступа
01 (0x01)Чтение DORead Coil StatusДискретноеЧтение
02 (0x02)Чтение DIRead Input StatusДискретноеЧтение
03 (0x03)Чтение AORead Holding Registers16 битноеЧтение
04 (0x04)Чтение AIRead Input Registers16 битноеЧтение
05 (0x05)Запись одного DOForce Single CoilДискретноеЗапись
06 (0x06)Запись одного AOPreset Single Register16 битноеЗапись
15 (0x0F)Запись нескольких DOForce Multiple CoilsДискретноеЗапись
16 (0x10)Запись нескольких AOPreset Multiple Registers16 битноеЗапись

Наверх к оглавлению

Как послать команду Modbus TCP на чтение дискретного вывода? Команда 0x01

Эта команда используется для чтения значений дискретных выходов DO.

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

Значения DO в ответе находятся в одном байте и соответствуют значению битов.

Значения битов определяются как 1 = ON и 0 = OFF.

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

Если запрашивалось меньше восьми значений DO, то оставшиеся биты в ответе будут заполнены нулями (в направлении от младшего к старшему байту). Поле Byte Count Количество байт далее указывает количество полных байтов данных в ответе.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
01Идентификатор транзакции01Идентификатор транзакции
0202
00Идентификатор протокола00Идентификатор протокола
0000
00Длина сообщения00Длина сообщения
0604
01Адрес устройства01Адрес устройства
01Функциональный код01Функциональный код
00Адрес первого регистра Hi байт01Количество байт далее
00Адрес первого регистра Lo байт02Значение регистра DO 0-1
00Количество регистров Hi байт
02Количество регистров Lo байт

Состояния выходов DO0-1 показаны как значения байта 02 hex, или в двоичной системе 0000 0010.

Значение DO1 будет вторым справа, а значение DO0 будет первым справа (младший бит).

Шесть остальных битов заполнены нулями до полного байта, т.к. их не запрашивали.

КаналыDO 1DO 0
Биты00000010
Hex02

Модули с дискретным выводом: ioLogik E1211, ET-7060, ADAM-6060

Наверх к оглавлению

Как послать команду Modbus TCP на чтение дискретного ввода? Команда 0x02

Эта команда используется для чтения значений дискретных входов DI.

Запрос и ответ для DI похож на запрос для DO.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
01Идентификатор транзакции01Идентификатор транзакции
0202
00Идентификатор протокола00Идентификатор протокола
0000
00Длина сообщения00Длина сообщения
0604
01Адрес устройства01Адрес устройства
02Функциональный код02Функциональный код
00Адрес первого регистра Hi байт01Количество байт далее
00Адрес первого регистра Lo байт03Значение регистра DI 0-1
00Количество регистров Hi байт
02Количество регистров Lo байт

Состояния выходов DI 0-1 показаны как значения байта 03 hex, или в двоичной системе 0000 0011.

Значение DI1 будет вторым справа, а значение DI0 будет первым справа (младший бит).

Шесть остальных битов заполнены нулями.

Модули с дискретным вводом: ioLogik E1210, ET-7053, ADAM-6050

Наверх к оглавлению

Как послать команду Modbus TCP на чтение аналогового вывода? Команда 0x03

Эта команда используется для чтения значений аналоговых выходов AO.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
01Идентификатор транзакции01Идентификатор транзакции
0202
00Идентификатор протокола00Идентификатор протокола
0000
00Длина сообщения00Длина сообщения
0607
01Адрес устройства01Адрес устройства
03Функциональный код03Функциональный код
00Адрес первого регистра Hi байт04Количество байт далее
00Адрес первого регистра Lo байт02Значение регистра Hi (AO0)
00Количество регистров Hi байт2BЗначение регистра Lo (AO0)
02Количество регистров Lo байт00Значение регистра Hi (AO1)
64Значение регистра Lo (AO1)

Состояния выхода AO0 показаны как значения байта 02 2B hex, или в десятичной системе 555.

Состояния выхода AO1 показаны как значения байта 00 64 hex, или в десятичной системе 100.

Модули с дискретным вводом: ioLogik E1210, ET-7053, ADAM-6050

Наверх к оглавлению

Как послать команду Modbus TCP на чтение аналогового ввода? Команда 0x04

Эта команда используется для чтения значений аналоговых входов AI.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
01Идентификатор транзакции01Идентификатор транзакции
0202
00Идентификатор протокола00Идентификатор протокола
0000
00Длина сообщения00Длина сообщения
0607
01Адрес устройства01Адрес устройства
04Функциональный код04Функциональный код
00Адрес первого регистра Hi байт04Количество байт далее
00Адрес первого регистра Lo байт00Значение регистра Hi (AI0)
00Количество регистров Hi байт0AЗначение регистра Lo (AI0)
02Количество регистров Lo байт00Значение регистра Hi (AI1)
64Значение регистра Lo (AI1)

Состояния выхода AI0 показаны как значения байта 00 0A hex, или в десятичной системе 10.

Состояния выхода AI1 показаны как значения байта 00 64 hex, или в десятичной системе 100.

Модули с аналоговым вводом: ioLogik E1240, ET-7017-10, ADAM-6217

Наверх к оглавлению

Как послать команду Modbus TCP на запись дискретного вывода? Команда 0x05

Эта команда используется для записи одного значения дискретного выхода DO.

Значение FF 00 hex устанавливает выход в состояние включен ON.

Значение 00 00 hex устанавливает выход в состояние выключен OFF.

Все остальные значения недопустимы и не будут влиять на состояние выхода.

Нормальный ответ на такой запрос — это эхо (повтор запроса в ответе), возвращается после того, как состояние DO было изменено.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
01Идентификатор транзакции01Идентификатор транзакции
0202
00Идентификатор протокола00Идентификатор протокола
0000
00Длина сообщения00Длина сообщения
0606
01Адрес устройства01Адрес устройства
05Функциональный код05Функциональный код
00Адрес регистра Hi байт00Адрес регистра Hi байт
01Адрес регистра Lo байт01Адрес регистра Lo байт
FFЗначение Hi байтFFЗначение Hi байт
00Значение Lo байт00Значение Lo байт

Состояние выхода DO1 поменялось с выключен OFF на включен ON.

Модули с дискретным выводом: ioLogik E1211, ET-7060, ADAM-6060

Наверх к оглавлению

Как послать команду Modbus TCP на запись аналогового вывода? Команда 0x06

Эта команда используется для записи одного значения аналогового выхода AO.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
01Идентификатор транзакции01Идентификатор транзакции
0202
00Идентификатор протокола00Идентификатор протокола
0000
00Длина сообщения00Длина сообщения
0606
01Адрес устройства01Адрес устройства
06Функциональный код06Функциональный код
00Адрес регистра Hi байт00Адрес регистра Hi байт
01Адрес регистра Lo байт01Адрес регистра Lo байт
55Значение Hi байт55Значение Hi байт
FFЗначение Lo байтFFЗначение Lo байт

Состояние выхода AO0 поменялось на 55 FF hex, или в десятичной системе 22015.

Модули с аналоговым выводом: ioLogik E1241, ET-7028, ADAM-6224

Наверх к оглавлению

Как послать команду Modbus TCP на запись нескольких дискретных выводов? Команда 0x0F

Эта команда используется для записи нескольких значений дискретного выхода DO.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
01Идентификатор транзакции01Идентификатор транзакции
0202
00Идентификатор протокола00Идентификатор протокола
0000
00Длина сообщения00Длина сообщения
0806
01Адрес устройства01Адрес устройства
0FФункциональный код0FФункциональный код
00Адрес первого регистра Hi байт00Адрес первого регистра Hi байт
00Адрес первого регистра Lo байт00Адрес первого регистра Lo байт
00Количество регистров Hi байт00Кол-во записанных рег. Hi байт
02Количество регистров Lo байт02Кол-во записанных рег. Lo байт
01Количество байт далее
02Значение байт

Состояние выхода DO1 поменялось с выключен OFF на включен ON.

Состояние выхода DO0 осталось выключен OFF.

Модули с дискретным выводом: ioLogik E1211, ET-7060, ADAM-6060

Наверх к оглавлению

Как послать команду Modbus TCP на запись нескольких аналоговых выводов? Команда 0x10

Эта команда используется для записи нескольких значений аналогового выхода AO.

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
01Идентификатор транзакции01Идентификатор транзакции
0202
00Идентификатор протокола00Идентификатор протокола
0000
00Длина сообщения00Длина сообщения
0B06
01Адрес устройства01Адрес устройства
10Функциональный код10Функциональный код
00Адрес первого регистра Hi байт00Адрес первого регистра Hi байт
00Адрес первого регистра Lo байт00Адрес первого регистра Lo байт
00Количество регистров Hi байт00Кол-во записанных рег. Hi байт
02Количество регистров Lo байт02Кол-во записанных рег. Lo байт
04Количество байт далее
00Значение Hi AO0 байт
0AЗначение Lo AO0 байт
01Значение Hi AO1 байт
02Значение Lo AO1 байт

Состояние выхода AO0 поменялось на 00 0A hex, или в десятичной системе 10.

Состояние выхода AO1 поменялось на 01 02 hex, или в десятичной системе 258.

Модули с аналоговым выводом: ioLogik E1241, ET-7028, ADAM-6224

Наверх к оглавлению

Ошибки запроса Modbus TCP

Если после получения запроса устройство не может обработать его, то будет отослан ответ с кодом ошибки.

Ответ будет содержать измененный Функциональный код, его старший бит будет равен 1.

Пример:

БылоСтало
Функциональный код в запросеФункциональный код ошибки в ответе
01 (01 hex) 0000 0001129 (81 hex) 1000 0001
02 (02 hex) 0000 0010130 (82 hex) 1000 0010
03 (03 hex) 0000 0011131 (83 hex) 1000 0011
04 (04 hex) 0000 0100132 (84 hex) 1000 0100
05 (05 hex) 0000 0101133 (85 hex) 1000 0101
06 (06 hex) 0000 0110134 (86 hex) 1000 0110
15 (0F hex) 0000 1111143 (8F hex) 1000 1111
16 (10 hex) 0001 0000144 (90 hex) 1001 0000

Пример запроса и ответ с ошибкой:

БайтЗапросБайтОтвет
(Hex)Название поля(Hex)Название поля
01Идентификатор транзакции01Идентификатор транзакции
0202
00Идентификатор протокола00Идентификатор протокола
0000
00Длина сообщения00Длина сообщения
0603
0AАдрес устройства0AАдрес устройства
01Функциональный код81Функциональный код с измененным битом
04Адрес первого регистра Hi байт02Код ошибки
A1Адрес первого регистра Lo байт
00Количество регистров Hi байт
01Количество регистров Lo байт

Расшифровка кодов ошибок

01Принятый код функции не может быть обработан.
02Адрес данных, указанный в запросе, недоступен.
03Значение, содержащееся в поле данных запроса, является недопустимой величиной.
04Невосстанавливаемая ошибка имела место, пока ведомое устройство пыталось выполнить затребованное действие.
05Ведомое устройство приняло запрос и обрабатывает его, но это требует много времени. Этот ответ предохраняет ведущее устройство от генерации ошибки тайм-аута.
06Ведомое устройство занято обработкой команды. Ведущее устройство должно повторить сообщение позже, когда ведомое освободится.
07Ведомое устройство не может выполнить программную функцию, заданную в запросе. Этот код возвращается для не успешного программного запроса, использующего функции с номерами 13 или 14. Ведущее устройство должно запросить диагностическую информацию или информацию об ошибках от ведомого.
08Ведомое устройство при чтении расширенной памяти обнаружило ошибку паритета. Ведущее устройство может повторить запрос, но обычно в таких случаях требуется ремонт.
10
(0A hex)
Шлюз неправильно настроен или перегружен запросами.
11
(0B hex)
Slave устройства нет в сети или от него нет ответа.

Наверх к оглавлению

Программы для работы с протоколом Modbus TCP

Ниже представлены программы, которые помогут легко взаимодействовать с устройствами Modbus TCP.

Modbus Master Tool с поддержкой Modbus RTU, ASCII, TCP. Скачать

Modbus TCP client с поддержкой Modbus TCP. Скачать

Наверх к оглавлению

Оборудование с поддержкой протокола Modbus TCP

Наверх к оглавлению


За более подробной информацией обращайтесь к специалистам IPC2U по телефону: +7 (495) 232 0207 или по e-mail: [email protected]

Курс Harvard CS50 — Лекция: Протокол TCP/IP и HTTP

Внимание! Практически весь материал этой лекции был в видеолекции. Если вы всё хорошо усвоили, просто пробегитесь глазами и переходите дальше.

Несколько важных определений

TCP/IP — совокупность стандартов и правил, определяющих, как данные передаются по сети. Важной частью стандарта есть адреса и порты.

IP-адрес. Каждый компьютер в интернете или локальной сети обладает собственным уникальным адресом. Он состоит из четырёх чисел от 0 до 255, разделенных точкой (например, 192.168.0.1). Этот адрес определяет конкретное устройство адресата данных.

Порт — идентификатор, с помощью которого устройства определяют, данные какого типа содержатся в отправленных или принятых пакетах. Порт указывается через двоеточие после адреса устройства (например, 192.168.0.1:80).

Чаще всего вы будете видеть такие порты:

21: FTP, File Transer Protocol.
25: SMTP: Электронная почта.
53: DNS: Domain Name System (Это тот же IP-адрес, только записанный в буквенном виде).
80: HTTP: веб-страница.
443: HTTPS: защищенная веб-страница.

HTTP: Hyper Text Transfer Protocol

Если расшифровать и перевести с английского аббревиатуру HTTP, получим «Протокол передачи гипертекста». На деле HTTP представляет собой некий набор правил, описывающих, как нужно передавать и интерпретировать страницы в интернете.

Гипертекст — язык разметки и форматирования текста, широко используется в интернете. Гипертекст определяет правила, следуя которым оформляются веб-страницы не только с текстом, но со множеством разной информации: ссылками на другие страницы, картинками видеороликами, аудиозаписями и прочим. Любая веб-страница форматируется с помощью гипертекста. Интернет-браузеры, такие как Google Chrome или Apple Safari — это приложения, которые «переводят» гипертекст, преобразуя его в отформатированную веб-страницу, такую, какой вы привыкли её видеть.

Используя гипертекст можно создавать, например, таблички. А внизу картинки вы видите код, который формирует ссылку на веб-страничку.

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

Вот типичный HTTP-запрос:

На картинке:

GET — это метод запроса ресурса;
/ — URI (Uniform Resource Identifier, унифицированный идентификатор ресурса) запроса;
HTTP/1.1 — версия протокола;
User-Agent, Host и — имя поля;
curl/7.24.0, www.apple.com и — значение поля.

А вот — типичный HTTP-ответ

Где:

HTTP — код статуса ответа
1.2 200 OK — версия протокола
Server, Content-type, Content-Length и Connection — названия полей
Apache, text/html; charset=UTF-8, keep-alive — значения полей

Расшифровка протокола TCP / IP (2)

В первой части этого урока мы разложили фон информация, необходимая для изучения этого руководства Информация. В этом руководстве содержится фактическая разбивка содержимого пакетов и их значения. Этот тип информации низкого уровня TCP / IP будет позволит вам принимать более обоснованные решения, когда исследование сетевых проблем на уровне пакетов.

Если вы хотите прочитать другие руководства из этой серии, прочтите:

Ну, мы закончили первую часть с двумя пакетами, чтобы посмотреть в. Эти два пакета, как показано ниже, — это SYN . и SYN / ACK частей трехстороннего протокола TCP рукопожатие . ACK не входит в некоторые операционные системы оставят это и пойдут прямо в обмен данными.Начнем рвать наши пакеты!

00: 00: 03.700720 192.168.1.100.11955> 192.168.1.200.80: S [tcp sum ok] 365712315: 365712315 (0) выигрыш 32768 (ttl 63, id 59169, len 44)
0x0000 4500 002c e721 0000 3f06 4253 c0a8 0164 E ..,.! ..?. BS ….
0x0010 c0a8 01c8 2eb3 0050 15cc 53bb 0000 0000…1 … П..С …..
0x0020 6002 8000 30e0 0000 0204 0218 0000 `… 0 ………

00: 00: 03.715864 192.168.1.200.80> 192.168.1.100.11955: S [tcp sum ok] 2093803204: 2093803204 (0) ack 365712316 win 5840 (DF) (ttl 52, id 0, len 44)
0x0000 4500 002c 0000 4000 3406 f474 c0a8 01c8 E .., .. @.4..т … 1
0x0010 c0a8 0164 0050 2eb3 7ccc e6c4 15cc 53bc ….. P .. | ….. S.
0x0020 6012 16d0 32d2 0000 0204 05b4 0000 `… 2 ………

Для наших целей мы будем ссылаться на пакет SYN как пакет один отсюда и далее. Если вы интересно, SYN на самом деле означает синхронизировать, и SYN / ACK означает синхронизировать подтверждение.Начиная с первого пакета, мы двигайтесь слева направо до конца.

00:00: 03.700720

Вышеупомянутая метка времени пакет. У нас нормальный чч мм сс как видно, но у нас также есть шесть чисел после этого. Это означает что на этот раз с точностью до микросекунды . Довольно точно! Важно помнить вот что это не то время, когда пакет был отправлено на.Скорее это время, когда пакет был получен конечным компьютером. С другой стороны, это тот факт, что конечный компьютер может быть настроен для другого часового пояса, чем вы. Другими словами не автоматически предполагать, что время совпадает с вашим местным время.

192.168.1.100.11955

У нас есть исходный IP-адрес это инициирует общение с другим IP-адрес справа.После IP-адреса порт , который используется, или как мы должны называть это порт источника . Все порты выше 1024 являются вызвал эфемерных портов . Все порты ниже от 1024 и ниже, как я заметил немного ниже, называется зарезервированный диапазон . В любое время, когда ваш компьютер запускает сеанс с другим компьютер, ваш компьютер произвольно назначит эфемерный порт к этому сеансу .Этот временный порт останется постоянным во время сеанс . Исходный порт будет изменится только в том случае, если вы завершите сеанс и инициировать новый, в это время новый эфемерный порт будет назначен вашему новому сеансу .

>

Наш маленький символ выше обозначает направление разговор / сеанс исходит.Итак заостренный конец указывает пункт назначения в этом случае, и всегда в этом направлении. Это еще один полезный подсказка запомнить, кто на самом деле является источником, и конечный компьютер в потоке пакетов.

192.168.1.200.80

Итак, мы видим, что это IP-адрес. Вопрос: это IP-адрес исходного компьютера? я.д .: отправитель или адрес получателя? Ты можно принять как евангелие, что это IP-адрес адрес конечного компьютера . Это потому, что как упомянутый выше, он находится на острие направления символ. После IP-адреса пункта назначения компьютер — это порт назначения , используемый для этого тот самый компьютер. В данном случае у нас порт 80 , и мы, вероятно, можем с уверенностью предположить, что это веб-сервер какой-то на этом компьютере.Обратите внимание: порт 80 попадает в зарезервированный диапазон портов . Этот диапазон начинается с порта 0 и заканчивается на порту 1024. Не все порты в этом зарезервированном диапазоне имеют хорошо известные службы связанных с ними, но это называется зарезервированным диапазон тем не менее.

ю

Символ ASCII S, как показано выше, означает SYN , или, как мы теперь знаем, синхронизировать.Это означает, что это пакет — это самый первый шаг в нашем TCP / IP рукопожатие .

[сумма ОК]

Это означает Контрольная сумма TCP в порядке . На самом деле это означает, что когда исходный компьютер отправил из этого пакета, он выполнил математическую проверку на соответствие Заголовок TCP и придумал значение. Тогда это значение было хранится в самом заголовке TCP.Как только пункт назначения компьютер получил этот пакет, он, в свою очередь, также та же математическая проверка. Затем он подтвердил, что его значение было таким же, как и значение, которое он видит в заголовке TCP. В в данном случае это было так, следовательно, [tcp sum ok]. Были ли ценность отличается от того, что вы видели бы ошибку контрольной суммы сообщение, где это было вместо этого.

365712315: 365712315

Это довольно большое число, разделенное двоеточием, назвал порядковый номер TCP .Вы заметите в в нашем случае это то же значение, разделенное двоеточием. Это связано с тем, что нет данных обменен на данный момент. Были ли данные, и этот пакет был PSH / ACK вместо SYN пакет тогда значения будут разными с обеих сторон толстой кишки. Если быть точным, то было бы иначе точный объем данных, отправленных в этом пакете. Мы увидим пример того, что я имею в виду чуть позже.

(0)

Ноль, показанный выше, говорит нам, что нет. фактические данные отправляются в этом пакете, так как это SYN-пакет . Это не значит, что вы не удалось создать SYN-пакет и вставить некоторые данные в Это. Однако имейте в виду, что ваши данные будут проигнорированы как вы не завершили квитирование TCP / IP.Последнее примечание по сборке пакетов; имейте в виду, что у него есть ограничения, поскольку на что он может. Вы не могли реалистично смоделировать рукопожатие путем ручной обработки ваших пакетов.

выигрыш 32768

Теперь указанное выше обозначено как Размер окна или, как некоторые называют его, буфер приема . В значение, следующее за ним, измеряется в байтах, как и другие числовые значения.Это означает, что исходный компьютер может получить не более 32768 байт информация, прежде чем подтвердить пункт назначения компьютер, который обработал некоторые из них.

Если он получит больше без ACK от него, что означает, что он обработал определенный количество данных, затем те лишние байты, которые были отправлены просто попадает в ведро бит .В по сути они не будут храниться в приемном буфере приложения. Это хорошее время, чтобы указать что это значение обычно контролируется приложение в использовании. Например, это значение может быть Win Размер из Internet Explorer .

Я действительно не хочу оставлять вас в напряжении, но мы сломает статью в этом месте. В третьей части мы покроет оставшиеся показателей в пакете один .После этого мы войдем в море из шестнадцатеричный , который содержится в пакете. Вы можете быть удивленным тем, что содержится в этих шестнадцатеричных значений !

Если вы хотите прочитать другие руководства в этом серия прочтите:

О Don Parker
Don Parker, GCIA GCIH специализируется на обнаружение вторжений и обработка инцидентов. Он также пользовался ролью приглашенного докладчика в различных сетях конференции по безопасности, а также написание статей для различных онлайн- и печатные СМИ по вопросам компьютерной безопасности.Ты можешь свяжитесь с Доном Паркером по [email protected]

Краткий обзор модели TCP / IP, протоколов SSL / TLS / HTTPS и сертификатов SSL | Удай Хиварале | JsPoint

Есть три принципа безопасной связи. Шифрование данных , Целостность данных и Подлинность данных . Мы уже видели первые два. Подлинность данных означает, что данные поступают от объекта, с которым мы собираемся общаться.

Когда мы открываем google.com в нашем браузере, почему мы так уверены, что посредник не предоставляет нам плохой контент? Человек-посередине может использовать HTTP-сервер с криптографией с открытым и закрытым ключом, поэтому есть ли способ узнать, действительно ли наши данные отправляются на сервер google.com ?

Когда мы получаем доступ к https://google.com , наш браузер связывается с сервером Google с помощью подходящего протокола TLS. Сервер отвечает сертификатом SSL , который содержит открытый ключ сервера.

Этот SSL-сертификат особенный, хотя это не что иное, как некоторые двоичные данные. Этот сертификат SSL подписан цифровой подписью организацией под названием Certificate Authority ( CA ) с использованием собственного закрытого ключа .

Brower поставляется с предустановленными общедоступными сертификатами CA . Это сертификаты, которым браузер полностью доверяет, , даже вслепую. Существует два типа центров сертификации: Root CA и Intermediate CA . GlobalSign является одним из доверенных корневых центров сертификации .

Когда сервер google.com отправит сертификат SSL, он будет установлен в браузере и будет выглядеть, как показано ниже.

( google.com SSL-сертификат)

Из информации сертификата эмитента мы видим, что он был подписан службой доверия Google . Вы также можете увидеть информацию об открытом ключе сервера google.com в разделе Информация об открытом ключе .

Поскольку SSL-сертификат Google Trust Services уже был установлен в браузере, он мог проверить цифровую подпись, содержащуюся в сертификате SSL, отправленном сервером google.com . Если посредник отправит неправильный сертификат SSL, наш браузер будет жаловаться на это, поскольку он не подписан сертифицированным центром сертификации.

Вы также можете увидеть алгоритм подписи, используемый для создания цифровой подписи сертификата SSL. В приведенном выше примере алгоритм RSA используется в сочетании с SHA-256 для создания цифровой подписи сертификата.

💡 Даже если посредник отправит неправильный сертификат SSL, который действительно был подписан ЦС, браузер не примет его, поскольку он не будет содержать доменное имя веб-сайта, который мы пытаемся доступ (google.com). ЦС проверяет предысторию организации перед выдачей сертификата.

Если вам интересно, является ли Google Trust Services частью компании Google , то вы, вероятно, правы. Означает ли это, что он дискредитирует сертификаты SSL, подписанные ими в их собственных целях? Абсолютно не .

Google Trust Services — это промежуточный CA . Некоторые организации с кучей веб-сайтов и кучей денег, вероятно, не решатся ежедневно связываться с центром сертификации для подписания сертификата. Вместо этого они становятся промежуточным ЦС и просят корневой ЦС, такой как GlobalSign , сгенерировать для них сертификат.

Используя закрытый ключ этого подписанного сертификата (, который хранится закрытым от CA ), он может подписывать другие сертификаты SSL.Что нужно сделать браузерам, так это проверить родительский ЦС центра сертификации и проверить цифровую подпись.

Поднимаясь по лестнице до корневого CA , браузер может построить цепочку доверия. Вы можете увидеть это на скриншоте выше. GlobalSign явно является корневым центром сертификации google.com и родительским центром сертификации GTS CA .

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

( TLS 1.3 Handshake / источник: Wikimedia Commons )

Не все браузеры поставляются с предустановленными промежуточными сертификатами. Следовательно, вместо отправки только одного сертификата SSL сервер может отправить комплект сертификатов , который содержит собственный сертификат SSL и все промежуточные сертификаты.Только корневой CA должен быть доверенным для построения цепочки доверия.

Процесс создания сертификата

Вы не можете создать сертификат самостоятельно, это единственное правило. Вам нужно создать пару открытого и закрытого ключей и предоставить свой открытый ключ центру сертификации для подписания и генерации сертификата.

Однако стандартный процесс состоит в том, чтобы сначала создать файл закрытого ключа, который заканчивается расширением .key или .pem , и создать файл запроса на подпись сертификата, заканчивающийся на .csr расширение. Затем этот файл .csr отправляется в центр сертификации.

ЦС позаботится о процессе создания действительного и надежного сертификата. После прохождения CA CSR он проверит вашу организацию, а затем отправит файл сертификата с расширением .crt .

💡 Этот файл может содержать только один сертификат, запрашиваемый для определенного доменного имени, или набор сертификатов, который также включает промежуточные сертификаты.

Получив файл .cert и закрытый ключ, вы можете настроить свой сервер на использование этих файлов и обеспечение безопасного HTTP-соединения для пользователей, которые пытаются подключиться к вашему серверу с помощью HTTPS. Протокол .

Самозаверяющие сертификаты

Самозаверяющий сертификат, как вы можете понять по имени, подписан вами. Если вы являетесь промежуточным центром сертификации, то это процесс, которому вы будете следовать, чтобы продавать сертификаты SSL своим клиентам.

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

Если сертификат не принимается браузером, это не означает, что данные не шифруются. Вы можете абсолютно безопасно общаться с сервером, несмотря на некоторые красные флажки SSL. Но обычно этого делать не следует.

Если у вас есть самозаверяющий сертификат, вы можете установить этот сертификат в своей системе / браузере вручную ( как доверенный сертификат ), и браузер перестанет жаловаться.

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

Создание самозаверяющего сертификата

Протокол SSL / TLS использует формат сертификата X.509 , разработанный IETF . Чтобы сгенерировать сертификат SSL, мы собираемся использовать OpenSSL .

💡 OpenSSL — один из самых популярных наборов инструментов для связи TLS. Это также интерфейс командной строки (CLI) и инструментарий для создания сертификатов SSL, закрытых ключей, CSR и выполнения других видов криптографических операций.

Для начала нам понадобится файл закрытого ключа .key и файл запроса на подпись сертификата .csr . Мы собираемся использовать криптографию RSA для шифрования трафика на нашем сервере. Чтобы создать эти файлы, используйте команду ниже.

 $ openssl req -new -newkey rsa: 2048 -nodes -keyout thatisuday.key -out thatisuday.csr 

Приведенная выше команда генерирует файл thatisuday.key , который представляет собой RSA 2048-битный файл закрытого ключа и CSR в thatisuday.csr файл, который содержит соответствующий открытый ключ.

Эта команда запрашивает некоторую входную информацию о CSR , среди которых Общее имя является критическим. Это поле в основном сообщает CA о доменном имени, для которого должен быть сгенерирован сертификат.Вы также можете выбрать подстановочный сертификат .

( CSR Generation)

Теперь, когда у нас есть CSR, вместо того, чтобы отправлять его в CA, мы собираемся подписать его сами, используя наш собственный закрытый ключ.

 $ openssl x509 -req -days 365 -in thatisuday.csr -signkey thatisuday.key -out thatisuday.crt 

Приведенная выше команда создает самоподписанный файл сертификата thatisuday.crt , что также означает, что он не имеет корневого центра сертификации.

Я собираюсь создать простой сервер express для запуска HTTPS-сервера на Node.js. Вы можете следить за этой программой из фрагмента ниже.

(https://gist.github.com/thatisuday/01657d2dfcb0120935acab4da4b1f13a)

После запуска сервера с помощью команды node server.js вы можете перейти в браузер и получить доступ к thatisuday.com . Но перед этим сопоставьте thatisuday.com с адресом обратной связи IPV4 ( 127.0.0.1 ) в / etc / hosts .

(https://thatisuday.com)

Как видно из приведенного выше снимка экрана, браузер Safari не доверяет этому веб-сайту, потому что он не доверяет сертификату.Чтобы это работало, нам нужно установить этот сертификат в нашу систему и настроить его.

(Установить сертификат в MacOS)

Если дважды щелкнуть на файле сертификата или выполнить импорт в приложении Keychain Access , вы можете установить сертификат локально. Затем вы можете дважды щелкнуть сертификат, чтобы изменить его параметры доверия .

(Изменить параметры доверия сертификата в MacOS)

После завершения этого процесса браузер Safari сможет получить параметры доверия сертификата из локальной системы.После перезагрузки браузера веб-сайт должен начать нормально работать.

(https://thatisuday.com)

Как расшифровать обмен HTTPS с помощью Wireshark?

Это второй блог из серии из трех частей. Если вы пропустили «3 вещи, которые вы должны знать о трафике HTTPS, SSL или TLS с Wireshark», посетите сайт Lovemytool

.

Мост Интернет-трафик теперь зашифрован, и внутренние приложения также часто используют шифрование, основанное на Secure Socket Layer (SSL) или Transport Layer Безопасность (TLS), чтобы гарантировать их безопасность.Это делает анализ пакетов с использованием Wireshark сложнее, чем раньше.

Эта статья прояснит, что можно, а что нельзя расшифровать, и какая информация еще остается доступны вам, когда трафик SSL / TLS не может быть расшифрован.

Можно ли расшифровать трафик SSL / TLS с помощью Wireshark? Да и нет

Это зависит от используемая версия SSL / TLS. В некоторых случаях с этим справится Wireshark, в других случаев не будет. См. Ниже варианты.

Как расшифровать сеанс SSL / TLS с помощью Wireshark?

Некоторые TLS версии позволят вам расшифровать сеанс с помощью закрытого ключа сервера.

  1. Нагрузка закрытый ключ в Wireshark в формате PEM / PKCS.
    1. Перейдите в меню «Правка»> «Настройки». Откройте протоколы дерево и выберите SSL
    1. Откройте список ключей RSA, нажав на Edit
  • Вам будет предложено добавить следующее:
    • IP-адрес / подсеть сервера (ов)
    • Протокол, используемый для расшифрованных данных (например, HTTP если вы смотрите на HTTPS)
    • Путь для загрузки закрытого ключа RSA
    • Пароль: не используется для закрытого ключа, закодированного в PEM файлы, необходимые для PKCS

2.При условии что ваше устройство анализа видит настройку сеанса SSL / TLS, это будет способен расшифровать сеанс

Подробнее Подробную процедуру см. на этой странице в Wireshark: http://wiki.wireshark.org.

Работает ли он для всех соединений TLS? Нет !

Некоторые реализации TLS не позволит расшифровать трафик, в частности при использовании:

  • Диффи Шифры Hellmann (DHE)
  • Новый TLS 1.3 протокол

Расшифровка сеанс TLS возможен при соблюдении следующих условий:

  • Вы используете инфраструктуру открытых ключей, например RSA, которая основан на принципе закрытых / открытых ключей
  • Вы владеете закрытым ключом

У них есть был разработан для предотвращения атак типа «злоумышленник посередине», а это означает, что он будет никогда не будет возможно декодировать трафик HTTPS, пассивно получая его копию.

Итак, применимо ли это только к Wireshark?

№ Все устройства анализа, основанные на пассивном анализе трафика, столкнутся с теми же ограничениями.

Есть ли обходной путь?

Если только вы готовы изменить вашу инфраструктуру или точку захвата, есть обходного пути нет.

на с другой стороны, если некоторые устройства в вашей сети нарушают / проксируют сеансы SSL и Если вы хотите, чтобы вас было видно, у вас есть возможность увидеть этот трафик в чистом виде.Эти устройства могут быть прокси-серверами или балансировщиками нагрузки для приложений, которые вы размещаете.

Окончание срока с ростом уровня шифрования многие организации развертывают решения для проверки SSL. в своем интернет-шлюзе, чтобы гарантировать, что они сохранят трафик, такой как Интернет и SaaS-трафик — под контролем. Эти решения предлагают возможность получить полную видимость TLS-трафика. <ССЫЛКА на WP для видимости SaaS с A10>

Означает ли отсутствие расшифровки, что я не виден?

№До того как теперь всегда зашифровывается только полезная нагрузка, что означает:

  • TCP / IP часть пакетов читается
  • Большая часть Информация протокола TLS также доступна для чтения, по крайней мере, на данный момент.

Что я могу видеть на уровне TCP?

Мы видим все уровни до транспортного уровня. Некоторые примеры включают:

  • Уровень Ethernet: MAC-адреса, VLAN и т. Д.
  • IP: клиент, IP-адреса серверов, порты
  • TCP: все окна TCP, флаги и т. д.

Добавить что вся статистика, основанная на пакетных данных, собранных на этих уровнях, также в наличии, в том числе:

  • Объемы (пакеты, данные, полезная нагрузка и т. д.)
  • Сессии
  • Временные интервалы отражает задержку в сети и время обработки сервера
  • Повторные передачи

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

Какую информацию я могу собрать из данных TLS?

  • Кто, что и как классифицировать TLS-трафик. Имя сертификата и SNI будут очень полезно для определения характера зашифрованной службы. Может поможет понять, какому интернет-трафику или SaaS соответствует этот поток.
  • Безопасность реализация TLS: это дает полезную информацию для оценки уровень безопасности разговора:
    • Срок действия сертификата
  • Производительность и устранение неполадок: TLS также будет сообщать о таких событиях, как:
    • Показатели производительности, измеренные по времени интервалы, такие как время соединения TLS

In В заключение следует отметить, что анализ пакетов с помощью Wireshark сложнее, чем раньше.Важно знать, что можно расшифровать, а что нельзя и что это за информация. все еще доступны вам, когда трафик SSL / TLS не может быть расшифрован.

Если вы пропустили первый блог в этой серии, читайте здесь.

Следите за обновлениями третьего и последнего блога в этой серии. А пока запустите нашу демонстрацию, чтобы узнать больше!

Расшифровка трафика HTTPS (включая SSL и TLS)

Этот пост также доступен на: 日本語 (японский)

Краткое содержание

Это руководство предназначено для специалистов по безопасности, которые исследуют подозрительную сетевую активность и проверяют перехваты пакетов (pcap) трафика.В инструкциях предполагается, что вы знакомы с Wireshark, и он ориентирован на Wireshark версии 3.x.

При проверке подозрительной сетевой активности мы часто сталкиваемся с зашифрованным трафиком. Почему? Потому что большинство веб-сайтов используют протокол HTTPS. Но, как и большинство веб-сайтов, различные типы вредоносных программ также используют HTTPS. При просмотре файлов pcap от активности вредоносных программ очень полезно знать, что содержится в трафике после заражения.

В этом руководстве Wireshark описывается, как расшифровать HTTPS-трафик из pcap в Wireshark.Расшифровка возможна с помощью текстового журнала, содержащего данные ключа шифрования, захваченные при первоначальной записи pcap. С помощью этого ключевого файла журнала мы можем расшифровать активность HTTPS в pcap и просмотреть ее содержимое.

Сегодня мы рассмотрим активность HTTPS в результате заражения вредоносным ПО Dridex.

Примечание. В наших инструкциях предполагается, что вы настроили отображение столбца в Wireshark, как описано ранее в разделе «Настройка Wireshark — изменение отображения столбца».

Вот репозиторий Github с ZIP-архивом, содержащим pcap и файл журнала ключей, используемый для этого руководства.

Предупреждение: pcap, используемый в этом руководстве, содержит вредоносное ПО для Windows. При использовании компьютера с Windows существует риск заражения. Мы рекомендуем вам просмотреть этот pcap в среде, отличной от Windows, такой как BSD, Linux или macOS, если это вообще возможно.

Контекст зашифрованного трафика

В середине-конце 1990-х наиболее распространенным протоколом, используемым веб-сайтами, был протокол передачи гипертекста (HTTP), который генерировал незашифрованный веб-трафик. Однако по мере того, как безопасность становилась все более серьезной проблемой, веб-сайты начали переключаться на HTTPS, и теперь мы редко видим HTTP-трафик от просмотра веб-страниц.

HTTPS — это, по сути, зашифрованный коммуникационный туннель, содержащий HTTP-трафик. Эти туннели сначала использовали Secure Sockets Layer (SSL) в качестве протокола шифрования. Сегодня большая часть трафика HTTPS использует безопасность транспортного уровня (TLS).

Веб-трафик HTTPS

HTTPS-трафик часто показывает доменное имя. Например, при просмотре https://www.wireshark.org в веб-браузере pcap будет отображать www.wireshark.org в качестве имени сервера для этого трафика при просмотре в настраиваемом столбце Wireshark.К сожалению, мы не знаем других деталей, таких как фактический URL или данные, возвращаемые сервером. Следование потоку протокола управления передачей (TCP) из pcap не покажет содержимое этого трафика, потому что он зашифрован.

Рисунок 1. Трафик от HTTPS-трафика к www.wireshark.org. Рисунок 2. TCP-поток HTTPS-трафика к и от сервера на www.wireshark.org.

Файл журнала ключей шифрования

Журнал ключей шифрования — это текстовый файл. Пример показан на рисунке 3.

Рисунок 3. Файл ключевого журнала, используемый в этом руководстве.

Эти журналы создаются с использованием техники «Человек посередине» (MitM) при первоначальной записи pcap. Если такой файл не был создан при записи pcap, вы не сможете расшифровать HTTPS-трафик в этом pcap.

Пример Pcap с файлом журнала ключей

Защищенный паролем ZIP-архив, содержащий pcap и его файл журнала ключей, доступен в этом репозитории Github. Перейдите на страницу Github, щелкните запись архива ZIP, затем загрузите его, как показано на рисунках 4 и 5.Следует отметить, что pcap, содержащийся в этом ZIP-архиве, обеспечивает доступ к образцу вредоносного ПО для Windows при расшифровке с помощью журнала ключей. Как всегда, мы рекомендуем вам проявлять осторожность и выполнять шаги из этого руководства в среде, отличной от Windows.

Рисунок 4. Репозиторий Github со ссылкой на ZIP-архив, используемый для этого руководства. Рисунок 5. Загрузка ZIP-архива для этого руководства.

Используйте инфицированный в качестве пароля для извлечения файла pcap и ключевого журнала из ZIP-архива.Это предоставит два файла, как показано на рисунке 6:

.
  • Wireshark-tutorial-KeysLogFile.txt
  • Wireshark-tutorial-on-decrypting-HTTPS-SSL-TLS-traffic.pcap
Рисунок 6. Файл ключевого журнала и pcap для этого руководства.

Трафик HTTPS без ключевого файла журнала

Откройте Wireshark-tutorial-on-decrypting-HTTPS-SSL-TLS-traffic.pcap в Wireshark. Используйте базовый веб-фильтр, как описано в предыдущем руководстве о фильтрах Wireshark.Наш основной фильтр для Wireshark 3.x:

(http.request или tls.handshake.type уравнение 1) и! (Ssdp)

Это pcap от заражения вредоносным ПО Dridex на хосте Windows 10. Весь веб-трафик, включая заражение, идет по протоколу HTTPS. Без файла журнала ключей мы не можем видеть никаких деталей трафика, только IP-адреса, TCP-порты и доменные имена, как показано на Рисунке 7.

Рисунок 7. Просмотр pcap в Wireshark с использованием базового веб-фильтра без какой-либо расшифровки.

Загрузка файла ключевого журнала

Открыть Wireshark-tutorial-on-decrypting-HTTPS-SSL-TLS-traffic.pcap в Wireshark. Затем используйте путь меню Edit -> Preferences , чтобы вызвать меню настроек, как показано на рисунке 8.

Рисунок 8. Переход к меню настроек в Wireshark.

В левой части меню настроек щелкните Протоколы, как показано на рисунке 9.

Рисунок 9. Выбор протоколов в меню настроек.

Если вы используете Wireshark версии 2.x, прокрутите вниз, пока не найдете SSL и выберите его. Если вы используете Wireshark версии 3.x, прокрутите вниз до TLS и выберите его. После того, как вы выбрали SSL или TLS, вы должны увидеть строку для (Pre) -Master-Secret log filename . Нажмите кнопку «Обзор» и выберите наш файл журнала ключей с именем Wireshark-tutorial-KeysLogFile.txt , как показано на рисунках 10, 11 и 12.

Рисунок 10. Поиск поля имени файла журнала (Pre) -Master-Secret под TLS в Wireshark 3.x. Рисунок 11. Выбор нашего ключевого файла журнала для этого руководства.Рисунок 12. После того, как файл был выбран в качестве имени файла журнала (Pre) -Master-Secret, нажмите «OK».

Трафик HTTPS с файлом журнала ключей

После того, как вы нажали «ОК» при использовании основного фильтра, в столбце Wireshark отобразятся расшифрованные HTTP-запросы под каждой из строк HTTPS, как показано на рисунке 13.

Рисунок 13. Расшифровка HTTPS в Wireshark после использования ключевого файла журнала.

В этом pcap теперь мы видим HTTP-запросы к доменам microsoft.com и skype.com, ранее скрытые в трафике HTTPS.Мы также находим следующий трафик, вызванный заражением Dridex:

  • foodgoodforliver [.] Com — ПОЛУЧИТЬ /invest_20.dll
  • 105711 [.] Com — ЗАПИСЬ /docs.php

Запрос GET к foodgoodforliver [.] Com вернул файл DLL для Dridex. Запросы POST к 105711 [.] Com представляют собой командный и управляющий (C2) трафик от хоста Windows, зараженного Dridex.

Мы можем просматривать трафик, отслеживая потоки HTTP. Щелкните правой кнопкой мыши строку, чтобы выбрать ее, затем щелкните левой кнопкой мыши, чтобы открыть меню для отслеживания потока HTTP.На рисунках 14 и 15 показано выполнение HTTP-потока для HTTP-запроса GET к foodgoodforliver [.] Com.

Рисунок 14. Следующий HTTP-поток для GET-запроса к foodgoodforliver [.] Com. Рисунок 15. HTTP-поток указывает на EXE или DLL, возвращенный с сервера.

Поскольку у нас есть файл журнала ключей для этого трафика, теперь мы можем экспортировать эту вредоносную программу из pcap. Используйте путь в меню File -> Export Objects -> HTTP для экспорта этого файла из pcap, как показано на рисунке 16.

Рисунок 16. Экспорт двоичного файла вредоносной программы, возвращенного из foodgoodforliver [.] Com. Если вы работаете в среде BSD, Linux или macOS, откройте окно терминала и с помощью команды file убедитесь, что это DLL-файл. Затем используйте команду shasum -a 256, чтобы получить хэш файла SHA256, как показано на рисунке 17.

Рисунок 17. Получение хэша SHA256 этой вредоносной программы в среде Linux.
Хэш SHA256 этой вредоносной программы:

31cf42b2a7c5c558f44cfc67684cc344c17d4946d3a1e0b2cecb8eb58173cb2f

Если вы ищете этот хэш в Интернете, вы должны найти результаты как минимум в двух общедоступных онлайн-средах песочницы.

Наконец, мы можем проверить трафик C2 от этой инфекции Dridex. Используйте свой основной веб-фильтр, а затем следуйте HTTP-потоку от одного из запросов POST до 105711 [.] Com. Пример одного из HTTP-потоков показан на рисунке 18.

Рисунок 18. HTTP-поток от одного из запросов POST Dridex C2.

Заключение

В этом руководстве было рассмотрено, как расшифровать HTTPS-трафик в pcap с помощью Wireshark, используя текстовый файл журнала ключей. Без файла журнала ключей, созданного при первоначальной записи pcap, вы не сможете расшифровать HTTPS-трафик с этого pcap в Wireshark.

Для получения дополнительной помощи по Wireshark см. Наши предыдущие руководства:

Получайте обновления от

Palo Alto
Networks!

Подпишитесь, чтобы получать от нас последние новости, информацию о киберугрозах и исследования

[Глава 10] 10.5 Шифрование на уровне сети

Шифрование позволяет создавать безопасные соединения через небезопасные каналы. Шифрование сетевого трафика дает два полезных гарантии: конфиденциальность и аутентификация.Конфиденциальность очевидна; если твой данные зашифровываются отправляющим концом, отправляются по незащищенной сети, а затем расшифровываются принимающей стороной, ваши данные остаются конфиденциальными от кого-то, отслеживающего незащищенную сеть. Аутентификация меньше очевидно, но очень полезно. В основном, если принимающая сторона успешно может расшифровать данные, он знает, что данные должны иметь действительно исходит от отправляющего конца (а не от кого-то посередине притворяясь отправляющим концом). Почему? Потому что данные были правильно зашифровано, и только отправляющая сторона могла это сделать.Все это предполагает, конечно, ключи, которые нужно держать в секрете — держатся в секрете; кто-то, кто знает ваш ключи могут нарушить как вашу конфиденциальность, так и вашу аутентификацию.

10.5.1 На каком уровне выполняется шифрование?

Шифрование в Интернете может происходить на разных уровнях; большинство распространенными являются уровни приложения, ссылки и сети.

Шифрование на уровне приложений требует поддержки в все приложения (как клиенты, так и серверы), которые вы хотите использовать.Это может быть эффективным подходом, если у вас есть один или два приложения, которые вы часто используете (или особенно обеспокоены about) через Интернет на небольшом количестве машин, потому что вы можете установить собственные версии этих клиентов с шифрованием и серверов на этих машинах. Однако для общего использования он не масштабируется. хорошо; у вас может даже не быть исходного кода для всех приложения, с которыми вы хотите работать, в зашифрованном виде. Некоторые приложения используют PGP для обеспечения уровня приложений шифрование.Отправители используют PGP для шифрования своих исходящая почта перед ее отправкой через Интернет и получатели используйте PGP для его расшифровки. (PGP — это также часто используется независимо от приложений, что меньше удобно для пользователя, но чрезвычайно гибко.)

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

Шифрование на уровне канала защищает только один сетевая ссылка. Например, шифрование в модемах на обоих концах выделенная линия защитит ваши данные при прохождении этой выделенной линии, но не где-либо еще, поскольку он пересекает другие линии или проходит через маршрутизаторы или другие промежуточные хосты. Шифрование на уровне канала выполняется на слишком низкий уровень, чтобы быть широко полезным. Обычно ты не контролируешь все ссылки в ненадежной сети между источником и назначения, поэтому вы не можете гарантировать, что шифрование на уровне ссылок выполняется должным образом (или вообще) в каждой из этих точек.

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

10.5.2 Что вы шифруете?

Когда вы выполняете шифрование на уровне сети, какая часть пакета вы хотите зашифровать?

  • Только TCP, UDP или Сегменты данных ICMP (оставляя TCP, UDP или Заголовки ICMP, а также IP заголовки в незашифрованном виде)?

  • Сегмент IP-данных (включая весь TCP, UDP или Пакет ICMP)?

  • Весь IP-пакет?

Если вы шифруете только TCP, Сегменты данных UDP или ICMP, вы защищаете сами данные от взлома злоумышленником, и вы упрощаете жизнь своей системе фильтрации пакетов (она все еще может увидеть все заголовки, необходимые для нормальной фильтрации пакетов).Тем не мение, наблюдатель все еще может видеть, какие машины используют какие протоколы для общаться с какими другими машинами.

Если вы зашифруете сегмент IP-данных (что означает что весь UDP, TCP или ICMP-пакет, заголовки и все остальное зашифрованы), вы запретить наблюдателю видеть, какие протоколы вы используете (они могут все еще видеть, какие хосты общаются с другими хостами), но вы можете усложнить жизнь вашей собственной системе фильтрации пакетов. Если только система фильтрации пакетов находится между блоком шифрования и внутренняя сеть, он больше не видит TCP, Заголовки UDP или ICMP, потому что они зашифрованы как часть IP-данных сегмент.Если ваша система фильтрации пакетов находится за пределами шифрования блок (между блоком шифрования и ненадежной сетью), он должны принимать все свои решения строго на основе IP-адреса источника и назначения, что очень достаточно редко.

Если вы зашифруете весь IP-пакет, вы предотвратите злоумышленник ничего не видит, но вы также можете предотвратить система фильтрации пакетов не видит ничего, в зависимости от где он расположен относительно блока шифрования. Чтобы полностью зашифровать IP-пакет между двумя сайтами, вы должны предоставить какой-то инкапсуляционный «туннель» — эл.г., простой TCP-соединение — между блоками шифрования на два сайта для отправки зашифрованных пакетов. Причина туннеля необходимо, потому что заголовки IP больше не существуют для промежуточные маршрутизаторы, на которые стоит обратить внимание. Все, что видит злоумышленник, — это то, что два блока шифрования разговаривают друг с другом. Некоторые коммерческие маршрутизаторы, такие как маршрутизаторы Morning Star Express (а также Машины UNIX, работающие под управлением Morning Star Программное обеспечение PPP) способны создавать такие «виртуальные частные сети». Утренняя звезда делает это, бегая зашифрованный PPP через TCP соединение между двумя своими коробками; так что у тебя есть оригинал пакет, инкапсулированный в зашифрованный пакет PPP, который сам инкапсулируется в TCP-пакет из одна коробка Утренней звезды к другой.

Большинство сайтов, использующих шифрование на сетевом уровне, не возражают, если злоумышленники могут определить, какие машины общаются друг с другом или даже какие протоколы, которые они используют (эта атака обычно называется трафиком анализ ). Такие сайты обычно шифруют только TCP, UDP или Сегменты пакетов данных ICMP, для собственных удобство в обработке пакетов. Сайты, которые шифруют все TCP, UDP или Пакет ICMP (данные IP сегмент) обычно делают это по соображениям производительности, а не для соображения безопасности: роутер быстрее находит начало Сегмент IP-данных, чем для него, чтобы найти начало сегмент данных IP и, в пределах этого, начало TCP, UDP или Сегмент данных ICMP.

10.5.3 Где использовать шифрование?

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

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

Шифрование начинает появляться как функция в некоторых коммерческих маршрутизаторов, и несколько поставщиков объявили о своих намерениях добавить шифрование. Эта тенденция, вероятно, сохранится в ближайшие несколько дней. годы. Однако пока что стандартов для Шифрование IP на уровне сети, поэтому мало продуктов взаимодействовать друг с другом.Все они предполагают, что у вас есть еще один один из их продуктов на другом конце. Мы надеемся, что его изменят, и эти стандарты появятся по мере того, как шифрование станет более распространенным.

На рисунке 10.4 показан упрощенный вид схема шифрования на сетевом уровне.

Рисунок 10.4: Шифрование на уровне сети

10.5.4 Распределение ключей

Как и в любой системе шифрования, распределение ключей на уровне сети шифрование может быть очень сложной проблемой. Все вышеперечисленное предполагает, что два конца имеют общий ключ, поэтому каждый знает, как зашифровать и расшифровать данные, отправленные друг другу.Большинство из системы, используемые сегодня, полагаются на «внеполосный» ключ распространение: их производители говорят, что «распределение ключей — это ваша проблема, а не наша ». Клиентам приходится вручную устанавливать ключи (путем передачи их голосом по телефону, на дискете или через какой-то другой безопасный частный механизм) для каждого участвующего система. Это означает, что это шифрование на сетевом уровне может хорошо работать. для сайтов, с которыми вы часто обмениваетесь информацией (например, партнеры, ключевых клиентов или других филиалов вашей организации).Но это не работает для специальных или временных подключений из-за время и усилия на настройку. Некоторые системы используют технологию открытого ключа или системы распределения ключей, и могут работать быстрее и эффективнее со специальными или временными соединениями.

Расшифровка и декодирование зашифрованного SSL / TLS трафика с помощью Wireshark

Wireshark можно использовать для декодирования и дешифрования зашифрованных SSL-TLS соединений между клиентским приложением и устройством CA API Gateway.Эта статья имеет следующие ограничения:
  1. Шлюз действует как сервер в TCP-соединении
  2. Шлюз не использует набор шифров, основанный на обмене ключами Диффи-Хеллмана.
  3. Аппаратный модуль безопасности не используется со шлюзом.

Для расшифровки трафика с шифрованием SSL / TLS требуется доступ к закрытому ключу, используемому сервером. Если шлюз является сервером для TCP-соединения, то закрытый ключ шлюза можно экспортировать и использовать.Если шлюз является клиентом для TCP-соединения, необходимо получить ключ у администратора сервера или службы. В этой статье основное внимание будет уделено использованию шлюза в качестве сервера.

Захват пакета не может быть расшифрован, если канал SSL / TLS открыт с помощью наборов шифров, использующих обмен ключами Диффи-Хеллмана (который включает шифры с эллиптической кривой). Обмен ключами Диффи-Хеллмана обеспечивает идеальную прямую секретность. Идеальная прямая секретность не позволяет злоумышленнику захватить пакет и расшифровать его позже после взлома набора ключей.Это ограничение не позволяет даже действующему администратору расшифровать перехваченный пакет после завершения транзакции.

Использование аппаратного модуля безопасности предотвращает дешифрование захваченного пакета, поскольку закрытые ключи, имеющиеся в HSM, не могут быть экспортированы. Закрытые ключи, которые были созданы в другом месте и хранятся в хранилище ключей, защищенном HSM, по-прежнему могут использоваться, но не могут быть экспортированы из шлюза и должны быть экспортированы из другой системы.

Экспорт необходимого закрытого ключа
  1. Войдите в диспетчер политик как административный пользователь
  2. Откройте задачу Manage Listen Ports
  3. Откройте свойства нужного порта прослушивания
  4. Выберите вкладку SSL / TLS Settings
  5. Проверьте псевдоним закрытый ключ, назначенный этому порту
  6. Закройте все диалоговые окна и откройте задачу Manage Private Keys
  7. Выберите нужный закрытый ключ и нажмите кнопку Properties
  8. Выберите кнопку Export Key
  9. Укажите кодовую фразу и сохраните значение для использования позже
  10. Сохранить ключ на рабочей станции
  11. Закройте все открытые диалоговые окна
Настройка Wireshark для использования закрытого ключа
  1. Откройте Wireshark
  2. Выберите Preferences в меню Edit
  3. Выберите HTTP из меню Protocols
  4. Добавьте HTTPS-порт, используемый в SSL / TLS Ports Выберите 905 SSL из меню протоколов
  5. Выберите кнопку Edit
  6. Выберите кнопку New
  7. Укажите IP-адрес сервера
  8. Укажите порт , используемый для связи с сервером
  9. Установить протокол как http
  10. Задайте для файла ключей файл PKCS # 12, экспортированный из диспетчера политик
  11. Укажите пароль , установленный при экспорте ключа из диспетчера политик
  12. Выберите OK
  13. Укажите «файл отладки SSL», указав на текстовый файл.Этот текстовый файл будет создан, если он не существует
Проверка возможности дешифрования TCP-потока
  1. Откройте новый файл захвата в Wireshark
  2. Укажите следующий фильтр захвата : ssl.handshake
  3. Найдите Client Hello с IP-адреса клиента
  4. Щелкните правой кнопкой мыши фрейм и выберите Follow SSL Stream
  5. Транзакция HTTP должна быть видна открытым текстом.

Устранение неполадок при неудачной расшифровке

Указанный ранее журнал отладки SSL будет содержать данные для каждого анализа и дешифрования пакета.Запишите номер кадра (указанный в столбце . ) и откройте журнал отладки SSL. Найдите этот номер кадра (или аналогичный номер кадра) в этом журнале и обратите внимание на сообщение об ошибке.

rfc1827

 Network Working Group Р. Аткинсон
Запрос комментариев: Военно-морская исследовательская лаборатория 1827 г.
Категория: Standards Track Август 1995 г.


                IP-инкапсуляция безопасности полезной нагрузки (ESP)

Статус этого меморандума

   Этот документ определяет протокол отслеживания стандартов Интернета для
   Интернет-сообщество и просит обсуждения и предложения по
   улучшения.См. Текущую редакцию "Интернет".
   Официальные стандарты протокола »(STD 1) для состояния стандартизации
   и статус этого протокола. Распространение этой памятки не ограничено.

АБСТРАКТНЫЙ

   Этот документ описывает полезную нагрузку безопасности инкапсуляции IP (ESP).
   ESP - это механизм обеспечения целостности и конфиденциальности IP.
   дейтаграммы. В некоторых случаях он также может обеспечивать аутентификацию.
   в дейтаграммы IP. Механизм работает как с IPv4, так и с IPv6.

1. ВВЕДЕНИЕ

   ESP - это механизм обеспечения целостности и конфиденциальности IP.
   дейтаграммы.Он также может обеспечивать аутентификацию, в зависимости от того, какой
   алгоритм и режим алгоритма используются. Безотказность и
   Защита от анализа трафика не предусмотрена ESP. IP
   Заголовок аутентификации (AH) может обеспечить неотказуемость, если используется с
   определенные алгоритмы аутентификации [Atk95b]. Аутентификация IP
   Заголовок может использоваться вместе с ESP для обеспечения аутентификации.
   Пользователи, желающие целостности и аутентификации без конфиденциальности
   следует использовать заголовок IP-аутентификации (AH) вместо ESP.Этот
   документ предполагает, что читатель знаком с соответствующими
   документ «Архитектура безопасности IP», который определяет общую
   Архитектура безопасности на уровне Интернета для IPv4 и IPv6 и обеспечивает
   важная основа для этой спецификации [Atk95a].

1.1 Обзор

   Полезная нагрузка IP-инкапсуляции безопасности (ESP) стремится обеспечить
   конфиденциальность и целостность за счет шифрования данных, подлежащих защите и
   размещение зашифрованных данных в части данных IP
   Инкапсуляция полезной нагрузки безопасности.В зависимости от безопасности пользователя
   требований, этот механизм может использоваться для шифрования либо
   сегмент транспортного уровня (например, TCP, UDP, ICMP, IGMP) или весь IP-адрес
   дейтаграмма. Инкапсуляция защищенных данных необходима для обеспечения
   конфиденциальность всей исходной дейтаграммы.



Программа стандартов Аткинсона [Страница 1] 

RFC 1827, инкапсулирующий полезную нагрузку безопасности, август 1995 г.


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

   В туннельном режиме ESP исходная IP-дейтаграмма помещается в
   зашифрованная часть полезной нагрузки инкапсуляции безопасности и
   весь кадр ESP помещается в дейтаграмму с незашифрованным IP
   заголовки. Информация в незашифрованных заголовках IP используется для
   маршрутизировать защищенную дейтаграмму от отправителя к месту назначения. Незашифрованный
   Заголовок IP-маршрутизации может быть включен между заголовком IP и
   Инкапсуляция полезной нагрузки безопасности.В транспортном режиме ESP заголовок ESP вставляется в IP-адрес.
   дейтаграмма непосредственно перед заголовком протокола транспортного уровня
   (например, TCP, UDP или ICMP). В этом режиме сохраняется полоса пропускания
   потому что нет зашифрованных заголовков IP или параметров IP.

   В случае IP заголовок аутентификации IP может присутствовать как
   заголовок незашифрованного IP-пакета, как заголовок после IP-заголовка
   и перед заголовком ESP в пакете ESP транспортного режима, а также как
   заголовок в зашифрованной части пакета ESP в туннельном режиме.Если AH присутствует как в IP-заголовке открытого текста, так и внутри
   Заголовок ESP в туннельном режиме одного пакета, незашифрованный IPv6
   Заголовок аутентификации в основном используется для защиты
   содержимое незашифрованных заголовков IP и зашифрованных
   Заголовок аутентификации используется для аутентификации только для
   зашифрованный IP-пакет. Это обсуждается более подробно позже в этом разделе.
   документ.

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

   Концепция «ассоциации безопасности» является фундаментальной для ESP. это
   подробно описано в сопроводительном документе «Архитектура безопасности.
   для Интернет-протокола ", который включен сюда в качестве ссылки
   [Atk95a].Разработчикам следует прочитать этот документ перед чтением этого
   один.






Программа стандартов Аткинсона [Страница 2] 

RFC 1827, инкапсулирующий полезную нагрузку безопасности, август 1995 г.


1.2 Терминология требований

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

   - ДОЛЖЕН

      Это слово или прилагательное "ТРЕБУЕТСЯ" означает, что товар является
      абсолютное требование спецификации.- ДОЛЖЕН

      Это слово или прилагательное «РЕКОМЕНДУЕТСЯ» означает, что
      существуют веские причины в определенных обстоятельствах игнорировать это
      пункт, но следует понимать все последствия и дело
      тщательно взвесить, прежде чем выбрать другой курс.

   - МАЙ

      Это слово или прилагательное «ДОПОЛНИТЕЛЬНО» означает, что данный предмет
      действительно необязательно. Один поставщик может включить товар
      потому что этого требует конкретный рынок или потому что это
      например, улучшает качество продукта; другой поставщик может опустить
      тот же предмет.2. КЛЮЧЕВОЕ УПРАВЛЕНИЕ

   Управление ключами - важная часть архитектуры безопасности IP.
   Однако конкретный протокол управления ключами не включен в это
   спецификации из-за долгой истории в публичной литературе
   тонкие недостатки в алгоритмах и протоколах управления ключами. IP пытается
   отделить механизмы управления ключами от протокола безопасности
   механизмы. Единственная связь между протоколом управления ключами
   и протокол безопасности с индексом параметров безопасности (SPI),
   что более подробно описано ниже.Эта развязка позволяет
   необходимо использовать несколько различных механизмов управления ключами. Более
   что важно, он позволяет изменять протокол управления ключами или
   исправлено без чрезмерного воздействия на протокол безопасности
   реализации. Таким образом, протокол управления ключами для IP не является
   указано в этой памятке. Архитектура IP-безопасности описывает
   управление ключами более подробно и определяет управление ключами
   требования к IP. Эти ключевые требования к менеджменту
   включены сюда посредством ссылки [Atk95a].Механизм управления ключами используется для согласования ряда
   параметры для каждой ассоциации безопасности, включая не только ключи
   но другая информация (например, криптографические алгоритмы и режимы,



Программа стандартов Аткинсона [Страница 3] 

RFC 1827, инкапсулирующий полезную нагрузку безопасности, август 1995 г.


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

3. ОБЕСПЕЧЕНИЕ БЕЗОПАСНОСТИ СИНТАКСИСА ЗАГРУЗКИ

   Инкапсулирующие полезные данные безопасности (ESP) могут появиться где угодно после
   заголовок IP и перед окончательным протоколом транспортного уровня. В
   Агентство по присвоению номеров Интернета присвоило протоколу номер 50
   в ESP [STD-2]. Заголовок, непосредственно предшествующий заголовку ESP, будет
   всегда содержать значение 50 в своем следующем заголовке (IPv6) или протоколе
   (IPv4) поле.ESP состоит из незашифрованного заголовка, за которым следует
   зашифрованные данные. Зашифрованные данные включают как защищенный ESP
   поля заголовка и защищенные данные пользователя, которые представляют собой либо целые
   Дейтаграмма IP или кадр протокола верхнего уровня (например, TCP или UDP). А
   Ниже следует высокоуровневая диаграмма защищенной IP-дейтаграммы.

  | <- Незашифрованный -> | <---- Зашифрованный ------> |
  + ------------- + -------------------- + ------------ + - -------------------- +
  | Заголовок IP | Другие заголовки IP | Заголовок ESP | зашифрованные данные |
  + ------------- + -------------------- + ------------ + - -------------------- +

   Ниже приводится более подробная схема заголовка ESP.+ ------------- + -------------------- + ------------ + - -------------------- +
  | Идентификатор ассоциации безопасности (SPI), 32 бита |
  + ============= + ==================== + ============ + = ==================== +
  | Непрозрачные данные преобразования переменной длины |
  + ------------- + -------------------- + ------------ + - -------------------- +

   Алгоритмы шифрования и аутентификации, а также точный формат
   связанные с ними непрозрачные данные преобразования известны как
   «преображает».Формат ESP предназначен для поддержки новых преобразований.
   в будущем для поддержки новых или дополнительных криптографических алгоритмов.
   Преобразования задаются сами по себе, а не в основном
   тело этой спецификации. Обязательное преобразование для использования с IP
   определяется в отдельном документе [KMS95]. Другие необязательные преобразования
   существуют в других отдельных спецификациях и дополнительных преобразованиях
   может быть определено в будущем.








Программа стандартов Аткинсона [Страница 4] 

RFC 1827, инкапсулирующий полезную нагрузку безопасности, август 1995 г.


3.1 Поля инкапсулирующей полезной нагрузки безопасности

   SPI - это 32-битное псевдослучайное значение, определяющее безопасность.
   ассоциация для этой дейтаграммы. Если сопоставление безопасности не было
   установлено, значение поля SPI должно быть 0x00000000. SPI
   аналогичен SAID, используемому в других протоколах безопасности. Название
   был изменен, потому что используемая здесь семантика не совсем соответствует
   такие же, как и в других протоколах безопасности.

   Набор значений SPI в диапазоне от 0x00000001 до 0x000000FF
   зарезервировано за Управлением по распределению номеров в Интернете (IANA) на будущее
   использовать.Зарезервированное значение SPI обычно не назначается IANA.
   за исключением случаев, когда использование этого конкретного присвоенного значения SPI открыто
   указано в RFC.

   SPI - единственное обязательное поле, не зависящее от преобразования.
   Конкретные преобразования могут иметь другие поля, уникальные для преобразования.
   Преобразования не указаны в этом документе.

3.2 Маркировка безопасности с ESP

   Зашифрованная IP-дейтаграмма не требует и обычно не содержит
   явная метка безопасности, потому что SPI указывает на чувствительность
   уровень.Это улучшение по сравнению с существующей практикой с IPv4.
   где явная метка чувствительности обычно используется с
   Рабочие станции в режиме комментирования и другие системы, требующие безопасности
   Этикетки [Ken91] [DIA]. В некоторых ситуациях пользователи МОГУТ носить с собой
   явные метки (например, метки IPSO, как определено в RFC-1108
   может использоваться с IPv4) в дополнение к использованию неявных меток
   предоставлено ESP. Могут быть определены явные параметры меток для использования
   с IPv6 (например, используя заголовок сквозных параметров IPv6 или IPv6
   Заголовок параметров пошагового режима).Реализации МОГУТ поддерживать явные
   метки в дополнение к неявным меткам, но реализации не
   требуется для поддержки явных меток. Реализации ESP в
   системы, утверждающие, что обеспечивают многоуровневую безопасность, ДОЛЖНЫ поддерживать
   неявные метки.

4. ОБЕСПЕЧЕНИЕ ОБРАБОТКИ ПРОТОКОЛА БЕЗОПАСНОСТИ

   В этом разделе описаны действия, предпринимаемые, когда ESP используется между двумя
   общающиеся стороны. Многоадресная рассылка отличается от одноадресной только в
   область управления ключами (см. определение SPI выше, для
   подробнее об этом).Есть два режима использования ESP. Первое
   режим, который называется "Туннельный режим", инкапсулирует весь IP-адрес.
   дейтаграмма внутри ESP. Второй режим, который называется «Транспорт-
   Mode ", инкапсулирует фрейм транспортного уровня (например, UDP, TCP) внутри
   ESP. Термин "транспортный режим" не следует неправильно истолковывать как
   ограничение его использования TCP и UDP. Например, сообщение ICMP МОЖЕТ



Программа стандартов Аткинсона [Страница 5] 

RFC 1827, инкапсулирующий полезную нагрузку безопасности, август 1995 г.


   отправляться с использованием «транспортного режима» или «туннельного режима».
   в зависимости от обстоятельств.Обработка ESP происходит до IP
   фрагментация на выходе и после повторной сборки IP на входе. Этот
   Раздел описывает обработку протокола для каждого из этих двух режимов.

4.1 ESP в туннельном режиме

   В туннельном режиме ESP заголовок ESP следует за всем сквозным
   заголовки (например, заголовок аутентификации, если присутствует в виде открытого текста) и
   непосредственно предшествует туннелированной дейтаграмме IP.

   Отправитель берет исходную дейтаграмму IP, инкапсулирует ее в
   ESP, в качестве данных использует как минимум идентификатор пользователя-отправителя и адрес назначения.
   чтобы найти правильную ассоциацию безопасности, а затем применяет
   соответствующее преобразование шифрования.Если используется ключ-ориентированный ключ,
   тогда все отправляющие идентификаторы пользователей в данной системе будут иметь одинаковые
   Ассоциация безопасности для данного адреса назначения. Если нет ключа
   был установлен, то механизм управления ключами используется для
   установить ключ шифрования для этого сеанса связи до
   использование ESP. Затем (теперь зашифрованный) ESP инкапсулируется в
   дейтаграмма IP в открытом виде в качестве последней полезной нагрузки. Если строгий красный / черный
   разделение применяется, затем адресация и другие
   информация в незашифрованных заголовках IP и дополнительных полезных данных МОЖЕТ быть
   отличается от значений, содержащихся в (теперь зашифрованном и
   инкапсулированный) исходная дейтаграмма.Получатель удаляет незашифрованный IP-заголовок и открытый текст.
   дополнительные полезные данные IP (если есть) и отбрасывает их. Затем он использует
   сочетание адреса назначения и значения SPI для определения местоположения
   правильный сеансовый ключ для использования в этом пакете. Затем он расшифровывает ESP
   используя ключ сеанса, который только что был найден для этого пакета.

   Если для этого сеанса не существует действительной ассоциации безопасности (для
   например, у получателя нет ключа), получатель ДОЛЖЕН отбросить
   зашифрованный ESP, и отказ ДОЛЖЕН быть записан в системный журнал или
   журнал аудита.Этот системный журнал или запись журнала аудита ДОЛЖНЫ включать SPI
   значение, дата / время, открытый текст Адрес отправки, открытый текст Назначение
   Адрес и идентификатор потока в открытом виде. Запись в журнале МОЖЕТ также включать
   другие идентифицирующие данные. Получатель может не захотеть реагировать
   немедленно уведомить отправителя об этом сбое из-за
   высокий потенциал для простых в использовании атак типа «отказ в обслуживании».

   Если расшифровка успешна, исходная дейтаграмма IP удаляется из
   (теперь расшифрованный) ESP.Затем эта исходная IP-дейтаграмма обрабатывается.
   в соответствии со стандартной спецификацией протокола IP. В случае системы
   утверждая, что обеспечивает многоуровневую безопасность (например, B1 или
   Рабочая станция в режиме комментирования) дополнительно соответствующий обязательный
   контроль доступа ДОЛЖЕН применяться в зависимости от уровня безопасности



Программа стандартов Аткинсона [Страница 6] 

RFC 1827, инкапсулирующий полезную нагрузку безопасности, август 1995 г.


   процесс получения и уровень безопасности, связанный с этим
   Ассоциация безопасности.Если эти обязательные средства управления доступом не работают, тогда
   пакет СЛЕДУЕТ отбросить, а сбой СЛЕДУЕТ регистрировать с помощью
   процедуры, зависящие от реализации.

4.2 ESP в транспортном режиме

   В транспортном режиме ESP заголовок ESP следует за сквозными заголовками.
   (например, заголовок аутентификации) и непосредственно предшествует транспортному
   заголовок уровня (например, UDP, TCP, ICMP).

   Отправитель использует исходный транспортный уровень (например, UDP, TCP, ICMP).
   frame, инкапсулирует его в ESP, использует как минимум отправляющий идентификатор пользователя
   и адрес назначения, чтобы найти соответствующую систему безопасности.
   Ассоциация, а затем применяет соответствующее преобразование шифрования.Если используется ключ-ориентированный ключ, то все отправляющие идентификаторы пользователей
   данная система будет иметь такую ​​же ассоциацию безопасности для данного
   Адрес назначения. Если ключ не был установлен, то ключ
   механизм управления используется, чтобы установить ключ шифрования для этого
   сеанс связи до шифрования. (Теперь зашифрованный)
   Затем ESP инкапсулируется как последняя полезная нагрузка открытого текста IP.
   дейтаграмма.

   Получатель обрабатывает открытый текст IP-заголовка и необязательный открытый текст.
   Заголовки IP (если есть) и временно хранит соответствующую информацию
   (е.g., адреса источника и назначения, идентификатор потока, заголовок маршрутизации).
   Затем он расшифровывает ESP, используя ключ сеанса, который был
   установленный для этого трафика, используя комбинацию
   адрес назначения и идентификатор ассоциации безопасности пакета
   (SPI), чтобы найти правильный ключ.

   Если для этого сеанса нет ключа или попытка дешифрования не удалась,
   зашифрованный ESP ДОЛЖЕН быть отброшен, а сбой ДОЛЖЕН быть записан
   в системном журнале или журнале аудита. В случае такой неисправности
   записанные данные журнала ДОЛЖНЫ включать значение SPI, дату / время получения,
   открытый текстовый адрес отправителя, открытый текстовый адрес назначения и
   Идентификатор потока.Данные журнала МОГУТ также включать другую информацию о
   неудачный пакет. Если расшифровка не работает должным образом по какой-либо причине,
   тогда полученные данные не будут анализироваться реализацией
   движок протокола. Следовательно, неудачное дешифрование обычно можно обнаружить.

   Если расшифровка успешна, исходный транспортный уровень (например, UDP, TCP,
   ICMP) кадр удаляется из (теперь расшифрованного) ESP. Информация
   из открытого текста IP-заголовка и расшифрованного транспортного уровня
   заголовок используется совместно, чтобы определить, в каком приложении данные должны
   быть отправленным.Затем данные отправляются в соответствующий
   приложение в соответствии со спецификацией протокола IP. В случае
   системы, утверждающей, что она обеспечивает многоуровневую безопасность (например,



Программа стандартов Аткинсона [Страница 7] 

RFC 1827, инкапсулирующий полезную нагрузку безопасности, август 1995 г.


   B1 или рабочая станция с разделенным режимом), дополнительный обязательный доступ
   Элементы управления ДОЛЖНЫ применяться в зависимости от уровня безопасности принимающей
   процесс и уровень безопасности полученного пакета Security
   Ассоциация.4.3. Аутентификация

   Некоторые преобразования обеспечивают аутентификацию, а также конфиденциальность и
   честность. Когда такое преобразование не используется, то
   Заголовок аутентификации может использоваться вместе с
   Инкапсуляция полезной нагрузки безопасности. Есть два разных подхода
   использовать заголовок аутентификации с ESP, в зависимости от того, какие данные
   должен быть аутентифицирован. Расположение заголовка аутентификации
   дает понять, какой набор данных аутентифицируется.

   При первом использовании аутентифицируется вся полученная дейтаграмма,
   включая как зашифрованные, так и незашифрованные части, в то время как только
   данные, отправленные после заголовка ESP, являются конфиденциальными.В этом использовании
   отправитель сначала применяет ESP к защищаемым данным. Затем другой
   Заголовки IP в виде открытого текста добавляются к заголовку ESP и теперь
   зашифрованные данные. Наконец, заголовок аутентификации IP вычисляется.
   поверх полученной дейтаграммы обычным способом. На
   квитанция, получатель сначала проверяет подлинность всей
   датаграмма с использованием обычного процесса заголовка аутентификации IP. Тогда если
   аутентификация успешна, дешифрование с использованием обычного процесса IP ESP
   имеет место.Если расшифровка прошла успешно, то полученные данные будут
   перешел на верхний слой.

   Если бы процесс аутентификации применялся только к данным
   защищенный ESP в туннельном режиме, тогда заголовок аутентификации IP будет
   обычно помещаются в эту защищенную дейтаграмму. Однако если один
   использовали ESP в транспортном режиме, затем заголовок аутентификации IP
   будет помещен перед заголовком ESP и будет рассчитываться по
   вся дейтаграмма IP.

   Если заголовок аутентификации инкапсулирован в ESP в туннельном режиме
   заголовок, и оба заголовка имеют определенные уровни классификации безопасности
   связанных с ними, и два уровня классификации безопасности
   не идентичны, значит, произошла ошибка.Эта ошибка ДОЛЖНА быть
   записывается в системный журнал или журнал аудита с использованием процедур
   описано ранее. Это не обязательно ошибка для
   Заголовок аутентификации, расположенный за пределами заголовка ESP, чтобы иметь
   другой уровень классификации безопасности, чем заголовок ESP
   уровень классификации. Это может быть действительным, потому что IP-адрес в открытом виде
   заголовки могут иметь другой уровень классификации после данных
   был зашифрован с помощью ESP.





Программа стандартов Аткинсона [Страница 8] 

RFC 1827, инкапсулирующий полезную нагрузку безопасности, август 1995 г.


5.ТРЕБОВАНИЯ СООТВЕТСТВИЯ

   Реализации, которые заявляют о соответствии или соответствии этому
   спецификация ДОЛЖНА полностью реализовывать описанный здесь заголовок, ДОЛЖНА
   поддерживать ручное распределение ключей с этим заголовком, ДОЛЖЕН соответствовать
   все требования «Архитектуры безопасности для Интернета»
   Протокол "[Atk95a], и ДОЛЖЕН поддерживать использование DES CBC, как указано
   в сопроводительном документе под названием «Преобразование ESP DES-CBC»
   [KMS95]. Разработчики МОГУТ также реализовать другие преобразования ESP.Разработчикам следует обратиться к последней версии IAB
   Официальные стандарты »RFC для дальнейших указаний по статусу этого
   документ.

6. СООБРАЖЕНИЯ БЕЗОПАСНОСТИ

   Весь этот документ обсуждает механизм безопасности для использования с IP.
   Этот механизм - не панацея, но он дает важное
   Компонент, полезный для создания безопасного межсетевого взаимодействия.

   Криптографические преобразования для ESP, использующие алгоритм цепочки блоков
   и отсутствие надежного механизма целостности уязвимы для
   атака пастой, описанная Bellovin, и ее не следует использовать, если только
   Заголовок аутентификации всегда присутствует с пакетами, использующими этот ESP
   преобразовать [Бел95].Пользователи должны понимать, что качество безопасности, обеспечиваемое
   эта спецификация полностью зависит от прочности любого
   реализован алгоритм шифрования, корректность которого
   реализация алгоритма, при безопасности управления ключами
   механизм и его реализация, сила ключа [CN94]
   [Sch94, p233] и о правильности ESP и IP
   реализации во всех участвующих системах.

   Если какое-либо из этих предположений не выполняется, тогда мало или совсем не
   безопасность будет предоставлена ​​пользователю.Использование высокой уверенности
   методы разработки рекомендуются для IP-инкапсуляции
   Безопасность данных.

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

   Если ориентированный на пользователя ввод ключей не используется, то используемый алгоритм
   не должен быть алгоритмом, уязвимым для любого выбранного открытого текста
   атака. Атаки с использованием выбранного открытого текста на DES описаны в [BS93] и
   [Mat94].Рекомендуется использовать ориентированный на пользователя ввод, чтобы
   предотвращать любые атаки на выбранный открытый текст и, как правило, делать
   криптоанализ сложнее. Реализации ДОЛЖНЫ поддерживать пользователей:



Программа стандартов Аткинсона [Страница 9] 

RFC 1827, инкапсулирующий полезную нагрузку безопасности, август 1995 г.


   ориентированный набор ключей, как описано в Архитектуре безопасности IP.
   [Atk95a].

БЛАГОДАРНОСТИ

   В этом документе большую роль сыграла работа, проделанная Биллом Симпсоном, Перри.
   Мецгера и Фила Карна, чтобы изначально сделать общий подход
   определено автором для SIP, SIPP и, наконец, IPv6.Многие из представленных здесь концепций взяты из
   Спецификация протокола безопасности SP3 правительства США, ISO / IEC
   Спецификация NLSP или из предложенного протокола безопасности swIPe
   [SDNS89, ISO92a, IB93, IBK93, ISO92b]. Использование DES для
   конфиденциальность тщательно смоделирована на основе работы, проделанной для SNMPv2
   [GM93]. Стив Белловин, Стив Диринг, Дэйв Михелчич и Хилари
   Орман серьезно критиковал ранние версии этого меморандума.

РЕКОМЕНДАЦИИ

   [Atk95a] Аткинсон, Р., "Архитектура безопасности для Интернета
            Протокол », RFC 1825, NRL, август 1995 г.

   [Atk95b] Аткинсон, Р., «Заголовок аутентификации IP», RFC 1826, NRL,
            Август 1995 г.

   [Bel89] Стивен М. Белловин, «Проблемы безопасности в TCP / IP.
            Набор протоколов ", ACM Computer Communications Review, Vol. 19,
            № 2, март 1989 г.

   [Bel95] Стивен М. Белловин, презентация на IP Security Working
            Групповое собрание, Труды 32-го Интернет-инжиниринга
            Целевая группа, март 1995 г., Инженерная группа Интернета,
            Данверс, Массачусетс.[BS93] Эли Бихам и Ади Шамир, "Дифференциальный криптоанализ
            Стандарт шифрования данных ", Springer-Verlag, New York, NY,
            1993 г.

   [CN94] Джон М. Кэрролл и Шри Нудиати, «О слабых ключах и слабых данных:
            Сдерживание двух врагов ", Cryptologia, Vol. 18, No. 23,
            Июль 1994. С. 253–280.

   [CERT95] Группа реагирования на компьютерные чрезвычайные ситуации (CERT), «Атаки с использованием спуфинга IP.
            and Hijacked Terminal Connections », CA-95: 01, январь 1995 г.
            Доступно через анонимный ftp из info.cert.org.






Программа стандартов Аткинсона [Страница 10] 

RFC 1827, инкапсулирующий полезную нагрузку безопасности, август 1995 г.


   [DIA] Разведывательное управление США (DIA), "Комментированный режим"
            Спецификация рабочей станции », Технический отчет
            ДДС-2600-6243-87.

   [GM93] Гэлвин Дж., И К. Макклори, "Протоколы безопасности для
            версия 2 простого протокола управления сетью
            (SNMPv2) ", RFC 1446, Надежные информационные системы, Hughes LAN
            Системы, апрель 1993 г.[Hin94] Боб Хинден (редактор), Интернет-протокол версии 6 (IPv6)
            Спецификация, работа в процессе, октябрь 1994 г.

   [IB93] Джон Иоаннидис и Мэтт Блейз, «Архитектура и реализация.
            безопасности на сетевом уровне в Unix », Труды USENIX
            Симпозиум по безопасности, Санта-Клара, Калифорния, октябрь 1993 г.

   [IBK93] Джон Иоаннидис, Мэтт Блейз и Фил Карн, "swIPe:
            Безопасность сетевого уровня для IP », презентация на Spring
            1993 Встреча IETF, Колумбус, Огайо.[ISO92a] ISO / IEC JTC1 / SC6, Протокол безопасности сетевого уровня, ISO-IEC
            DIS 11577, Международная организация по стандартизации, Женева,
            Швейцария, 29 ноября 1992 г.

   [ISO92b] ISO / IEC JTC1 / SC6, Протокол безопасности сетевого уровня, ISO-IEC
            DIS 11577, раздел 13.4.1, стр. 33, Международные стандарты
            Организация, Женева, Швейцария, 29 ноября 1992 г.

   [Ken91] Кент, С., "Параметры безопасности в Интернете, Министерство обороны США.
            Протокол », RFC 1108, BBN Communications, ноябрь 1991 г.[KMS95] Карн П., Мецгер П. и У. Симпсон, "ESP DES-CBC
            Transform », RFC 1829, Qualcomm, Inc., Piermont, Daydreamer,
            Август 1995 г.

   [Mat94] Мацуи, М., "Метод линейного криптоанализа для шифра DES",
            Труды Eurocrypt '93, Берлин, Springer-Verlag, 1994.

   [NIST77] Национальное бюро стандартов США, «Стандарт шифрования данных»,
            Публикация Федерального стандарта обработки информации (FIPS)
            46, январь 1977 г.

   [NIST80] Национальное бюро стандартов США, «Режимы работы DES»
            Публикация Федерального стандарта обработки информации (FIPS)
            81, декабрь 1980 г.Программа стандартов Аткинсона [Страница 11] 

RFC 1827, инкапсулирующий полезную нагрузку безопасности, август 1995 г.


   [NIST81] Национальное бюро стандартов США, "Рекомендации по внедрению
            и Использование стандарта шифрования данных », Федеральная информация
            Публикация 74 стандарта обработки (FIPS), апрель 1981 г.

   [NIST88] Национальное бюро стандартов США, «Стандарт шифрования данных»,
            Публикация Федерального стандарта обработки информации (FIPS)
            46-1, январь 1988 г.[STD-2] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2,
            RFC 1700, USC / Институт информационных наук, октябрь 1994 г.

   [Sch94] Брюс Шнайер, Прикладная криптография, John Wiley & Sons,
            Нью-Йорк, штат Нью-Йорк, 1994. ISBN 0-471-59756-2

   [SDNS89] Система защищенных данных SDNS, протокол безопасности 3, SP3,
            Документ SDN.301, редакция 1.5, 15 мая 1989 г., как опубликовано
            в публикации NIST NIST-IR-90-4250, февраль 1990 г.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

   Взгляды и спецификации здесь принадлежат автору и не
   обязательно таковые у его работодателя.Лаборатория военно-морских исследований
   не выносил суждений по существу, если таковые имеются, этой работы. Автор
   и его работодатель прямо отказываются от ответственности за любые
   проблемы, возникающие в результате правильного или неправильного внедрения или использования
   эта спецификация.

АДРЕС АВТОРА

   Рэндалл Аткинсон
   Отдел информационных технологий
   Лаборатория военно-морских исследований
   Вашингтон, округ Колумбия 20375-5320
   США

   Телефон: (202) 404-7090
   Факс: (202) 404-7942
   Электронная почта: [email protected]













Программа стандартов Аткинсона [стр. 12]
 
.