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

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

Читать: Тайны и секреты компьютера - Антон Орлов на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:

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

Весьма интересной и полезной является тема восстановления информации на жестком диске после вирусной атаки или ошибки операционной системы. Ей посвящено немало публикаций, как в Интернете (например, на сервере www.ixbt.ru), так и в периодической печати. Информация, приведенная в этой главе, поможет вам понимать их.

Да и в любом случае — весьма полезно знать, как работает то, с чем сталкиваешься каждый день…

Глава 10. Порты. Прокси. Файерволл

Когда большинство пользователей компьютерных технологий видят слово «порт», то обычно с ним ассоциируются такие аббревиатуры, как COM, LPT, PS/2. То есть — попросту названия «гнезд», куда можно присоединить какие — либо периферийные устройства вроде сканера, принтера или модема. Разные типы таких портов предоставляют разные возможности и предназначены для работы с различными устройствами, подключаемыми к персональному компьютеру. Но при чтении литературы, описывающей работу в сети Интернет, при работе с программами для этой сети становится ясно, что слово «порт» имеет не только это, привычное всем, значение. Но какое же конкретно? И что, например, означает поле "номер порта", встречающееся почти во всех окнах настройки прокси-серверов (рис. 10.1)?


Рис. 10.1. Номер порта.

Как передаются данные между компьютерами в Интернете, надеюсь, ясно из предыдущей главы. Ну, а как эти самые данные находят на компьютере нужную им программу? Ведь почти все используемые сейчас операционные системы — многозадачные, и в них можно одновременно, скажем, и электронную почту отправлять или получать, и файлы на сервер помещать, и web-странички смотреть, и по Интернет-пейджеру общаться. Вот приходит пакет данных с электронным письмом на компьютер. Как он узнает, в какую программу ему пойти — в браузер или все же в почтовый клиент? Для этого и существует система портов.

Представим себе Интернет как большой город, состоящий из домов-компьютеров. Если адресом дома в такой аналогии будет служить IP-адрес, выделяемый компьютеру, то порт будет служить адресом квартиры. Каждый пакет данных имеет в себе адрес дома — IP компьютера, которому он предназначен. По этому адресу происходит маршрутизация пакета при его передаче от компьютера-сервера к компьютеру-получателю. Квартиры в доме-компьютере могут быть заняты (а могут и не быть) различными программами. И внутри этого дома маршрутизация происходит именно по номерам квартир-портов. Заведует этим всем операционная система — выделяет программам порты и распределяет приходящие пакеты по ним. Впрочем, точнее будет сказать, что все запущенные программы, предназначенные для работы с ресурсами Интернета, из всех пакетов данных, приходящих на компьютер, как бы «выбирают» те, которые адресованы именно им.

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

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

Различные порты различаются одним — своим номером. Всего возможных номеров портов весьма много — тысячи. Однако некоторые номера портов традиционно присвоены вполне определенным сервисам. К примеру, программа-web-сервер (то есть программа, которая может отвечать на запросы с удаленного компьютера, выдавая для просмотра документ Html и все файлы, которые из него вызываются) отвечает на запросы с указанием порта 80. Программа — Ftp-сервер, выдающая по запросу пользователя файлы, отвечает на запросы, в которых указано, что они посланы на порт 21. Иными словами, когда, скажем, ваш браузер запрашивает сервер, скажем, www.duel.ru, то он посылает пакет данных на порт 80 компьютера с IP-адресом, соответствующим www.duel.ru, а в пакете указывает номер своего порта, выделенного ему операционной системой. Сервер www.duel.ru, получив пакет, посылает на компьютер с запросившим его браузером пакет данных, адресуя его тому порту, с которого был прислан запрос. Операционная система, увидев по заголовку пакета, какому порту адресован пакет, отдаст его в браузер, который его обработает по собственному усмотрению.

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

Какие же выводы следуют из всего вышеизложенного?

На компьютере, основная задача которого — выдавать информацию в Сеть по запросам, может одновременно быть запущено сразу множество программ: web-сервер для выдачи web-страничек, ftp-сервер для скачивания файлов, почтовый сервер и др., причем у этого компьютера будет лишь один IP-адрес, по которому к нему будут обращаться с запросами и на загрузку файлов, и на просмотр сайта, и на работу с почтой. Каждая программа работает с запросами, приходящими к ней, по своему порту: web-сервер — по 80-му, Ftp-сервер — по 21-му и др. Браузерам, Ftp-клиентам вроде CuteFtp, почтовым клиентам номера портов выделяются операционной системой того компьютера, на котором они запущены. Номер порта, по которому работают эти серверы, указывается в их настройках.

Нетрудно понять, что в том случае, если web-сервер будет настроен на работу, скажем, по 81-му порту, то ни один браузер просто так связаться с ним не сможет. В многих программах, предназначенных для работы с ресурсами Интернет, есть возможность задавать номер порта, с которого сервер Интернета будет этой программе отвечать в том случае, если он настроен на работу с другого порта (рис. 10.2).


Рис. 10.2. Здесь настраиваются номера портов в почтовом клиенте The Bat!.

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

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

Далее. С системой портов тесно связана такая система защиты, как "файерволл".[26] Файерволлом называется программа, которая обеспечивает санкционированность всей информации, приходящей или уходящей с компьютера. К примеру, при отправке почты используется порт 25, а при получении — порт 110. С этими портами работает почтовая программа. Если же какая-нибудь другая программа, например, вирус-троян,[27] попытается связаться с чем-либо по этому порту, то файерволл не даст ей это сделать. Кроме того, файерволл не позволяет осуществить связь с удаленным компьютером по какому-либо порту, если это не разрешил пользователь. Перед началом использования файерволла производится его настройка — то есть указание номеров портов, через которые может идти обмен данных, и программ, которые с этими портами работают. В современных файерволлах настройка может пройти и автоматически.

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

Обеспечение безопасности компьютера от «взлома» извне тоже тесно завязано на управлении системой портов. На компьютере постоянно запущено множество программ. И не исключено, что при обращении к какому-либо порту какая-либо программа возьмет и ответит на запрос, да еще и проигнорировав какую-либо авторизацию доступа. Это — так называемая «дыра» в программе, за что ее авторов нещадно бьют. В другом случае операционная система, воспринимая данные по какому-либо порту, может попросту «повиснуть» — опять-таки из-за ошибки в ее программе. Так, до появления третьего Service Pack к Windows NT приход на компьютер с этой операционной системой пакетов данных, адресованных на 139-й порт, происходила либо перезагрузка Windows NT, либо ее «зависание». ("Дыры" могут быть основаны и на совсем других принципах — не только на системе портов, просто "дыра через порт" — один из многочисленных вариантов "дыр".)

Порты у компьютера можно «прослушать» — то есть послать на него пакеты данных, адресованные на все порты подряд, и ждать ответа хоть от какого-нибудь порта. Если с какого-либо порта придет ответ, то это значит, что с этим портом можно попробовать договориться — попытаться заставить работать программу, заведующую этим портом, в своих целях. Просканировать порты можно, например, с помощью программы Internet Maniac (рис. 10.3).


Рис. 10.3. Вот так сканируются порты. Это пример — а при настоящей хакерской атаке можно было бы и «дыру» отловить, да и самому попасться — зависит от умения обоих сторон.

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

Поскольку любой сложный программный комплекс включает в себя тысячи строк кода и множество функций, многие «дыры» в нем выявляются не сразу. К примеру, в Windows NT изначально «дыр» было предостаточно. Обычно в случае, если в программе выявляется «дыра», ее производитель выпускает специальное обновление, ее закрывающее. Такие обновления распространяются через Интернет. Особенно преуспела в закрытии своих «дыр» компания Microsoft, под обновления систем безопасности ее продуктов отведен целый большой раздел на ее сервере, что, впрочем, неудивительно — уж больно большие и сложные программы она выпускает.

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

