
- •Сетевой уровень
- •Пример 2.5. Просмотр параметров сетевых интерфейсов (ifconfig)
- •Маршрутизация
- •Пример 2.6. Вывод таблицы маршрутизации (route)
- •Служебный протокол icmp
- •Пример 2.7. Пример выполнения команды traceroute
- •Информация о соединениях
- •Пример 2.8. Пример выполнения команды netstat
- •Удалённый терминал
- •Концепции iptables
Сеть в UNIX
Презентация 6-01: введение в сети
Сети стали неотъемлемой составляющей современных вычислительных систем. Технологии взаимодействия между информационными системами развиваются с 1970-х годов, ненамного опередив развитие UNIX. Операционная система UNIX почти с самого рождения интегрировала в себя технологии организации локальных сетей, на её основе затем была построена сеть Internet, распространившаяся ныне по всему миру.
Введение в сети
Организация взаимодействия между устройствами и программами в сети является сложной задачей. Сеть объединяет разное оборудование, различные операционные системы и программы — их успешное взаимодействие было бы невозможно без принятия общепринятых правил, стандартов.
В области компьютерных сетей существует множество международных и промышленных стандартов, среди которых следует особенно выделить международный стандарт OSI и набор стандартов IETF (Internet Engineering Task Force).
Семиуровневая модель OSI
Презентация 6-02: взаимодействие открытых систем
В модели OSI, называемой также моделью взаимодействия открытых систем (Open Systems Interconnection — OSI) и разработанной Международной Организацией по Стандартам (International Organization for Standardization — ISO), средства сетевого взаимодействия делятся на семь уровней, для которых определены стандартные названия и функции (см. Рисунок 2.33, «Уровни ISO OSI»).
Рисунок 2.33. Уровни ISO OSI
Каждый уровень предоставляет интерфейс к вышележащему уровню, скрывая детали реализации. При построении транспортной подсистемы какого-либо приложения наибольший интерес представляют функции физического, канального и сетевого уровней, тесно связанные с используемым в данной сети оборудованием: сетевыми адаптерами, концентраторами, мостами, коммутаторами, маршрутизаторами. Функции прикладного и сеансового уровней, а также уровня представления реализуются операционными системами и системными приложениями конечных узлов. Транспортный уровень выступает посредником между этими двумя группами протоколов.
Находящиеся на разных узлах сети процессы при обмене информацией взаимодействуют только с самым верхним уровнем, но данные при продвижении по сети проходят сначала через все уровни — от самого верхнего к самому нижнему — на одном узле и затем в обратном порядке на другом узле.
Рассмотрим подробнее назначение каждого из уровней:
Физический уровень
Физический уровень выполняет передачу битов по физическим каналам, таким как витая пара, оптоволоконный кабель или радиоволны. На этом уровне определяются характеристики физических сред передачи данных и параметров электромагнитных сигналов.
Канальный уровень
Канальный уровень обеспечивает передачу кадра данных между любыми узлами в сетях с типовой топологией либо между двумя соседними узлами в сетях с произвольной топологией, отвечает за установление соединения и корректность доставки данных по физическим каналам. В протоколах канального уровня заложена определенная структура связей между компьютерами и способы их адресации. Адреса, используемые на канальном уровне в локальных сетях, часто называют МАС-адресами (Media Access Control, управление доступом к среде). Часть канального уровня требует аппаратной реализации, в операционной системе он, как правило, представлен драйвером сетевой карты.
Сетевой уровень
Сетевой уровень в первую очередь должен предоставлять средства для решения следующих задач:
-
доставки пакетов в сети с произвольной топологией;
-
структуризации сети путем надежной локализации трафика;
-
согласования различных протоколов канального уровня.
Сетевой уровень позволяет передавать данные между любыми, произвольно связанными узлами сети (при этом не берёт на себя никаких обязательств по надежности передачи данных). Это достигается благодаря наличию адресации — каждый узел в сети имеет свой уникальный идентификатор.
Реализация протокола сетевого уровня подразумевает наличие в сети специального устройства — маршрутизатора. Маршрутизаторы объединяют отдельные сети в общую составную сеть. К каждому маршрутизатору могут быть присоединены несколько сетей (по меньшей мере две).
Транспортный уровень
Транспортный уровень обеспечивает передачу данных между любыми узлами сети с требуемым уровнем надежности. Для этого на транспортном уровне имеются средства установления соединения, нумерации, буферизации и упорядочивания пакетов.
Сеансовый уровень
Сеансовый уровень предоставляет средства управления диалогом, позволяющие фиксировать, какая из взаимодействующих сторон является активной в настоящий момент, а также предоставляет средства синхронизации в рамках процедуры обмена сообщениями.
Уровень представления
В отличие от нижележащих уровней, задача которых — надежная и эффективная передача битов от отправителя к получателю, уровень представления имеет дело с внешним представлением данных. На этом уровне могут выполняться различные виды преобразования данных, такие как компрессия и декомпрессия, шифровка и дешифровка данных.
Прикладной уровень
Прикладной уровень — это в сущности набор разнообразных сетевых сервисов, предоставляемых конечным пользователям и приложениям. Примерами таких сервисов являются, например, электронная почта, передача файлов, подключение удаленных терминалов к компьютеру по сети.
Существует несколько групп взаимосвязанных протоколов (называемые также стеки протоколов[3]), которые частично или полностью соответствуют уровням эталонной модели OSI. Для нас наибольший интерес представляет стек протоколов TCP/IP.
Протоколы Internet: TCP/IP
Презентация 6-03: протоколы Internet: TCP/IP
Протоколы TCP/IP (Transmission Control Protocol / Internet Protocol) были разработаны по заказу Министерства обороны США 30 лет назад для организации связи в рамках экспериментальной сети ARPAnet и представляет собой набор общих протоколов для разнородной вычислительной среды. Первая реализация стека TCP/IP была создана в стенах университета Беркли для операционнной системы UNIX. Популярность UNIX и удачные идеи, заложенные в TCP/IP, привели к образованию и бурному развитию международной сети Internet. Все протоколы семейства TCP/IP и связанные с ними проходят стандартизацию в организации IETF через выпуск так называемых RFC-документов (Request For Comment).
Протоколы, входящие в TCP/IP, частично соответствуют модели OSI (см. Рисунок 2.34, «Соответствие стека TCP/IP модели OSI»). Стек TCP/IP поддерживает на нижнем уровне все популярные стандарты физического и канального уровней: для локальных сетей — Ethernet, Token Ring, FDDI, для глобальных — PPP, ISDN. Основными протоколами стека, давшими ему название, являются протоколы IP и TCP, относящиеся к сетевому и транспортному уровням соответственно. IP обеспечивает продвижение пакета по сети, TCP гарантирует надёжность его доставки.
За долгие годы использования стек TCP/IP пополнился множеством протоколов прикладного уровня: FTP, SMTP, HTTP и т. п.
Рисунок 2.34. Соответствие стека TCP/IP модели OSI
Поскольку стек TCP/IP изначально создавался для глобальной сети, он имеет много особеностей, дающих ему преимущество перед другими протоколами, когда речь заходит о глобальных коммуникациях. Это возможность фрагментации пакетов, гибкая система адресации, простота широковещательных запросов. На сегодня TCP/IP — самый распространённый протокол вычислительных сетей.
Для UNIX-систем TCP/IP исторически являлся первым и остается основным сетевым протоколом. Рассмотрим, как в UNIX осуществляется администрирование сетевых соединений на основе TCP/IP.
Сетевой интерфейс в UNIX
Презентация 6-04: сетевой интерфейс в UNIX
Основной сетевой подсистемы UNIX является сетевой интерфейс. Сетевой интерфейс — это абстракция, связывающая канальный и сетевой (протокол TCP/IP) уровни сети в UNIX.
Сетевой интерфейс создается в момент загрузки драйвера сетевого устройства (например, сетевой карты) или создания логического соединения (например, в случае PPP). Каждый сетевой интерфейс в системе имеет уникальное имя, состоящее из типа устройства и номера (0 или больше для однотипных устройств). Под типами устройств в различных UNIX-системах может пониматься вид протокола канального уровня (Ethenet — eth) или название драйвера устройства (Realtek — rl).
Интерфейс имеет набор параметров, большая часть которых относятся к сетевому уровню (IP-адрес, маска сети и т. п.). Важным параметром сетевого интерфейса является аппаратный адрес (в случае Ethernet аппаратный адрес называется MAC-адрес и состоит из шести байтов, которые принято записывать в шестнадцатеричной системе счисления и разделять двоеточиями).
Основной утилитой для просмотра и управления параметрами сетевых интерфейсов в UNIX служит ifconfig. В настоящее время в ряде систем наряду с ней используется более современная утилита ip, с отличающимся синтаксисом параметров командной строки. Далее в приводимых примерах мы будем использовать в первую очередь традиционную и на сегодняшний день более распространённую утилиту inconfig
Утилита ifconfig, вызванная в командной строке без параметров, выводит сведения обо всех настроенных в данный момент сетевых интерфейсах. Чтобы просмотреть информацию о конкретном интерфейсе, необходимо указать его имя в качестве параметра ifconfig: