Лекция: Введение в сетевые протоколы: версия для печати и PDA

Завершает курс лекция, в которой рассматриваются возможности построения сетевых приложений. Сначала дается краткое введение в сетевые протоколы, семиуровневую модель OSI, стек протоколов TCP/IP и описываются основные утилиты, предоставляемые операционной системой для мониторинга сети. Эти значения необходимы, поскольку библиотека java.net, по сути, является интерфейсом для работы с этими протоколами. Рассматриваются классы для соединений через высокоуровневые протоколы, протоколы TCP и UDP.

Лекция: Введение в сетевые протоколы: версия для печати и PDA - student2.ru

Лекция: Введение в сетевые протоколы: версия для печати и PDA - student2.ru

Лекция: Введение в сетевые протоколы: версия для печати и PDA - student2.ru

Основы модели OSI

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

Эта проблема была рассмотрена Всемирной организацией по стандартизации (International Organization for Standardization, ISO) и было принято решение разработать модель сети, которая могла бы помочь разработчикам и производителям сетевого оборудования и программного обеспечения действовать сообща. В результате в 1984 г. была создана модель OSI – модель взаимодействия открытых систем (Open Systems Interconnected). Она состоит из семи уровней, на которые разделяется задача организации сетевого взаимодействия. Схематично они представлены в таблице 16.1.

Таблица 16.1. Уровни модели OSI.Номер уровняНазвание уровняЕдиница информацииLayer 7Уровень приложенийДанные (data)Layer 6Представительский уровеньДанные (data)Layer 5Сессионный уровеньДанные (data)Layer 4Транспортный уровеньСегмент (segment)Layer 3Сетевой уровеньПакет (packet)Layer 2Уровень передачи данныхФрейм (frame)Layer 1Физический уровеньБит (bit)

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

Рассмотрим процесс передачи информации между двумя компьютерами. Программное обеспечение формирует сообщение на уровне 7 (приложений), состоящее из заголовка и полезных данных. В заголовке содержится служебная информация, которая необходима уровню приложений адресата для обработки пересылаемой информации (например, это может быть информация о файле, который необходимо передать, или операции, которую нужно выполнить). После того, как сообщение было сформировано, уровень приложений направляет его "вниз" на представительский уровень (layer 6). Полученное сообщение, состоящее из служебной информации уровня 7 и полезных данных, для уровня 6 представляется как одно целое (хотя уровень 6 может считывать служебную информацию уровня 7). Протокол представительского уровня выполняет необходимые действия на основании данных, полученных из заголовка уровня приложений, и добавляет заголовок своего уровня, в котором содержится информация для соответствующего (6-го) уровня адресата. Полученное в результате сообщение передается далее "вниз" сеансовому уровню, где также добавляется служебная информация. Дополненное сообщение передается на следующий транспортный уровень и т.д. на каждом последующем уровне (схематично это представлено на рис.16.1). При этом служебная информация может добавляться не только в начало сообщения, но и в конец (например, на 3-м уровне, рис.16.2). В итоге получается сообщение, содержащее служебную информацию всех семи уровней.

Лекция: Введение в сетевые протоколы: версия для печати и PDA - student2.ru

Рис. 16.1.

Инкапсуляция и декапсуляция пакета.

Лекция: Введение в сетевые протоколы: версия для печати и PDA - student2.ru

Рис. 16.2.

Добавление служебной информации в начало и конец пакета.

Процесс "обертывания" передаваемых данных служебной информацией называется инкапсуляцией ( encapsulation ).

Далее это сообщение передается через сеть в виде битов. Бит – это минимальная порция информации, которая может принимать значение 0 или 1. Таким образом, все сообщение кодируется в виде набора нулей и единиц, например, 010110101. В простейшем случае на физическом уровне для передачи формируется электрический сигнал, состоящий из серии электрических импульсов ( 0 - нет сигнала, 1 - есть сигнал). Именно эта единица принята для измерения скорости передачи информации. Современные сети обычно предоставляют каналы с производительностью в десятки и сотни Кбит/с и Мбит/с.