* * *

При подключении к Интернету компьютеру выделяется провайдером постоянный или динамический IP-адрес (последний — в случае сеансового подключения, когда при каждом новом сеансе IP-адрес дается новый). Те пакеты данных, которые предназначены этому компьютеру, маршрутизируются в Сети именно по этому IP-адресу.

Но если к Интернету подключен компьютер, который в свою очередь является частью локальной сети, и необходимо обеспечить доступ к Web c остальных ее компьютеров, то возникает проблема. Заключается она в том, что выделенный для компьютера, имеющего доступ в Сеть, а значит, и фактически для всей этой сети IP-адрес — один, а компьютеров много, — и как тогда распределять пришедшие пакеты по компьютерам? Ведь пришедшие пакеты будут иметь одни и те же IP-адреса получателей.

Поэтому используется межсетевой шлюз — такая программа, которая как бы собой «подменяет» Интернет для локальной сети и локальную сеть для Интернета. Получив запрос от одного из компьютеров локальной сети, скажем, на загрузку web-страницы, она запоминает, от какого компьютера пришел этот запрос, и делает запрос в Интернет на загрузку той же страницы, но уже от своего имени и от имени и с IP-адреса того компьютера, на котором установлен прокси-сервер. Когда запрошенная страница загружается межсетевым шлюзом, она передается по локальной сети тому компьютеру, с которого был сделан запрос.

Обмен данными между компьютерами локальной сети и межсетевым шлюзом происходит по тому же протоколу, что и обмен данными во всем Интернете — TCP/IP. Поэтому в локальной сети каждый компьютер имеет свой внутренний IP-адрес, по которому с ним могут общаться другие компьютеры, в том числе и прокси-сервер. Межсетевой шлюз имеет два IP-адреса: для «своих» — тот, который присвоен ему в локальной сети, и для Интернета — тот, который присвоен ему провайдером.

Такой шлюз может быть и между двумя локальными сетями — принцип тот же: у компьютера два адреса — по одному из каждой сети

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

Обычно межсетевой шлюз между локальной сетью и Интернетом выполняет еще две важные задачи и называется поэтому прокси-сервером. Во-первых, он кэширует данные — все web-страницы, хоть раз запрошенные с одного из компьютеров локальной сети, на прокси-сервере сохраняются (некоторое время — зависит от настроек прокси-сервера). Поэтому работа с Интернетом через прокси-сервер может идти несколько быстрее, чем без него (при прямом подключении), так как раз загруженные страницы будут грузиться с прокси-сервера, а не из Сети. Также при наличии прокси-сервера затруднено проникновение на компьютеры локальной сети из Интернета по сравнению с той ситуацией, когда каждый компьютер имеет свой IP-адрес для работы в Сети, то есть, во-вторых, прокси-сервер обеспечивает "защиту от взлома". И, с другой стороны, при работе с ресурсами Интернета из такой локальной сети через прокси-сервер «выследить» компьютер будет практически невозможно — максимум, что можно будет узнать, так это адрес прокси-сервера.

Поскольку прокси-сервер в таком случае фактически играет роль "универсального Интернет-сервера" для всех компьютеров локальной сети, то для работы с ним необходимо указать его «координаты» в настройках программ для работы с Интернетом. К примеру, в браузере Microsoft Internet Explorer 5.0 это делается в пункте Сервис — Свойства обозревателя — Подключение — Настройки локальной сети — Прокси-сервер. К прокси-серверу компьютеры должны обращаться по какому-либо порту. По умолчанию для такой работы выделяется порт 80, но тут есть одна особенность — если на компьютере, на котором запущен прокси-сервер, запущен также и web-сервер для обеспечения доступа из Интернета к сайту, расположенном на этом компьютере, то 80-й порт будет использоваться именно для этого web-сервера, и тогда прокси-сервер придется настраивать для работы по другому порту. Соответственно надо будет настроить и программы для работы с ресурсами Интернет.

Строго говоря, для того, чтобы работать через прокси-сервер, не обязательно быть подключенным именно к его локальной сети. Если необходимо использовать возможность кэширования web-страниц или защищаться от взлома (или выслеживания), то можно настроить свой компьютер на работу с каким-нибудь прокси-сервером не из его локальной сети, а из Интернета, просто указав его интернетовский IP-адрес (конечно, если он постоянный). Тогда для прокси-сервера этот компьютер станет как бы частью его локальной сети, и все преимущества работы через прокси-сервер станут доступны. Можно также использовать прокси-сервер лишь для работы с web-страницами (то есть по протоколу HTTP), а по всем остальным протоколам работать без него. Для этого надо опять-таки особым способом настроить браузер — в Microsoft Internet Explorer 5.0 (рис. 10.4) для этого служит вкладка «Дополнительно» окна "Настройки локальной сети" (путь — см. выше). Это имеет смысл, когда прокси-сервер работает недостаточно быстро, и выигрыш в скорости получается лишь для web-страниц за счет их кэширования.


Рис. 10.4. Окно настроек использования прокси-серверов в браузере Microsoft Internet Explorer 5.0.

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

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

Полезные советы

· Если вы идете в Интернет-салон и желаете пользоваться там своими «закладками», сделанными вами в вашем браузере, или просто хотите отправить другу содержимое своего «Избранного», то не возитесь с ярлыками из одноименной папки — просто выберите (в Microsoft Internet Explorer 5.x) пункт "Файл"-"Импорт и экспорт" и проследуйте по ряду диалоговых окон. Автоматически будет создана web-страница, в которой поместятся гиперссылки на все сайты, присутствующие в вашем "Избранном".

· Не забывайте об имеющейся во многих почтовых клиентах возможности создавать папки для хранения почтовых сообщений. Никогда не оставляйте сообщения, которые не требуют скорой реакции, в папке входящих писем! Иначе вскоре вы рискуете полностью потерять возможность сколько-нибудь быстро в них ориентироваться. Создайте по папке для писем на каждую тему и после прочтения письма или написания на него ответа перемещайте его в нужную папку. В Outlook Express для создания новой папки нужно выбрать соответствующий пункт из меню правой кнопки мыши, выделив название любой из существующих папок.

· Если вам необходимо пообщаться с кем-либо по Сети в реальном времени, то не используйте программы типа ICQ или IRC, которые имеют очень низкий уровень защиты от внедрения вирусов или целенаправленных атак через Сеть. Лучше заведите гостевую книгу (это web-страница, на которую любой ее посетитель может помещать свой текст, который будет сразу же там отображаться), например, на www.guestbook.ru или www.chat.ru, сообщите собеседнику ее адрес и помещайте сообщения туда. На оперативности обмена сообщениями это не скажется — обновление гостевых книг происходит быстро. Во-первых, безопасность работы возрастет многократно — новые «дыры» в ICQ, позволяющие хакерам получать доступ к компьютерам пользователей этой программы, обнаруживаются едва ли не еженедельно. Во-вторых, все ваши сообщения будут автоматически сохраняться в архиве книги, не занимая к тому же места на жестком диске вашего компьютера. В-третьих, вы не будете связаны необходимостью одновременного выхода на связь — ваш собеседник может оставить свое сообщение в свое время, а вы потом, посетив книгу, его прочтете.

