Однако поддержкой специальных плат нелинейного монтажа Linux похвастаться пока не может. Есть драйверы, написанные для плат серии Miro, однако они постоянно совершенствуются и поэтому не до конца стабильны. Маловато и программного обеспечения для нелинейного видеомонтажа. Остается надеяться, что положение постепенно исправится.
Игры
С играми, наверное, хуже всего. Одно из основных применений домашнего компьютера помимо мультимедиа – это игры. Зачастую только из-за них приобретается четверть всех домашних компьютеров. Проблема с разнообразием и качеством игр напрямую вытекает из технологии их создания. Для Linux есть большое количество небольших игр типа тетриса, пасьянсов, шахмат, нардов, го и реверси. То есть таких, которые не требуют огромной работы по программированию, написанию сценария, разработке трехмерных моделей и невообразимого количества текстур и рисунков. Как только дело доходит до серьезных игр – сразу образуется вакуум. Фирмы-разработчики игр почему-то не считают рынок Linux перспективным. Игры разрабатываются в расчете на Sony Play Station, Nintendo или Windows. А на рынок Linux с играми они выходить не спешат. Тем не менее (вот парадокс) программ-серверов, рассчитанных на Linux для игры через Интернет, достаточно много (те же Quake, Unreal). До недавнего времени только фирма Id Software выпускала Linux-версии своих игр. Фирма Loki Entertaiment разработала специальную библиотеку и перенесла из Windows в Linux достаточно много популярных игр. Кроме коммерческих игр, есть несколько игр с открытым исходным кодом, хотя, в основном, это Linux-реализации давно известных коммерческих игр мира Windows. Самыми яркими представителями здесь являются FreeCiv и FreeCraft Так что, если вы требовательны к разнообразию и качественности игр, к сожалению, Linux пока не для вас.
Итоги
Как следует из материалов этой главы, Linux отлично справится со всякими серверными приложениями и сервисами. С точки зрения администрирования тоже особых проблем нет. Миф о том, что Linux – чисто серверная платформа, и решать на ней офисные задачи невозможно, – только миф. Буквально на днях вышла русская редакция OpenOffice 1, причем, как под Linux, так и под Windows. Помимо этого, динамично развиваются офисы KDE и GNOME. В части домашнего применения картина складывается противоречивая. С одной стороны, отличная поддержка мультимедиа, с другой стороны, практически полное отсутствие современных игр под Linux. Остается надеяться, что с увеличением пользователей Linux производители игр будут выпускать и версии для Linux.
Ссылки
• www.freshmeat.net – сайт, содержащий большое количество программ для Linux и не только.
• www.openoffice.org – официальный сайт OpenOffice.
• www.sun.com – сайт фирмы Sun.
• koffice.kde.org – официальный сайт Koffice.
• www.gnome.org/gnome-office – официальный сайт GNOME-Office.
• www.kdevelop.org – официальный сайт KDevelop.
• www.codeforge.com – официальный сайт Code Forge.
• www.borland.com – официальный сайт фирмы Borland, разработчика Kylix.
• www.gnome.org – официальный сайт GNOME.
• www.kde.org – официальный сайт KDE.
• www.mozilla.org – официальный сайт Mozilla.
• www.opera.com – сайт фирмы-разработчика Opera.
• www.xlmian.com – сайт фирмы Ximian, внесшей весомый вклад в разработку GNOME, а также почтового клиента Evolution.
• www.linuxdocs.org – одно из наиболее полных собраний документации о Linux.
• www.linux-ve.chat.ru – электронная библиотека, посвященная Linux.
• www.citforum.ru – большое собрание русскоязычной документации и книг, в том числе посвященных Linux.
• www.linux.org.ru – один из основных русскоязычных сайтов, посвященных Linux.
• www.applix.com – сайт фирмы-разработчика Applixware.
• www.mysql.org – официальный сайт MySQL.
• www.interbase.com – официальный сайт Interbase.
• www.idsoftware.com – разработчик игр Doom, Quake, Quake II, Quake III.
• www.lokigames.com – сайт фирмы, которая переносит Windows-игры для Linux.
• www.linuxgames.org.ru – сайт, посвященный играм для Linux.
Часть II
Базовая информация о Linux
Глава 3
Работа в сети. Основные понятия
В этой главе будут рассмотрены базовые понятия, лежащие в основе всего последующего изложения. Как уже упоминалось, «компьютер – это сеть». С рассмотрения основных сведений о работе в сети мы и начнем.
Модели сетевых взаимодействий
Как и любая сложная система, сеть должна опираться на стандарты, без которых невозможно нормальное ее функционирование. За последние двадцать лет было создано множество концепций сетевых взаимодействий, однако наибольшее распространение получили всего две:
• модель взаимодействия открытых систем (OSI);
• модель сетевого взаимодействия TCP/IP.
Терминология
Для облегчения понимания содержимого этой главы приведем основные термины (табл. 3.1).
Таблица 3.1. Базовые сетевые терминыМодель взаимодействия открытых систем (OSI)
Еще в 1983 году Международная организация по стандартизации (International Organization for Standardization, ISO) разработала стандарт взаимодействия открытых систем (Open System Interconnection, OSI).
В результате получилась семиуровневая модель:
1. Физический уровень (Physical Level).
2. Уровень данных (Data Link Level).
3. Сетевой уровень (Network Level).
4. Транспортный уровень (Transport Level).
5. Уровень сессии (Session Level).
6. Уровень представления (Presentation Level).
7. Уровень приложения (Application Level).
Первый уровень самый элементарный, последующие – все более и более абстрагируются от особенностей физической среды передачи информации.
Каждый уровень модели OSI решает свои задачи, использует сервисы, предоставляемые предыдущим уровнем и, в свою очередь, предоставляет сервисы следующему уровню. Согласно этой модели, уровни не могут перескакивать через соседей, например, транспортный уровень не может непосредственно пользоваться сервисом физического уровня, он обязан пройти по цепочке: Сетевой уровень → Уровень данных → Физический уровень. В табл. 3.2 приведено описание уровней сетевой модели OSI.
Таблица 3.2. Уровни сетевой модели OSIНа каждом уровне блоки информации имеют собственное название (табл. 3.3).
Таблица 3.3. Название блока информации в моделиНесмотря на то что OSI является международным стандартом и на его основе правительство США выпустило спецификации GOSIP (Government Open Systems Interconnection Profile, Государственный регламент взаимодействия открытых систем), у производителей программного обеспечения стандарт OSI широкой поддержки не получил. Это объясняется несколькими причинами:
• на длительное время растянувшаяся процедура принятия стандарта;
• его «оторванность» от реалий;
• наличие большого числа уровней трудно для реализации и приводит к потере производительности;
• широчайшее распространение протокола TCP/IP и нежелание потребителей отказываться от него.
В результате, спецификации OSI сегодня – это, в основном, страницы в учебнике, в реальной жизни они не применяются.
Модель сетевого взаимодействия TCP/IP
Архитектура семейства протоколов TCP/IP (Transmission Control Protocol / Internet Protocol, протокол управления передачей / интернет-протокол) основана на представлении, что коммуникационная инфраструктура содержит три вида объектов: процессы, хосты и сети.
Основываясь на этих трех объектах, разработчики выбрали четырехуровневую модель:
1. Уровень сетевого интерфейса (Network interface layer).
2. Уровень межсетевого интерфейса – интернета[1] (Internet layer).
3. Транспортный уровень (Host-to-host Layer).
4. Уровень приложений/процессов (Application/process layer).
Сопоставление сетевых моделей OSI и TCP/IP
Нетрудно заметить, что модель TCP/IP отличается от модели OSI. В табл. 3.4 показано соответствие модели TCP/IP и модели OSI.
Таблица 3.4. Соответствие модели TCP/IP и модели OSIКак видно из таблицы, уровень сетевого интерфейса сетевой модели TCP/IP соответствует сразу двум уровням сетевой модели OSI, а уровень приложений сетевой модели TCP/IP – трем уровням сетевой модели OSI.
Сетевые протоколы
В этом разделе мы рассмотрим различные сетевые протоколы, используемые в современной компьютерной индустрии.
Семейство протоколов TCP/IP
Семейство протоколов TCP/IP включает следующие протоколы:
• межсетевой протокол (Internet Protocol – IP, протокол интернета) – соответствует уровню интернет-модели TCP/IP. Отвечает за передачу данных с одного хоста на другой;
• межсетевой протокол управления сообщениями (Internet Control Message Protocol, ICMP) – отвечает за низкоуровневую поддержку протокола IP, включая подтверждение получения сообщения, сообщения об ошибках и многое другое;
• протокол преобразования адресов (Address Resolution Protocol, ARP) – выполняет преобразование логических сетевых адресов в аппаратные МАС-адреса (Media Access Control). Соответствует уровню сетевого интерфейса;
• протокол пользовательских датаграмм (User Datagram Protocol, UDP) – обеспечивает пересылку данных без проверки с помощью протокола IP;
• протокол управления передачей (Transmission Control Protocol, TCP) – обеспечивает пересылку данных (с созданием сессии и проверкой передачи данных) с помощью протокола IP;
• множество протоколов уровня приложений (FTP, Telnet, IMAP, SMTP и др.).
Схема протоколов семейства TCP/IP представлена в табл. 3.5.
Таблица 3.5. Схема семейства протоколов TCP/IPПротоколы межсетевого уровня (интернет)
Протоколы межсетевого уровня (интернет) являются базовыми протоколами в семействе протоколов TCP/IP. Это протоколы TCP/IP, ARP/RARP и ICMP.
Протокол IP
Первоначальный стандарт IP разработан в конце 1970-х годов и не был рассчитан на огромное количество хостов, которое сейчас находится в Интернете. Поэтому в настоящее время утвержден новый стандарт IP (в литературе часто старый стандарт встречается как IPv4, а новый – как IPv6). Однако массового применения он пока не нашел из-за огромного количества программных и аппаратных средств, не способных работать с IPv6, поэтому мы здесь будем рассматривать, в основном, протокол IPv4.
Формат пакета IPv4Пакет IP состоит из заголовка и поля данных. Заголовок пакета имеет следующие поля:
• поле Номер версии (VERS) указывает версию протокола IP. Сейчас повсеместно используется версия 4 и готовится переход на версию 6;
• поле Длина заголовка (HLEN) пакета IP. Занимает 4 бита и указывает значение длины заголовка, измеренное в 32-битовых словах. Обычно заголовок имеет длину в 20 байт (пять 32-битовых слов), но при увеличении объема служебной информации эта длина может быть увеличена за счет использования дополнительных байтов в поле Резерв (IP OPTIONS);
• поле Тип сервиса (SERVICE TYPE) занимает 1 байт и задает приоритетность пакета и вид критерия выбора маршрута. Первые три бита этого поля образуют подполе приоритета пакета (PRECEDENCE). Приоритет может иметь значения от 0 (нормальный пакет) до 7 (пакет управляющей информации). Поле Тип сервиса содержит также три бита, определяющие критерий выбора маршрута. Установленный бит D (delay) говорит о том, что маршрут должен выбираться для минимизации задержки доставки данного пакета, бит Т – для максимизации пропускной способности, а бит R – для максимизации надежности доставки;
• поле Общая длина (TOTAL LENGTH) занимает 2 байта и указывает общую длину пакета с учетом заголовка и поля данных;
• поле Идентификатор пакета (IDENTIFICATION) занимает 2 байта и используется для распознавания пакетов, образовавшихся путем фрагментации исходного пакета. Все фрагменты должны иметь одинаковое значение этого поля;
• поле Флаги (FLAGS) занимает 3 бита, оно указывает на возможность фрагментации пакета (установленный бит Do not Fragment, DF – запрещает маршрутизатору фрагментировать данный пакет), а также на то, является ли данный пакет промежуточным или последним фрагментом исходного пакета (установленный бит More Fragments, MF – говорит о том, что пакет переносит промежуточный фрагмент);
• поле Смещение фрагмента (FRAGMENT OFFSET) занимает 13 битов, оно используется для указания в байтах смещения поля данных этого пакета от начала общего поля данных исходного пакета, подвергнутого фрагментации. Используется при сборке/разборке фрагментов пакетов при передачах их между сетями с различными величинами максимальной длины пакета;
• поле Время жизни (TIME ТО LIVE) занимает 1 байт и указывает предельный срок, в течение которого пакет может перемещаться по сети. Время жизни данного пакета измеряется в секундах и задается источником передачи средствами протокола IP. На шлюзах и в других узлах сети по истечении каждой секунды из текущего времени жизни вычитается единица, единица вычитается также при каждой транзитной передаче (даже если не прошла секунда). По истечении времени жизни пакет аннулируется;
• поле Идентификатор протокола верхнего уровня (PROTOCOL) занимает 1 байт и указывает, какому протоколу верхнего уровня принадлежит пакет (например, это могут быть протоколы TCP, UDP или RIP);
• поле Контрольная сумма (HEADER CHECKSUM) занимает 2 байта, она рассчитывается по всему заголовку;
• поля Адрес источника (SOURCE IP ADDRESS) и Адрес назначения (DESTINATION IP ADDRESS) имеют одинаковую длину – 32 бита и одинаковую структуру;
• поле Резерв (IP OPTIONS) является необязательным и используется обычно только при отладке сети. Это поле состоит из нескольких подполей, каждое из которых может быть одного из восьми предопределенных типов. Так как число подпол ей может быть произвольным, то в конце поля Резерв должно быть добавлено несколько байтов для выравнивания заголовка пакета по 32-битной границе.
Максимальная длина поля данных пакета ограничена разрядностью поля, определяющего эту величину, и составляет 65 535 байтов, однако при передаче по сетям различного типа длина пакета выбирается с учетом максимальной длины пакета протокола нижнего уровня, несущего IP-пакеты. В большинстве типов локальных и глобальных сетей определяется такое понятие, как максимальный размер поля данных кадра, в который должен разместить свой пакет протокол IP. Эту величину обычно называют максимальной единицей транспортировки – MTU (Maximum Transfer Unit). К примеру, сети Ethernet имеют значение MTU, равное 1500 байтов, сети FDDI – 4096 байтов.
IP-маршрутизаторы не собирают фрагменты пакетов в более крупные пакеты, даже если на пути встречается сеть, допускающая такое укрупнение. Это связано с тем, что отдельные фрагменты сообщения могут перемещаться в интерсети по различным маршрутам.
При приходе первого фрагмента пакета узел назначения запускает таймер, который определяет максимально допустимое время ожидания прихода остальных фрагментов этого пакета. Если время истекает раньше прибытия последнего фрагмента, то все полученные к этому моменту фрагменты пакета отбрасываются, а в узел, пославший исходный пакет, с помощью протокола ICMP направляется сообщение об ошибке.
Протокол IPv6Основные причины, из-за которых разрабатывался IPv6:
• протокол IPv4 разрабатывался в конце 1970-х годов с учетом существовавшей на тот момент сетевой инфраструктуры и аппаратного обеспечения. С того времени производительность массовых компьютеров увеличилась в десятки раз, и во столько же увеличилась пропускная способность сетей;
• появление приложений, использующих Интернет для передачи данных в реальном времени (звук, видео). Эти приложения чувствительны к задержкам передачи пакетов, т. к. такие задержки приводят к искажению передаваемых в реальном времени речевых сообщений и видеоизображений. Особенностью этих приложений является передача очень больших объемов информации. Однако в IPv4 не предусмотрено специального механизма резервирования полосы пропускания или механизма приоритетов;
• бурное развитие сети Интернет. Наиболее очевидным следствием такого развития стало почти полное истощение адресного пространства Интернета, определяемого полем адреса IP в четыре байта. Конечно, были разработаны механизмы компенсации нехватки адресов, однако это не решает проблему.
Основным предложением по модернизации протокола IP является предложение, разработанное группой IETF (Internet Engineering Task Force, группа решения задач межсетевого взаимодействия). В предложении IETF протокол IPv6 оставляет неизменными основные принципы IPv4. К ним относятся датаграммный метод работы, фрагментация пакетов, разрешение отправителю задавать максимальное число хопов (хоп – количество пересылок пакета от одного сетевого интерфейса к другому, иногда называется временем жизни пакета) для своих пакетов. Однако, в деталях реализации протокола IPv6 имеются существенные отличия от IPv4. Эти отличия коротко можно описать следующим образом:
• использование более длинных адресов. Новый размер адреса – наиболее заметное отличие IPv6 от IPv4. Версия 6 использует 128-битные адреса (16 байтов);
• гибкий формат заголовка. Вместо заголовка с фиксированными полями фиксированного размера (за исключением поля Резерв), IPv6 использует базовый заголовок фиксированного формата плюс набор необязательных заголовков различного формата;
• поддержка резервирования пропускной способности;
• поддержка расширяемости протокола. Это одно из наиболее значительных изменений в подходе к построению протокола – от полностью детализированного описания протокола к протоколу, который разрешает поддержку дополнительных функций.
Адресация в IPv6Адреса в IPv6 имеют длину 128 битов или 16 байтов. Версия 6 обобщает специальные типы адресов версии 4 в следующих типах адресов:
• Unicast – индивидуальный адрес. Определяет отдельный узел – компьютер или порт маршрутизатора. Пакет должен быть доставлен узлу по кратчайшему маршруту;
• Cluster – адрес кластера. Обозначает группу узлов, которые имеют общий адресный префикс (например, присоединенных к одной физической сети). Пакет должен быть маршрутизирован группе узлов по кратчайшему пути, а затем доставлен только одному из членов группы (например, ближайшему узлу);
• Multicast – адрес набора узлов, находящихся в том числе в различных физических сетях. Копии пакета должны быть доставлены каждому узлу набора с использованием аппаратных возможностей групповой или широковещательной доставки, если это возможно.
Как и в версии IPv4, адреса в версии IPv6 делятся на классы, в зависимости от значения нескольких старших битов адреса.
Большая часть классов зарезервирована для будущего применения. Наиболее интересным для практического использования является класс, предназначенный для провайдеров услуг Интернета, названный Provider-Assigned Unicast.
Для обеспечения совместимости со схемой адресации версии IPv4, в версии IPv6 имеется класс адресов, имеющих 0000 0000 в старших битах адреса. Младшие 4 байта адреса этого класса должны содержать адрес IPv4. Маршрутизаторы, поддерживающие обе версии адресов, должны обеспечивать трансляцию при передаче пакета из сети, поддерживающей адресацию IPv4, в сеть, поддерживающую адресацию IPv6, и наоборот.
Сетевые пакеты
Как уже упоминалось, информация по сети передается определенными порциями – пакетами. Причем, на каждом уровне пакет имеет свой размер и структуру. В результате в пакет нижнего уровня вкладывается пакет следующего уровня и т. д. Так же понятно, что чем более высокого уровня пакет, тем меньше информации он может содержать в себе. Размеры пакетов ограничиваются как особенностями аппаратуры, так и требованиями протоколов.
Маршрутизация пакетовМаршрутизация – механизм передачи пакетов между сетями. При маршрутизации пакетов решается задача, как за наименьшее время, по кратчайшему пути, с минимальной стоимостью доставить пакет. Как правило, в совокупности решить эту задачу не представляется возможным. Поэтому протоколы маршрутизации пакетов должны иметь возможность задавать различные правила и стратегии маршрутизации. К примеру, доставить пакет с максимальной скоростью или с минимальной стоимостью.
Протоколы маршрутизацииПротоколы маршрутизации классифицируются как протокол внутреннего шлюза (Interior Gateway Protocol, IGP) или протокол внешнего шлюза (Exterior Gateway Protocol, EGP).
Протокол внутреннего шлюза управляет маршрутизацией в пределах сети или группы сетей одного владельца, носящей название "автономная система". Внутри автономных систем имеется только список сетей, входящих в автономную систему, и известны точки взаимодействия с внешним миром.
Протокол внешнего шлюза отвечает за маршрутизацию между автономными системами.
На сегодняшний день широко используются следующие протоколы маршрутизации:
• RIP (Routing Information Protocol) – протокол данных маршрутизации. Устаревший протокол. Тем не менее, достаточно широко распространен благодаря утилите routed, которая является стандартной программой для операционных систем UNIX-семейства;
• OSPF (Open Shortest Path First) – протокол выбора кратчайшего пути. Протокол промышленного уровня. Рассчитан на крупные сети со сложной топологией. Более гибок, чем протокол RIP, однако по сравнению с ним сложнее в администрировании;
• IGRP (Interior Gateway Routing Protocol) – протокол маршрутизации внутреннего шлюза. Используется маршрутизаторами CISCO. По всей видимости, скоро сойдет со сцены;
• EGP (Exterior Gateway Protocol) – протокол внешнего шлюза. Старый протокол времен зарождения Интернета. Практически вытеснен протоколом BGP;
• BGP (Border Gateway Protocol) – протокол граничного шлюза. Протокол, в отличие от EGP, поддерживает сложную топологию сети. Имеет возможность широкой настройки стратегии маршрутизации;
• DVMRP (Vector Multicast Routing Protocol) – протокол групповой маршрутизации по вектору расстояния;
• RIP, OSPF и IGRP – внутренние протоколы; EGP и BGP – внешние протоколы.
Адресация в TCP/IPКаждый компьютер в сети IP имеет адреса трех уровней:
1. Локальный адрес узла, определяемый технологией (например, Ethernet), с помощью которой построена отдельная сеть, в которую входит данный узел. Для узлов, входящих в локальные сети – это МАС-адрес (Media Access Control) сетевого адаптера. МАС-адреса назначаются производителями оборудования и являются (теоретически) уникальными адресами, т. к. управляются централизованно, однако большинство производителей Ethernet-карт предоставляют утилиту для переназначения МАС-адреса. Для всех существующих технологий локальных сетей МАС-адрес имеет 6-байтовый формат: старшие 3 байта – идентификатор фирмы-производителя, а младшие 3 байта назначаются уникальным образом самим производителем.
• IP-adpec, состоящий из 4 байтов (стандарт IPv4) или 16 байтов (стандарт IPv6). Этот адрес используется на сетевом уровне. Он назначается администратором во время конфигурирования сети. IP-адрес состоит из двух частей: номера сети и номера узла. Номер сети может быть выбран администратором произвольно либо назначен по рекомендации специального подразделения Интернета (Network Information Center, NIC), если сеть должна работать как составная часть Интернета.
• Символьный идентификатор-имя, например, tosser.mail.ru. Этот адрес назначается администратором и состоит из нескольких частей, например, имени машины, имени фирмы, имени домена. Такой идентификатор-имя используется на прикладном уровне, например, в протоколе FTP.
IP-адрес состоит из двух частей: сетевой части и адреса хоста. На основании сетевой части адреса принимается решение о сетевой маршрутизации. Адрес хоста однозначно определяет сетевое устройство, которое, в большинстве случаев, совпадает с хостом (как обычно, не обойтись без исключений – некоторые компьютеры имеют несколько IP-адресов). Стандартно IP-адреса записываются как десятичные числа (по одному на каждый байт адреса), разделенные точками. К примеру, 192.168.44.2. Однако не все сетевые адреса могут использоваться для назначения их компьютерам. Исключениями являются адреса 0.0.0.0, 127.0.0.1, 255.255.255.255 и некоторые другие. Существует несколько классов сетевых адресов (табл. 3.6).