Получатель на физическом уровне получает сообщение в виде электрического сигнала (рис.16.3). Далее происходит процесс, обратный инкапсуляции,– декапсуляция ( decapsulation ). На каждом уровне происходит разбор служебной информации. После декапсуляции сообщения на первом уровне (считывания и обработки служебной информации 1-го уровня) это сообщение, содержащее служебную информацию второго уровня и данные в виде полезных данных и служебной информации вышестоящих уровней, передается на следующий уровень. На канальном (2-м) уровне снова происходит анализ системной информации и сообщение передается на следующий уровень. И так до тех пор, пока сообщение не дойдет до уровня приложений, где в виде конечных данных передается принимающему приложению.

Лекция: Введение в сетевые протоколы: версия для печати и PDA - student2.ru

Рис. 16.3.

Представление данных в виде электрического импульса.

В качестве примера можно привести обращение браузера к web-серверу. Приложение клиента – браузер – формирует запрос для получения web-страницы. Этот запрос передается приложением на уровень 7 и далее последовательно на каждый уровень модели OSI. Достигнув физического уровня, наш первоначальный запрос "обрастает" служебной информацией каждого уровня. После этого он передается по физической сети (кабелям) в виде электрических импульсов на сервер. На сервере происходит разбор соответствующей системной информации каждого уровня, в результате чего посланный запрос достигает приложения web-сервера. Там он обрабатывается, после чего клиенту отправляется ответ. Процесс отправки ответа аналогичен отправке запроса – за исключением того, что сообщение посылает сервер, а получает клиент.

Так как каждый уровень модели OSI стандартизирован, потребители могут использовать совместно оборудование и программное обеспечение различных производителей. В результате web-сервер под управлением операционной системы Sun Solaris может передать HTML-страницу пользователю MS Windows.

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

Три нижних уровня – физический, канальный и сетевой – являются сете-зависимыми. Например, смена Ethernet на ATM влечет за собой полную смену протокола физического и канального уровней.

Три верхних уровня – приложений, представительский и сессионный – ориентированы на прикладные задачи и практически не зависят от физической технологии построения сети. Так, переход от Token Ring на Ethernet не требует изменений в перечисленных уровнях.

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

Вместе с названием сообщение ( message ) в стандартах ISO для обозначения единицы данных используют термин протокольный блок данных ( Protocol Data Unit, PDU ). В разных протоколах применяются и другие названия, закрепленные стандартами, или просто традиционные. Например, в семействе протоколов TCP/IP протокол TCP разделяет поток данных на сегменты, протокол UDP работает с датаграммами (или дейтаграммами, от datagram), сам протокол IP использует термин пакеты. Часто так же говорят о кадрах или фреймах.

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

Physical layer (layer 1)

Как видно из общей схемы расположения уровней в модели OSI, физический уровень ( Physical layer ) самый первый. Этот уровень описывает среду передачи данных. Стандартизируются физические устройства, отвечающие за передачу электрических сигналов (разъемы, кабели и т.д.) и правила формирования этих сигналов. Рассмотрим по порядку все составляющие этого уровня.

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

телефонный провод;

коаксиальный кабель ;

витая пара ;

оптоволокно.

Телефонный кабель начал использоваться для передачи данных со времен появления первых компьютеров. Главным преимуществом телефонных линий было наличие уже созданной и развитой инфраструктуры. С ее помощью можно передавать данные между компьютерами, находящимися на разных материках, так же легко, как и вести разговор людям, которые находятся за много тысяч километров друг от друга. На сегодняшний день использование телефонных линий также остается популярным. Пользователи, которых устраивает небольшая скорость передачи данных, могут получить доступ к Internetу со своих домашних компьютеров. Основными недостатками использования телефонного кабеля является небольшая скорость передачи, т.к. соединение происходит не напрямую, а через телефонные станции. При этом требование к качеству передаваемого сигнала при передаче данных значительно выше, чем при передаче "голоса". А так как большинство аналоговых АТС не справляется с этой задачей (уровень "шума", или помех, и качество сигнала оставляет желать лучшего), то скорость передачи данных очень низкая. Хотя при подключении к современным цифровым АТС можно получить высокую и надежную скорость связи.

