Новые книги

Эта книга посвящена вопросам разработки приложений с использованием интерфейса прикладного программирования операционных систем компании Microsoft (Windows 9х, Windows XP, Windows 2000 и Windows Server 2003). Основное внимание уделяется базовым системным службам, включая управление файловой системой, процессами и потоками, взаимодействие между процессами, сетевое программирование и синхронизацию. Рассматривается методика переноса приложений, написанных в среде Win32, в среду Win64. Подробно описываются все аспекты системы безопасности Windows и ее практического применения. Изобилие реальных примеров, доступных также и на Web-сайте книги, существенно упрощает усвоение материала.

Книга ориентирована на разработчиков и программистов, как высокой квалификации, так и начинающих, а также будет полезна для студентов соответствующих специальностей.
Данная книга в основном посвящена программированию в среде GNU/Linux. Авторы применяют обучающий подход, последовательно излагая самые важные концепции и методики использования расширенных возможностей системы GNU/Linux в прикладных программах. Читатели научатся писать программы, к интерфейсу которых привыкли пользователи Linux; освоят такие технологии, как многозадачность, многопотоковое программирование, межзадачное взаимодействие и взаимодействие с аппаратными устройствами; смогут улучшить свои программы, сделав их быстрее, надежнее и безопаснее; поймут особенности системы GNU/Linux, ее ограничения, дополнительные возможности и специфические соглашения.

Книга предназначена для программистов, уже знакомых с языком С и имеющих базовый опыт работы в GNU/Linux.

IP Addresses

IP-адреса

Как сказано в главе 1, IP-адреса, это 32-битовые числа. Каждая машине в данной сети должна иметь уникальный адрес. В локальной сети, которая не использует TCP/IP для связи с другими сетями, вы можете назначить эти адреса согласно вашим персональным предпочтениям. Однако, для участков Internet, они назначаются NIC (Network Information Center). Есть несколько диапазонов IP-адресов, зарезервированных для частных сетей. Они перечислены в таблице 2-1.

Для более легкого чтения, IP-адреса разбивают на четыре 8-битовых числа, названных octets. Например, quark.physics.groucho.edu имеет IP-адрес 0x954C0C04, который записывается как 149.76.12.4. Этот формат часто называют dotted quad notation (запись с точками-разделителями).

Другая причина такой записи в том, что IP-адреса разбиваются на адрес сети (network), который написан в первых octets, и адрес машины (хоста, host), который является остатком. При обращении к NIC за адресами, вы не получаете адрес для каждого отдельного хоста, который вы планируете поставить. Вместо этого Вам дают сетевой адрес и позволяют назначать машинам любые IP-адреса из заданного таким образом диапазона.

В зависимости от размера сети машинная часть адреса может быть меньшей или большей. В зависимости от различных потребностей имеются несколько классов сетей, определяющих различное разбиение IP-адресов:

Класс A

Класс A включает сети от 1.0.0.0 до 127.0.0.0. Сетевой адрес содержится в первом octet, что предусматривает 24-разрядную хост-часть, сеть приблизительно из 1.6 миллиона хостов. Большая.

Класс B

Класс B содержит сети от 128.0.0.0 до 191.255.0.0. Сетевой адрес находится в первых двух octets. Это предполагает 16320 подсетей с 65024 хостами в каждой.

Класс C

Класс C включает диапазон сетей от 192.0.0.0 до 223.255.255.0. Адрес сети содержится в первых трех octets. Это предполагает почти 2 миллиона подсетей по 254 хоста каждая.

Классы D, E и F

Адреса в диапазоне от 224.0.0.0 до 254.0.0.0 являются экспериментальными или сохранены для будущего использования и не определяют какую-либо сеть. IP Multicast, сервис, который позволяет транслировать в internet данные из одной точки на несколько, может быть связан с этим диапазоном.

Если мы вернемся к примеру в главе 1, увидим, что 149.76.12.4, адрес quark, относится к хосту 12.4 в сети 149.76.0.0 класса B.

Вы можете заметить, что в вышеупомянутом списке для каждого octet в части хоста возможны не все значения. Это потому, что адреса хоста со всеми octets равными 0 и 255 сохранены для специальных целей. Адрес, в котором все биты хост-части выставлены в 0, относится ко всей сети, а адрес, где все биты хост-части выставлены в 1, назван broadcast address (широковещательным адресом). Он относится ко всем хостам указанной сети. Таким образом, 149.76.255.255 не существующий адрес хоста, он относится ко всем хостам сети 149.76.0.0.

Имеются еще два зарезервированных адреса: 0.0.0.0 и 127.0.0.0. Первый назван default route (путь по умолчанию), последний loopback address (кольцевой адрес). default route используется при маршрутизации IP-пакетов, с которым мы будет иметь дело чуть позже.

Сеть 127.0.0.0 сохранена для работы IP внутри хоста. Обычно адрес 127.0.0.1 будет назначен специальному интерфейсу на вашем хосте, так называемому интерфейсу loopback interface, который действует подобно кольцу. Любой IP-пакет, переданный ему от TCP или UDP, будет возвращен к ним, как будто он только что прибыл из некоторой сети. Это позволяет тестировать сетевое программное обеспечение без использования реальной сети. Также он полезен, когда вы хотите использовать сетевое программное обеспечение на автономном компьютере (в терминах сети, хосте). Например, большое количество UUCP-участков не имеют IP связи вообще, но все же хотят управлять системой новостей INN. Однако для правильной работы под Linux, INN требует интерфейса loopback.

Некоторые диапазоны адресов каждого из сетевых классов были отложены и обозначены “reserved” или “private”. Эти адреса зарезервированы для использования частными сетями и не направлены на Internet. Они обычно используются организациями, формирующими их собственный intranet (локальные сети с архитектурой и логикой Internet), но даже маленькие сети часто находят их полезными. Зарезервированные сетевые адреса показаны в таблице 2-1 .

Таблица 2-1. Диапазоны IP-адресов, зарезервированных для частных сетей

Класс Сети
A от 10.0.0.0 до 10.255.255.255
B от 172.16.0.0 до 172.31.0.0
C от 192.168.0.0 до 192.168.255.0