· Если вы желаете создать в Интернете архив своей переписки, чтобы при необходимости иметь возможность найти там нужное письмо, то не занимайтесь копированием ваших банков сообщений в Сеть, тратя на это время и деньги за доступ. Создайте на сервере, бесплатно предоставляющем много места под почтовый ящики (например, www.mailru.com, www.cmail.ru) два ящика — для ваших входящих и исходящих писем. Если сервер, где расположен ваш основной почтовый ящик, допускает перенаправление копий писем на другой адрес (таковыми являются практически все сервера бесплатной почты, подробнее — см. главу 23), то установите в качестве одного из адресов пересылки адрес первого из созданных вами ящиков, позаботившись, чтобы копии сообщений либо оставались на сервере, либо одновременно отправлялись в ящик, с которого вы забираете почту. Кроме того, всегда, отправляя письма, помещайте адрес второго из созданных вами ящиков в поле "Скрытая копия". В результате все входящие и исходящие письма будут копироваться в созданные вами ящики. Как только они будут заполнены, заведите следующие и соответственно измените параметры пересылок.

Если же ваш почтовый сервер не умеет перенаправлять письма на другой адрес, то заведите себе бесплатный почтовый ящик, например, на www.cmail.ru и настройте функцию сбора почты с вашего почтового ящика с оставлением копий сообщений на сервере, а потом уже с этого нового ящика установите перенаправление. Правда, в этом случае вам придется стараться забирать почту лишь сразу после того, как "сборщик почты" сработает, а то некоторые письма в архив не попадут.

· Чтобы переслать по Интернету какой-либо большой файл, не обязательно использовать систему электронной почты. Лучше зарегистрируйте аккаунт на каком-либо из серверов, предоставляющих бесплатное место под сайт и дающих доступ по FTP — например, www.chat.ru, www.fromru.com, А затем помещайте передаваемые файлы на этот аккаунт и отправляйте адресату ссылку на них. Во-первых, загружаться файлы с сервера будут быстрее, чем сообщение электронной почты, так как в последнем случае присоединенные к письму документы увеличиваются в обьеме за счет кодирования uuencode (подробнее — см. главу 13). Во-вторых, если у адресата плохая связь с Интернетом, то он сможет использовать программы докачки файлов вроде NetVampire или GetRight. И, в-третьих, если он по каким-то причинам потеряет загруженные файлы, то всегда сможет загрузить их снова, не беспокоя вас необходимостью повторной отправки.

Глава 13. дНАПН ОНФЮКНБЮРЭ, или о проблемах понимания русского языка…

Строчки, подобные той, что вас так привлекла в заголовке, наверняка иногда встречались вам в путешествиях по Интернету или при чтении электронной почты. Как вы наверняка знаете, такое возникает из-за неправильно подобранной кодировки для чтения текста, — в Internet Explorer даже есть меню специальное: Вид-Вид кодировки (если использовать пятую версию, а в более старых может быть и в других меню). Вы также наверняка пробовали открывать в программах для Windows файлы с текстом, созданные в старых программах для Dos, например, набранные в Norton Editor, и почти всегда возникало затруднение с их чтением: текст отображался примерно так, как на рис. 13.1, и что-либо понять было просто невозможно.


Рис. 13.1. Файл, набранный в Norton Editor и открытый в Блокноте

В чем же тут дело? Что такое «кодировка»? Почему их столько много, и все они разные? И, наконец, каким образом можно решить их проблему — не запускать же каждый раз Norton Editor, чтобы прочитать и напечатать свои старые файлы?

Кодовая страница

Как вы наверняка знаете, в компьютерных технологиях для записи текстовой информации используется кодирование символов последовательностями из восьми бит — одного байта.[28] Один байт соответствует одному символу. Иными словами, для записи одной буквы, цифры или значка применяется последовательность из восьми нулей и единиц.