Коаксиальный кабель использовался в сетях еще несколько лет назад, но сегодня это большая редкость. Такой тип кабеля по строению практически идентичен обычному телевизионному коаксиальному кабелю – центральная медная жила отделена слоем изоляции от оплетки. Некоторые отличия есть в электрических характеристиках (в телевизионном кабеле используется кабель с волновым сопротивлением 75 Ом, в сетевом – 50 Ом).

Основными недостатками этого кабеля является низкая скорость передачи данных (до 10 Мбит/с), подверженность воздействиям внешних помех. Кроме того, подключение компьютеров в таких сетях происходит параллельно, а значит, максимальная возможная скорость пропускания делится на всех пользователей. Но, по сравнению с телефонным кабелем, коаксиал позволяет объединять близко расположенные компьютеры с намного лучшим качеством связи и более высокой скоростью передачи данных.

Витая пара (" twisted pair ") – наиболее распространенное средство для передачи данных между компьютерами. В данном типе кабеля используется медный попарно скрученный провод, что позволяет уменьшить количество помех и наводок, как при передаче сигнала по самому кабелю, так и при воздействии внешних помех.

Существует несколько категорий этого кабеля. Перечислим основные из них. Cat 3 – был стандартизирован в 1991 г., электрические характеристики позволяли поддерживать частоты передачи до 16 МГц, использовался для передачи данных и голоса. Более высокая категория – Cat 5, была специально разработана для поддержки высокоскоростных протоколов. Поэтому его электрические характеристики лежат в пределах до 100Мгц. На таком типе кабеля работают протоколы передачи данных 10, 100, 1000 Мбит/с. На сегодняшний день кабель Cat5 практически вытеснил Cat 3. Основное преимущество витой пары перед телефонными и коаксиальными кабелями – более высокая скорость передачи данных. Также использование Cat 5 в большинстве случаев позволяет, не меняя кабельную структуру, повысить производительность сети (переходом от 10 к 100 и от 100 к 1000 Мбит/с).

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

одномодовое волокно;

многомодовое волокно.

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

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

Для включения компьютера в сеть используется специальное устройство – сетевой адаптер ( Network adapter ), позволяющий обмениваться наборами битов, представленными электрическими сигналами. Сетевая карта (так чаще называют сетевой адаптер ) обычно имеет шину ISA или PCI для подключения в компьютер и соответствующий разъем для подключения к среде передачи данных (например, для витой пары, коаксиал и т.п.).

Теперь, когда мы знаем, как происходит соединение компьютеров в одну сеть, рассмотрим варианты физической схемы такой сети, или, другими словами, физической топологии (структуры локальной сети).

Топология "шина" (bus) показана на рис. 16.4.

Лекция: Введение в сетевые протоколы: версия для печати и PDA - student2.ru

Рис. 16.4.

Топология "шина" (bus).

Все компьютеры и сетевые устройства подсоединены к одному проводу и фактически напрямую соединены между собой.

Топология "кольцо" (ring) показана на рис. 16.5.

Лекция: Введение в сетевые протоколы: версия для печати и PDA - student2.ru

Рис. 16.5.

Топология "кольцо" (ring).

Кольцо состоит из сетевых устройств и кабелей между ними, образующих одно замкнутое кольцо.

Топология "звезда" показана на рис. 16.6.

Лекция: Введение в сетевые протоколы: версия для печати и PDA - student2.ru

Рис. 16.6.

Топология "звезда" (star).

Все компьютеры и сетевые устройства подключены к одному центральному устройству.

Топология "расширенная звезда" (extended star) показана на рис. 16.7.

Лекция: Введение в сетевые протоколы: версия для печати и PDA - student2.ru

Рис. 16.7.

Топология "расширенная звезда"(extended star).

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

