Опубликован: 04.07.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Европейский Университет в Санкт-Петербурге
Лекция 3:

Настройка и обслуживание сетевых соединений

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Ключевые слова: ISO/OSI, отношение, TCP, IP, приложение, запрос, сеанс, ADSL, маршрут, системный администратор, пользователь, алгоритм, стек протоколов, идеальные модели, HTTP, уровень представления, представление данных, сеансовый уровень, параметр сеанса, транспортный уровень, UDP, USER, protocol, transmission, control, сетевой уровень, Интернет, Internet, канальный уровень, LLC, Logical Link Control, mac, media, access control, Ethernet, связь, интерфейс, адрес, физический уровень, бит, четность, уровень модели, семейство протоколов, программа, FTP, сеть, группа, обратный, путь, заголовки, деление, виртуальное, сетевой адрес, байт, слово, классы сетей, разбиение, множества, локальная сеть, компьютер, маска сети, диапазон, представление, значение, подсеть, адресное пространство, RFC, поле, broadcast address, класс, зарезервированные адреса, управление маршрутизацией, loopback, шлюз, таблица маршрутизации, gateway, default gateway, место, письмо, почтовый ящик, IETF, engineering, task force, domain, routing, CIDR, домен, length, subnet mask, запись, маршрутизатор, информация, провайдер, NIC, маска, OSPF, IGRP, адрес сети, физические сегменты, имя файла, вывод, файл, имя хоста, сервер, команда, nameserver, Search, поиск, Unix, демон, ядро, внутренние команды, BOOTP, трансляция, подстановка, NAT, network address translation, IPFILTER, файрвол, firewall, SUN, SMF, IPFW

Обзор протокола TCP/IP

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

Модель межсетевого взаимодействия описывает семь уровней абстракции, которым соответствуют реальные сетевые протоколы передачи и обработки данных. Чтобы эти уровни обрели для нас смысл, рассмотрим вначале, как одни программы передают другим данные по сети. Некое приложение А желает получить данные от приложения В. Для этого приложение А оформляет свой запрос к приложению В в соответствии с некими правилами, которые хорошо известны обоим приложениям. Так, например, происходит при просмотре веб-страниц. Веб-обозреватель пользователя посылет запрос веб-серверу и ожидает от него ответ. Чтобы послать запрос, приложение А должно не только оформить этот запрос в соответствии с правилами, известными приложению В, но и потребовать от своей системы этот запрос передать. Для передачи запроса должнен быть установлен сеанс связи, в котором произойдет передача пакета с запросом и получение подтверждения об успешном прохождении пакета, а затем сеанс связи может быть завершен. Отметим при этом, что пакет может передава ться через сети различной природы, например, веб-обозреватель пользователя, подключенного к Интернету по технологии ADSL в Москве, может обратиться к веб-серверу Yahoo, подключенному к Интернету через канал АТМ.

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

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

Модель OSI/ISO

Рис. 3.1. Модель OSI/ISO

Уровень приложения этой модели описывает правила передачи данных от приложения к приложению. В случае веб-обозревателя и вебсервера этому уровню соответствует протокол HTTP.

Уровень представления описывает представление данных (например, в случае с HTTP символы национальных алфавитов кодируются последовательностями типа %E20; это легко видеть, когда вы делаете запрос в поисковой системе по-русски и в строке адреса этот запрос отображается такими последовательностями). Протокол уровня представления может зависеть от смысла передаваемых данных, используемой ОС и т.п.

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

Транспортный уровень задает правила передачи пакетов и гарантирует их доставку. Существуют два типа протоколов транспортного уровня – с гарантией доставки и без оной. Например, протокол UDP (User Datagram Protocol) – это протокол транспортного уровня без гарантии доставки пакета, а TCP (Transmission Control Protocol) – с гарантией доставки. Если протокол транспортного уровня не обеспечивает гарантию доставки, то эту функцию берут на себя протоколы более высоких уровней.

Сетевой уровень определяет правила адресации и форматы пакетов для передачи по сетям любой природы, независимо от того, какие каналы связи используются. В сети Интернет применяется протокол сетевого уровня IP (Internet Protocol).

Канальный уровень служит для определения правил передачи данных по каналу связи и включает в себя уровень управления логическим каналом (LLClogical link control) и уровень управления доступом к среде передачи (MACmedia access control). Примером протокола канального уровня является протокол Ethernet, широко используемый в локальных сетях или для быстрого доступа к провайдеру Интернет. В протоколах канального уровня, предполагающих связь нескольких сетевых интерфейсов, определяются адреса каждого из интерфейсов. Так, согласно протоколу Ethernet, каждый сетевой интерфейс должен иметь уникальный MAC-адрес, по которому можно отправить пакет.

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

