Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование на C# для чайников


C# Глазами хакера. Урок 4. Работа с сетью. Продолжение.

Как и в прошлый раз, начнем урок с небольшого примерчика:

        private void btnStart_Click(object sender, EventArgs e)

        {

            string hostname = "www.google.com", message = "IP адреса для домена " + hostname + "\n";

            IPHostEntry entry = Dns.GetHostEntry(hostname);

 

            foreach (IPAddress a in entry.AddressList)

                message += "  --> " + a.ToString() + "\n";

 

            message += "\nАльтернативное имя домена: ";

            foreach (string aliasName in entry.Aliases)

                message += aliasName + "\n";

 

            message += "\nРеальное название хоста: " + entry.HostName;

            MessageBox.Show(message);

        }

В этом примере при помощи классов IPHostEntry и Dns мы получаем список все IP-адресов указанного хоста. Вот результат его работы:

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

Несмотря на то, что протокол OSI не получил широкого распространения, отдельные его элементы, как говориться, прошли "на ура". В частности, семиуровневая модель, которую мы сейчас рассмотрим.

Вот эти семь уровней:

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

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

  • Сеансовый уровень создает виртуальное соединение между приложениями.

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

  • Сетевой уровень позволяет обращаться к узлам локальной сети, используя логическую адресацию.

  • Канальный уровень получает доступ к физической сети через физические адреса.

  • Физический уровень включает соединители, кабели и т. д.

Теперь разберем эти уровни более подробно. Начнем с самого низа. Физический уровень - это уровень требования к физической среде передачи. Под физической средой передачи понимают кабеля, соединители, контроллеры, повторители. На этом уровне определяется, как (каким электрическим сигналом) будет передаваться 0, а как 1. 

Над физическом уровнем стоит канальный уровень. На этом уровне используются MAC-адреса, о которых я говорил на прошлом уроке. Узлы локальной сети отправляют друг другу сообщения с использование IP адреса, а он транслируется в соответствующий MAC-адрес канальным уровнем. Это делает так называемый протокол разрешения адресов (Address Resolution Protocol, ARP). Для ускорения этого процесса используется специальный кэш. Его можно просмотреть при помощи утилиты arp. В частности, команда arp -а показывает МАС-адреса всех недавно использованных узлов в кэше ARP*:

Данная утилита также позволяет установить соответствие между IP-адресами и МАC-адресами, с тем чтобы ARP-запросы для МАС-адресов больше не требовались. Однако это соответствие будет нарушено при замене сетевой платы, поэтому им следует пользоваться осторожно.
Другая функция канального уровня состоят в отправке и получении сообщений и обнаружении ошибок. В Ethernet также требуется обнаруживать конфликты, что мы уже обсуждали на прошлом уроке.
На канальном уроне так же действует коммутатор сети, фильтруя сообщения в соответствии с МАС-адресами их получателей.
 

Выше канального уровня находиться сетевой уровень. На нем для соединения с другими узлами используется логическая адресация. Что это такое? Поясняю. Дело в том, что адресация по MAC-адресам доступна только внутри локальной сети. А вот для обращения к узлам глобальной сети надо уже использовать сетевой уровень. Internet Protocol (IP) — это протокол уровня 3(сетевого уровня); для идентификации узлов сети он использует IР-адреса. Маршрутизаторы выполняют маршрутизацию трафика между сетями на этом уровне.

Уровень 4 - это уже транспортный уровень. На этом уровне идентифицируется приложение через так называемую конечную точку (endpoint). В протоколе TCP конечная точка задается комбинацией номера порта (port number) и IP-адреса.

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

Кроме того, связь на транспортном уровне может быть двух типов:

  • Через соединения.

  • Без соединений.

Использует соединение протокол TCP/IP, а вот UDP(User Datagram Protocol)  - нет. Связь, ориентированная на соединение, является надеждой, потому что в этом случае отправляется подтверждение, и неполученные пакеты могут быть отправлены повторно.

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

Сеансовый уровень - это уже уровень приложения. Сеанс - это логическое (виртуальное) соединение между приложениями. Такое соединение не зависит от расположенного транспортного уровня, логическое соединение может существовать дольше, чем соединение на транспортном уровне. Одно соединение на сеансовом уровне может также использовать несколько соединений на транспортном уровне.  Сеансовые объекты ASP.NET, например, как раз и работают с таким уровнем. Они существуют, пока сеанс не закроется по тайм ауту (чаще всего 20 минут) независимо от ТСР-соединений более низкого уровня.

Представительский уровень. Это уровень посредник между сеансовым уровнем и уровнем приложения. На этом уровне осуществляет (при необходимости) шифрование/дешифрование и сжатие данных

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


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями  программного продукта "cmd", авторское право на который принадлежит корпорации Microsoft.. 



В избранное