Data layer (layer 2)

Физический уровень пересылает просто набор сигналов – битов. При этом не учитывается, что несколько компьютеров, подключенных к одной среде передачи данных (например, к одному кабелю), могут начать одновременно передавать информацию в виде электрических импульсов, что, очевидно, приведет к смешению сигналов. Поэтому одной из задач Data layer (канальный уровень) является проверка доступности среды передачи. Также этот уровень отвечает за доставку фреймов между источником и адресатом в пределах сети с одной топологией. Для обеспечения такой функциональности Data layer разделяют на два подуровня:

логическая передача данных ( Logical Link Control, LLC );

управление доступом к среде ( Media Access Control, MAC ).

LLC отвечает за переход со второго уровня на более высший – третий сетевой уровень.

MAC отвечает за передачу данных на более низкий уровень – Physical layer.

Рассмотрим эти подуровни более подробно.

LLC sublayer

Этот подуровень был создан для обеспечения независимости от существующих технологий. Он обеспечивает обмен данными с сетевым (третьим) уровнем вне зависимости от физической среды передачи данных. LLC получает данные с сетевого уровня, добавляет в них служебную информацию и передает пакет для последующей инкапсуляции и обработки протоколом уровня MAC. Например, это может быть Ethernet, Token Ring, Frame Relay.

MAC sublayer

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

Он записан в энергонезависимой памяти сетевой карты и задается производителем. Длина MAC-адреса 48 бит, или 6 байт (каждый байт состоит из 8 бит), которые записываются в шестнадцатеричном формате. Первые 3 байта называются OUI (Organizational Unique Identifier), организационный уникальный идентификатор. Этот номер выдается каждому производителю сетевого оборудования международной организацией IEEE (Institute of Electrical and Electronic Engineers, Институт инженеров по электротехнике и радиоэлектронике, источник многих стандартов и спецификаций). Последние 3 байта являются идентификационным номером самой сетевой карты. Производитель гарантирует, что все его адаптеры имеют различные номера. Такая система адресов гарантирует, что в сети не будет двух компьютеров с одинаковыми физическими адресами.

Записываться физический адрес может в разных форматах, например: 00:00:B4:90:4C:8C, 00-00-B4-90-4C-8C, 0000.B490.4C8C – разные производители используют разные стандарты. Рассмотрим, например, адрес 0000.1c12.3456. Здесь 0000.1с – идентификатор производителя, а 12.3456 – идентификатор сетевой карты.

Один из самых распространенных протоколов MAC-уровня – протокол Ethernet. В сетях, построенных на его основе, применяется специальный метод для организации доступа к среде передачи данных – CSMA/CD (carrier sense multiple access/collision detect, коллективный доступ с опознаванием несущей и обнаружением коллизий ). Предполагается, что основой сети является общая шина (например, коаксиальный кабель ), к которой подключены все компьютеры. В результате сообщение, отправленное одной машиной, доставляется всем подключенным сетевым устройствам. CSMA/CD описывает целый комплекс мер, необходимых для предотвращения и корректной обработки коллизий (collision), то есть ситуаций, когда несколько компьютеров одновременно начали передачу данных. Очевидно, что в таком случае никто не сможет получить корректную информацию из сети.

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

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

Иногда бывает необходимо послать сообщение, которое должно быть получено всеми узлами локальной сети. В этом случае в пакете указывается MAC-адрес получателя в виде FF-FF-FF-FF-FF-FF. Этот адрес используется для широковещания ( broadcast ), которое примут все сетевые устройства и передадут на вышестоящий уровень.

Рассмотрим устройства, применяемые для построения сетей в разных топологиях.

Топология шина ("bus") описывает общую среду передачи данных, которая уже рассматривалась для иллюстрации протокола Ethernet. Специальных устройств для построения такой сети не используется (впрочем, конкретные технологии могут предъявлять специфические требования; например, концы коаксиального кабеля должны подключаться к особому устройству – терминатору, но это не влияет на структуру сети).