Кроме того, различают еще один уровень модели межсетевого взаимодействия: "нулевой". Это – уровень среды передачи. Протоколы этого уровня описывают физические параметры сигналов, специфичные для конкретной среды передачи данных. Для медного провода это – уровень сигналов (например, +5В, ), допустимое сопротивление провода и т.п.

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

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

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

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

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

Адреса и маски

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

Здесь и далее в этой книге речь пойдет об IPv4, но многие из изложенных принципов будут справедливы и тогда, когда все перейдут на IPv6.

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

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

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

Разбиение всего множества адресов на блоки последовательных адресов (например, 212.133.5.0-212.133.5.255) обусловлено тем, что в каждой точке сети должно быть известно, в каком направлении следует отправить пакет, адресованный сетевому интерфейсу с неким адресом. Промежуточные маршрутизаторы, которые объединяют большие сети и являются своеобразными "вокзалами" для пакетов, следующих из одного региона планеты в другой, не должны хранить записи о местоположении каждого сетевого интерфейса и о маршруте следования к нему. Им достаточно знать, предположим, что пакет, следующий по адресу 212.133.5.13, следует отправлять туда же, куда и прочие пакеты из вышеуказанного диапазона адресов. Это же относится и к маршрутизаторам, объединяющим сеть среднего офиса с двумя-тремя диапазонами адресов, но всю тяжесть нагрузки легче представить на примере более загруженных систем.

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

Чтобы облегчить маршрутизаторам работу по запоминанию диапазонов адресов, были придуманы маски сетей, определяющие, какую часть IP-адреса занимает номер сети, а какую – номер компьютера1Строго говоря, не номер компьютера, а номер сетевого интерфейса, поскольку IP-адрес назначается интерфейсу, а не компьютеру; далее мы для краткости будем употреблять термин "номер компьютера". Можем оправдать это тем, что у компьютера в сети может быть несколько номеров – это же не серийный номер двигателя... (прим. авт.). в этой сети. Фактически, номер компьютера нужен только тому маршрутизатору, к которому непосредственно подключена локальная сеть, где находится компьютер – адресат пакета. В отличие от номера компьютера, номер сети используется всеми промежуточными маршрутизаторами, которые передают пакет друг другу от места отправки до места назначения.

Рассмотрим, как используется маска сети, на примере. Представим себе сеть, состоящую из трех сегментов. В каждом из них – по 40 компьютеров. Мы уже знаем, что для того, чтобы снабдить уникальными адресами каждый из них, нам понадобится 120 адресов, т.е. меньше, чем доступно в сети класса С. Стало быть, мы можем назначить для каждой подсети свой диапазон адресов, при этом достаточно использовать адреса только из одной сети класса С. Выберем три диапазона так, чтобы в каждом из них было не менее 40 доступных адресов: 192.168.0.0-192.168.0.63, 192.168.0.64-192.168.0.127 и 192.168.0.128-192.168.0.191. Адреса сетей в целом и широковещательные адреса включены в диапазоны.

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

У нас есть совершенно неизменная часть адресов в нашей сети – 192.168.0. Эти три байта адреса одинаковы для всех компьютеров нашей сети. Видно, что адреса в разных диапазонах отличаются значением последнего байта. Отметим, что адреса первого диапазона в двух старших битах этого байта имеют нули (действительно, двоичное представление чисел до 63 включительно дает значения от 00000000 до 00111111, старшие два бита выделены жирным шрифтом). Во втором диапазоне в упомянутых битах содержится 01: значения от 64 до 127 представляются в двоичном виде числами от 01000000 до 01111111. Аналогично, третий диапазон дает нам двоичные числа от 10000000 до 10111111. Выделенные биты разнятся между диапазонами, но одинаковы в пределах диапазона. Значение этих двух битов (их может быть больше, это зависит от числа диапазонов – подсетей, на которые разбита сеть) принято называть номером подсети; первый диапазон называют нулевой подсетью, второй – первой подсетью и т.д., смотря по значению этих битов.

Чтобы сообщить маршрутизатору, что к его первому сетевому адаптеру присоединена нулевая подсеть, ко второму – первая и к третьему – вторая, мы должны всего лишь указать маску сети на каждом из его сетевых интерфейсов. Так как мы уже договорились считать номером сети в IP-адресе значения тех битов, которые в маске имеют двоичное значение "1", то маска сети, разделенной на четыре подсети, будет иметь значение 255.255.255.192.

Почему значение последнего байта маски – 192? Потому, что 11000000 двоичное дает именно десятичное 192. Почему мы делим сеть на четыре подсети, хотя речь шла о трех диапазонах? Дело в том, что сеть можно разделить только на такое количество подсетей, которое кратно степени двойки. Поэтому вместо трех подсетей приходится брать ближайшее большее их количество.

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