Когда компьютерная программа получает из какого-нибудь источника компьютерные же данные, в которых содержится текст (читает текстовый файл с диска, с CD-ROM'а, получает текст из Интернета), то она выделяет из получаемого массива данных последовательности по восемь бит и воспринимает их как байты. Каждому байту, то есть каждой последовательности из восьми нулей и единиц соответствует определенный символ. Какой же конкретно? А вот это узнается программой из так называемой "таблицы символов", которая знакома абсолютно каждой программе, могущей отображать текст и используется программой для такого отображения.

Таблица символов (еще она называется "кодовой страницей") — это набор данных для перевода последовательностей бит в символы. Она может либо храниться в самой программе, либо в компонентах операционной системы и «поставляться» программе при запросе из нее. Получив последовательность из восьми бит, программа смотрит в таблицу символов и определяет из нее, какому символу эта последовательность бит соответствует. После этого программа использует дальше именно этот символ — например, отображает его на экране, чтобы пользователь мог читать текст.

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

Каждая последовательность восьми бит имеет также и свое числовое значение — это ведь фактически число в двоичной системе счисления, которое нетрудно перевести в десятичную. Например, 01010101 в двоичной системе счисления — это 85 в десятичной, а в соответствии с международными стандартами эта последовательность бит кодирует символ «U». Число 85 в данном случае называется кодом символа «U». То есть можно сказать, что при отображении текстовых данных программа, отображающая их, каждую последовательности восьми бит воспринимает как число — код символа, смотрит в таблице символов, кодом какого символа это число является и отображает именно этот символ. Таблицу символов можно отобразить визуально — например, в Windows этой цели служит программа "Таблица символов." При таком отображении символы расставляются по возрастанию их кодов.

Но с помощью восьми бит можно закодировать до 256 символов — в самом деле, каждый бит может иметь значение 0 или 1, то есть одно из двух, следовательно, всего различных восьмибитовых последовательностей может быть 2*2*2*2*2*2*2*2=28=256. Английских букв — 26, их же, но заглавных — столько же, цифры и служебные символы вроде запятой, точки займут еще ну, мест 50, если по максимуму. Поэтому для возможности адаптации операционных систем к различным другим алфавитным системам (то есть, в применении к русскому языку, русификации программ[29]) в качестве строгого международного стандарта было принято строгое соответствие отображаемым символам лишь первых 127 последовательностей восьми бит — то есть первой половины кодовой страницы, а вторую половину отдали "на откуп" производителям регионального программного обеспечения и информационных ресурсов — чтобы они размещали в ней свои алфавиты.


Рис. 13.2. Визуальное отображение кодовой страницы — программа "Таблица символов"

Узаконенные международными стандартами коды первых 127 символов кодовых страниц, которые должны быть едиными во всех таких страницах, получили название "стандарта ASCII". Эти символы также могут кодироваться всего семью битами информации. Первые 32 кода (от 0 до 31) были назначены управляющим символам (например, символ с кодом 13 — это символ конца абзаца), остальные кодировали строчные и прописные латинские буквы, цифры, знаки препинания и математических операций. Коды второй половины этой 256-символьной кодовой страницы получили название "расширенного стандарта ASCII". Ими кодировались, как уже было сказано выше, национальные алфавиты, а также символы псевдографики, математические и некоторые другие символы. Первый бит кода символа второй половины кодовой страницы имел значение «1», в то время как для первой половины он равнялся «0». Вы можете легко отобразить на экране символ с желаемым кодом, набрав, например, в Word его код (десятичный на цифровой клавиатуре, с нулем вначале) при удерживаемой клавише Alt.

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

Код такого символа передавался в программу драйвером клавиатуры, когда был включен специальный режим — "переключена раскладка". В таком режиме при нажатии какой-нибудь клавиши с символом драйвер передавал в программу не код собственно нажатой клавиши, а код, соответствующий в региональной кодовой странице тому символу, который был помещен на этой клавише при «локализации» клавиатуры, то есть гравировке или наклейке на ее кнопки символов неанглийского алфавита.

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

Российская особенность

В большинстве стран была создана одна кодовая страница для своего алфавита. Но в России были некоторые особенности.

Изначальные английские версии поставляемых в Россию программ не могли работать с русским алфавитом (это и ясно — в них же не было русской кодовой страницы). Поэтому была создана русская кодовая страница ISO-8859-5, в которой кодам символов, большим 127, соответствовали русские буквы. Так как их всего 33, а с заглавными — 66, то в кодовой странице осталось место для символов псевдографики. Для того, чтобы с этой кодовой страницей можно было работать, имелось три возможности: писать программы, отображающие символы именно в соответствии с ней; создать операционную систему, которая сама будет «заведовать» вводом и выводом текста в соответствии с нужной кодовой страницей, а программы будут лишь использовать готовый результат; создать специальную программу, которая будет работать вместе с операционной системой и обрабатывать ввод и вывод текстовой информации в соответствии с нужной кодовой страницей. Первая возможность из-за своей сложности использовалась мало, третья подразумевала создание и использование специальных программ — русификаторов, которые долгое время использовались, при использовании второй возможности была необходима русификация или локализация операционной системы — то есть внедрение в нее функций отображения символов в соответствии с заданной кодовой страницей. В настоящее время повсеместно применяются локализованные операционные системы, то есть те, в которых кроме внедрения функций работы с русской кодовой страницей еще и переведен интерфейс.

Вариантов русской кодовой страницы было два. Один, вышеупомянутый — ISO-8859-5. Другой, так называемый «альтернативный», отличался от него другим порядком следования русских букв до строчной «р» и имел ту особенность, что символы псевдографики кодировались в нем теми же кодами, что и в исходной английской таблице символов, а следовательно, при принятом в операционой системе этом варианте кодовой страницы можно было использовать нелокализованные версии западных программ, работающих с псевдографикой. Например, западная программа могла из символов псевдографики изобразить таблицу. Она считывала из файла код символа и отображала на экране соответствующий ему значок. Если в системе была установлена «альтернативная» кодовая страница, то это оказывался именно символ псевдографики и рисунок получался. Если же в системе стояла ISO-8859-5, то рисовалась русская буква, и внешний вид рисунка был весьма своеобразным. Поэтому несмотря на то, что в «альтернативной» кодовой странице русские символы шли не подряд, а с разрывом между строчными буквами «п» и «р», именно она впоследствии получила наибольшее распространение. Кодовая страница ISO-8859-5 применялась при русификации компьютерных систем Sun, поставлявшихся в Россию.

Заслуга внедрения русских кодовых страниц принадлежит российской компании «Диалог» и ее ведущему программисту Петру Квитеку. В 1989 году в этой фирме — партнере Microsoft была локализована MS-DOS 4.1, первой среди всех операционных систем. При ее создании в качестве основной кодовой страницы была взята «альтернативная» кодировка, названная Dos(866), — именно из-за того, что программы, использующие ее, корректно отображали символы псевдографики. Это привело к еще более широкому распространению данной кодовой страницы, так как MS-DOS была основной операционной системой для персональных компьютеров.

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

Шрифты

"Носителями" кодовых страниц в Windows являются шрифты. Каждый шрифт — это фактически как бы отдельная кодовая страница, в которой записана информация о внешнем виде отображаемых символов, их дизайну, графике и соответствии каждого графического изображения символа определенному коду. С помощью программы Windows "Таблица символов" можно посмотреть первые 256 символов, могущих быть отображенными с помощью данного шрифта. Это могут быть как символы, соответствующие кодовой странице Windows-1251 и применяемые для отображения текста, так и значки для «разукрашивания» текстового документа, хранящиеся в специальных символьных шрифтах или даже математические символы (рис. 13.3).


Рис. 13.3. Шрифт, состоящий из математических символов.

Практически все текстовые редакторы под Windows, кроме разве что Блокнота, дают возможность пользователю выбирать желаемый шрифт для его текста. Текст, набранный с помощью обычного шрифта, например, Ms Serif, будучи оформлен шрифтом символьным вроде Wingdings, превратится в набор символов: "íàáîðñèìâîëîâ", так как в этом шрифте на местах, соответствующих кодам символов русских букв, расположены графические картинки стрелок.

Unicode



Поделиться книгой:

На главную
Назад