На топологии кольцо ("ring") основывается протокол Token Ring. Физически сеть представляет собой замкнутое кольцо, в котором каждый компьютер двумя отрезками кабеля соединяется со своими соседями. В отличие от сети, работающей на основе Ethernet, здесь используется более сложная схема. Передача ведется последовательно по кольцу в одном направлении. В сети циркулирует кадр специального формата – маркер (token). Если машина не имеет данных для передачи, она при получении маркера передает его дальше по кольцу. В противном случае она изымает его из обращения, что дает ей доступ к сети, и затем отправляет пакет с адресом получателя, который начинает передаваться по кольцу. Когда он доходит до адресата, тот делает пометку, что пакет получен. Машина-отправитель, получив подтверждение, отправляет соседу новый маркер для обеспечения возможности другим станциям сети передавать данные. Хотя этот алгоритм более сложен, он обеспечивает свойства отказоустойчивости.

При построении сети на основе топологии "звезда" нужно использовать, кроме сетевых карт в компьютере, дополнительное сетевое оборудование в центре, куда подключаются все "лучи звезды". Например, в качестве такого устройства может применяться концентратор (hub). В этом случае каждый компьютер подключается к нему с помощью кабеля " витая пара ". Алгоритм работы концентратора очень прост – получив пакет на один из своих портов, он пересылает его на все остальные. В результате снова получается общая шина, точнее, – логическая общая шина, поскольку физическая структура сети звездно-образная. Технология Ethernet позволяет снизить количество коллизий с помощью CSMA/CD. Недостатком концентратора является то, что пользователи сети могут "прослушивать" чужой трафик (в том числе перехватить пароль, если он передается в открытом виде). Общая максимальная скорость делится между всеми подключенными пользователями. То есть, если скорость передачи данных составляет 10 Мбит/с, то в среднем на каждого пользователя может приходиться всего 2 Мбит/с.

Более дорогим, но и более производительным решением является использование коммутатора (switch). Коммутатор, в отличие от концентратора, имеет в памяти таблицу, сопоставляющую номера его портов и MAC-адреса подключенных к нему компьютеров. Он анализирует у каждого пересылаемого фрейма адрес отправителя, пытаясь определить, какие машины подключены к каждому из его портов. Таким образом коммутатор заполняет свою таблицу. Далее при прохождении очередного фрейма он проверяет адрес получателя, и если он знает, к какому порту подключена эта машина, он посылает фрейм только на один этот порт. Если адрес получателя коммутатору неизвестен, то он отправляет фрейм на все порты, кроме того, с которого этот пакет пришел. Таким образом, получается, что если два компьютера обмениваются данными между собой, то они не перегружают своими пакетами другие порты и, соответственно, их пакеты практически невозможно перехватить.

Построенные таким образом сети могут охватывать несколько сотен машин и иметь протяженность в несколько километров. Как правило, такая сеть охватывает одно или несколько зданий одного предприятия, а потому называется локальной сетью (Local area network, LAN).

Network layer (layer 3)

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

Для примера представим себе телефонную сеть. Она также имеет иерархическую адресацию. Например, в номере +7-095-101-12-34 первая цифра обозначает код страны, далее идет код области/города( 095 ), а затем указывается сам телефон (101-12-34). Последний номер также является составным. 101 – это код станции, куда подключен телефон, а 12-34 определяет местоположение телефона. Благодаря такой иерархической структуре мы можем определить расположение требуемого абонента с наименьшими затратами. Иерархическая адресация для компьютерной сети также должна позволять устанавливать связь между разрозненными и удаленными сетями.

На сетевом уровне (Network layer) существует несколько протоколов, которые позволяют передавать данные между сетями. Наиболее распространенным из них на сегодняшний день является IP. Его предшественник, протокол IPX, сейчас уже практически не используется в публичных сетях, но его можно найти в частных, закрытых сетях.