Классы сетей

Самой крупной IP-сетью в мире является глобальная сеть Internet. Ее адресное пространство разделено на диапазоны адресов, которые называются "сетями". Сети разделены на классы. Адреса сетевых интерфейсов компьютеров в сети, как правило, относятся к классам A, B или С.

Разделение сетей на классы определяется в RFC 950 и ряде других RFC2RFC – Request For Comments – стандарты, используемые в сети Интернет. Текст стандартов можно бесплатно получить на сайте www.ripn.net.. Кроме сетей A, B, С есть и другие сети, представляющие собой меньшие по размеру блоки сетей, которые используются для различных служебных надобностей.

Сети классов от A до С отличаются значением первого байта IP-адреса. Значение первого байта сети класса А находится в диапазоне от 1 до 126, класса B – от 128 до 191, класса C – от 192 до 223. Классы сетей, в адресах которых первый байт имеет значение от 224 до 254, именуются от D до F. Они имеют служебное назначение, и их адреса не используются обычными сетевыми интерфейсами.

Предполагается, что в сетях класса A номер сети занимает первый байт, а остальные три – это номер компьютера (точнее, номер сетевого интерфейса). Таким образом, в сети класса А может быть до 16777214 интерфейсов. В сети класса В номер сети занимает два байта адреса, максимальное число интерфейсов в такой сети – 65534. В сети класса С номер сети занимает три байта, номер компьютера – один, максимальное число интерфейсов в такой сети – 254.

Зарезервированные сетевые адреса

Надо иметь в виду, что один компьютер может иметь несколько сетевых интерфейсов, а каждый интерфейс может иметь несколько адресов.

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

Так, IP-адрес, в котором поле номера компьютера заполнено двоичными нулями, используется в качестве номера данной сети в целом. Например, адрес 131.45.0.0 обозначает целую сеть класса B. IP-адрес, в котором поле номера компьютера заполнено двоичными единицами, является широковещательным адресом сети (broadcast address) и применяется для одновременной рассылки пакета всем компьютерам данной сети. Получив пакет с адресом получателя 131.45.255.255, каждый компьютер сети 131.45.0.0 (класс B) воспримет этот пакет как предназначенный ему. Эти зарезервированные адреса используются, например, в целях управления маршрутизацией.

Существуют и другие зарезервированные адреса. Адрес 127.0.0.1 всегда указывает на локальный внутренний интерфейс системы. "127.0.0.1" обозначает для системы то же самое, что для человека – слово "я". Этот локальный внутрений интерфейс требуется для того, чтобы одна программа (клиент) могла обратиться к другой программе (серверу), работающей на том же компьютере, стандартным образом. Например, можно обратиться из броузера на вашем компьютере к веб-серверу на вашем же компьютере. Локальный интерфейс обычно называется lo или lo0 (от слова loopback – "петля").

Адрес 0.0.0.0 используется для обозначения маршрута по умолчанию (основного шлюза), так как этот адрес означает "все сети".

Основной шлюз

Он зарезервирован для указания "всех остальных адресатов". Если пакет не удается соотнести с конкретной строкой таблицы маршрутизации, он отправляется в шлюз согласно указывающей на него строке таблицы маршрутизации. Например, таблица маршрутизации нашего хоста выглядит так:

# netstat -rn
Routing Table: IPv4
Destination Gateway Flags Ref Use Interface
192.168.5.0 192.168.5.33 U 1 2 elxl0
224.0.0.0 192.168.5.33 U 1 0 elxl0
default 192.168.5.1 UG 1 0
127.0.0.1 127.0.0.1 UH 61 1013 lo0

Адрес нашего компьютера в этой сети – 192.168.5.33. Предположим, нам надо отправить пакет по адресу 192.168.5.30. Для этого наша система посмотрит в таблицу маршрутизации и обнаружит там маршрут 192.168.5.0, для которого указан шлюз (gateway) 192.168.5.33 – наш собственный интерфейс. Стало быть, компьютер 192.168.5.30 находится в непосредственно присоединенной к нам сети и ему надо послать пакет напрямую.

Ситуация изменится, если адресатом будет, скажем, компьютер 192.168.10.1. Тогда в таблице маршрутизации вначале не найдется подходящего маршрута – ведь там нет отдельной строки для сети 192.168.10.1, верно? Тогда пакет будет отправлен в основной шлюз, "шлюз по умолчанию", тот, что в выводе netstat обозначен словом default. Адрес назначения пакетов "во все остальные сети", тех самых, которые отправляются в шлюз, в таблице маршрутизации в ядре обозначается как 0.0.0.0.

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

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.

Александр Гордеев
Александр Гордеев
Казахстан, Алматы, ТУРАН
Александр Даниленко
Александр Даниленко
Россия, Москва, 797, 1993