Основное устройство, применяемое на 3-м уровне, называется роутером (router), или маршрутизатором. Он соединяет удаленные локальные сети (LAN), образуя глобальную сеть (Wide area network, WAN). Роутер имеет два или более сетевых интерфейса и таким образом подключен сразу к нескольким локальным сетям. Получив пакет с локального устройства или компьютера, принадлежащего к одной из LAN, роутер просматривает заголовок третьего уровня. На основании полученной информации роутер принимает решение, что делать с пакетом. Если получатель пакета находится в той же локальной сети, что и отправитель, роутер игнорирует его, поскольку сообщение, как уже рассматривалось, доставляется средствами более низкоуровневых протоколов (например, Ethernet ).

В противном случае пакет нужно передать в одну из других LAN, к которым подключен роутер. Основная задача этого устройства – выбор пути, по которому будет пересылаться сообщение. Поскольку может существовать множество связей между некоторыми двумя сетями отправителя и получателя, роутер должен выбрать наиболее оптимальный путь. Пересылка пакета от одного узла сети к следующему называется hop (дословно – прыжок, скачок). Выбор очередного узла, которому роутер перешлет сообщение, может зависеть от многих факторов – загрузка сети, наименьший путь до получателя, стоимость трафика по различным маршрутам и т.д.

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

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

IP-адрес

IP-адрес представляется 32-битным бинарным числом, которое часто записывают в виде 4 десятичных чисел, от 0 до 255 каждое. Например: 60.13.54.11, 130.154.201.1, 194.11.3.200. Логически он состоит из двух частей – адреса машины (host) и адреса сети (network). Сетевая часть IP-адреса показывает, к какой сети принадлежит адресат, а хост-часть (host) идентифицирует сетевое устройство в этой сети. Компьютеры с одинаковой сетевой частью находятся в одной локальной сети, а потому могут легко обмениваться данными. Если же у них различные network-ID, то, даже находясь в одном физическом сегменте, они обычно не могут "увидеть" друг друга.

Так как IP-адрес состоит из 4-х октетов (так называют эти числа, поскольку 256=28 ), один, два или три первых октета могут использоваться для определения сетевого адреса, остальные задают host-части. Для удобства выделения адресов пользователям (ведь, как правило, организации требуется их сразу несколько), было введено 5 классов адресов. Их обозначают латинскими буквами от A до E. В открытых сетях используются первые три из них.

В таблице 16.2 дано примерное разбиение IP-адресов на сетевую (N) и машинную (H) части в зависимости от класса сети.

Таблица 16.2. Примерное разбиение IP-адресов.1 октет2 октет3 октет4 октетКласс ANHHHКласс BNNHHКласс CNNNH


Класс A

В классе A для идентификации сети, к которой принадлежит адрес, используется первый октет, причем, первый бит всегда равен 0. Остальные октеты задают адрес хоста. Таким образом, адрес сети класса A может быть в диапазоне 0-126. 127-й адрес зарезервирован для специального использования – все адреса, начинающиеся со 127, считаются локальными для сетевого адаптера, то есть всегда отправитель сам является и получателем. Остальные свободные три октета применяются для задания адреса хоста в данной сети. Это означает, что в одной сети может быть использовано до 224 адресов (из них два крайних, то есть 0 и 224-1, зарезервированы, они рассматриваются ниже). Стало быть, в каждой из 127 сетей класса A можно адресовать 16,777,214 машин.

Диапазон адресов 10.0.0.0-10.255.255.255 в публичных сетях не используется. Эти адреса специально зарезервированы для применения в локальных сетях и глобальными маршрутизаторами не обрабатываются.


Класс B

В сети класса B первые два октета (причем, первый бит всегда равен 1, второй – 0) используются для определения сети, последние два октета – для определения адреса хоста. Диапазон адресов сети класса B лежит в пределах от 128.0.x.x до 191.255.x.x, что дает 16,384 таких сетей. В каждой из них может быть не более 65,534=216-2 адресов (два крайних адреса исключаются).

В этой подсети зарезервированными для локального использования являются следующие адреса: 172.16.0.0-172.31.0.0.


Класс C

Диапазон сети класса C определяется первыми тремя октетами (первые биты всегда 110 ). И в десятичном виде эта сеть может начинаться со 192 по 223. Для определения адреса хоста используется последний октет. Таким образом, в каждой из 2,097,152 сетей класса C может быть задействовано 28 (без двух крайних) или 254 адреса.

Зарезервированными для локального использования являются следующие адреса: 192.168.0.0-192.168.255.255.


Class D

Этот класс используется для особых задач (multicast-группы). Диапазон адресов – 224.0.0.0-239.255.255.255.


Class E

Этот класс адресов зарезервирован для применения в будущем. Диапазон адресов – 240.0.0.0-247.255.255.255.

Два адреса в каждой подсети являются зарезервированными. IP-адрес, в котором вся хост-часть состоит из бинарных нулей, используется для обозначения адреса самой сети. Например, сеть класса A может иметь адрес 112.0.0.0, а компьютер, подключенный к ней, – адрес 112.2.3.4. Адрес сети используется роутерами для задания маршрута.

Второй зарезервированный адрес – броадкаст-адрес ( broadcast ). Этот адрес применяется, когда источник хочет послать данные всем устройствам в локальной сети. Для этого хост-часть заполняется бинарными единицами. Например, для рассмотренной сети 112.0.0.0 это будет адрес 112.255.255.255, а для сети класса B 171.10.0.0 броадкаст-адрес будет выглядеть как 171.10.255.255. Данные, посланные по адресу 171.10.255.255, будут получены всеми устройствами в сети 171.10.0.0.

Подсети. Маска подсети

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

Адрес подсети включает в себя сетевую часть от сети класса A, B или C и так называемое поле подсети (subnet field). Для этого значения выделяют дополнительные биты, принадлежащие хост-части (то есть для адреса подсети может быть использовано до 3-х октетов из сети класса A, до 2-х из сети класса B, и 1 для C, соответственно). Таких битов может быть минимально один (таким образом одна сеть разделяется на две подсети), а максимально столько, чтобы для хост-части оставалось еще два бита (иначе подсеть будет состоять лишь из двух служебных адресов - адреса подсети и броадкаст-адреса). Для сетей класса A это дает от 1 до 22 битов, для B – от 1 до 14 битов, для C – от 1 до 6.

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

Для определения длины адреса подсети используется специальное понятие – маска подсети. Это число определяет, какая часть IP-адреса применяется для задания сетевой и подсетевой части. Маску подсети можно определить следующем образом. Запишем IP-адрес в бинарном виде. Все разряды, относящиеся к network- и subnet-части, заменим на 1, все значения, относящиеся к host-части,– на 0. В результате получим маску подсети.

Например, маска подсети для целой сети класса A будет выглядеть как 255.0.0.0, для сети класса B: 255.255.0.0, для сети класса C – 255.255.255.0. Для разделения на подсети, как было сказано выше, нужно некоторые биты хост-части выделить для поля подсети. Например, маска 255.255.255.192 определяет подсеть класса C, для которой количество хостов будет равно 62.

Протоколы ARP, RARP

Когда формируется пакет для отправления, на сетевом уровне закладывается IP-адрес получателя. Однако для передачи на нижестоящий канальный уровень также нужно знать MAC-адрес. Для определения соответствия IP-адресу MAC-адреса существует ARP-протокол (Address Resolution Protocol, протокол определения адресов). Он работает следующим образом.

Формируется специальный широковещательный ( broadcast ) запрос. Он рассматривался выше, его особенность в том, что его получают все устройства, подключенные к этой локальной сети. В таком запросе MAC-адрес получателя состоит из одних бинарных единиц, а в поле IP-адреса записывается именно тот адрес, для которого требуется определить MAC-адрес. Когда некий компьютер получает такой запрос, он сравнивает указанный IP-адрес со своим. Если они различаются, сообщение игнорируется. Если они равны, то формируется ответ, в котором по всем правилам указаны IP- и MAC-адреса отправителя, то есть искомой машины.

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

Наши рекомендации