UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

Рис. 1.6. История различных реализаций BSD
Многие системы Unix начинались с некоторой версии сетевого кода BSD, включавшей API сокетов, и мы называем их реализациями, происходящими от Беркли, или Беркли-реализациями (Berkeley-derived implementations). Многие коммерческие версии Unix основаны на Unix System V Release 4 (SVR4). Некоторые из них включают сетевой код из Беркли-реализаций (например, UnixWare 2.x), в то время как сетевой код других систем, основанных на SVR4, был разработан независимо (например, Solaris 2.x). Мы также должны отметить, что система Linux, популярная и свободно доступная реализация Unix, не относится к классу происходящих от Беркли: ее сетевой код и API сокетов были разработаны «с нуля».
1.9. Сети и узлы, используемые в примерах
На рис. 1.7 показаны различные сети и узлы, используемые нами в примерах. Для каждого узла мы указываем операционную систему и тип компьютера (потому, что некоторые операционные системы могут работать на компьютерах разных типов). Внутри прямоугольников приведены имена узлов, появляющиеся в тексте.

Рис. 1.7. Сети и узлы, используемые в примерах
Топология, приведенная на рис. 1.7, интересна для наших примеров, но на практике физическая топология сети оказывается не столь важной, поскольку взаимодействующие компьютеры обычно связываются через Интернет. Виртуальные частные сети (virtual private network, VPN) и защищенные подключения интерпретатора (secure shell connections, SSH) обеспечивают соединение, не зависящее от физического размещения компьютеров.
Обозначение «/24» указывает количество последовательных битов адреса начиная с крайнего левого, задающих сеть и подсеть. В разделе А.4 об этом формате рассказывается более подробно.
Хотим подчеркнуть, что настоящее имя операционной системы Sun — SunOS 5.x, а не Solaris 2.x, однако все называют ее Solaris.
Определение топологии сети
На рис. 1.7 мы показываем топологию сети, состоящей из улов, используемых в качестве примеров в этой книге, но вам нужно знать топологию вашей собственной сети, чтобы запускать в ней примеры и выполнять упражнения. Хотя в настоящее время не существует стандартов Unix в отношении сетевой конфигурации и администрирования, большинство Unix-систем предоставляют две основные команды, которые можно использовать для определения подробностей строения сети:
netstatifconfig/sbin/usr/sbin/usr/binPATH1.
netstat - i-nlinux % <b>netstat -ni</b>Kernel Interface tableIface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flgeth0 1500 0 49211085 0 0 0 40540958 0 0 0 BMRUlo 16436 0 98613572 0 0 0 98613572 0 0 0 LRUИнтерфейс закольцовки называется
loeth0freebsd % <b>netstat -ni</b>Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Collhme0 1500 <Link#1> 08:00:20:a7:68:6b 29100435 35 46561488 0 0hme0 1500 12.106.32/24 12.106.32.254 28746630 - 46617260 - -hme0 1500 fe80:1::a00:20ff:fea7 686b/64 fe80:1::a00:20ff:fea7:68b 0 - 0 - -hme0 1500 3ffe:b80:1f8d:1::1/64 3ffe:b80:1f8d:1::1 0 - 0 – -hme1 1500 <Link#2> 08:00:20:a7:68:6b 51092 0 31537 0 0hme1 1500 fe80:2::a00:20ff:fea7:686b/64 fe80:2::a00:20ff:fea7:686b 0 - 90 - -hme1 1500 192.168.42 192.168.42.1 43584 - 24173 - -hme1 1500 3ffe:b80:1f8d:2::1/64 3ffe:b80:1f8d:2::1 78 - 8 - -lo0 16384 <Link#6> 10198 0 10198 0 0lo0 16384 ::1/128 ::1 10 - 10 - -lo0 16384 fe80:6::1/64 fe80:6::1 0 - 0 - -lo0 16384 127 127.0.0.1 10167 - 10167 - -gif0 1280 <Link#8> 6 0 5 0 0gif0 1280 3ffe:b80:3:9ad1::2/128 3ffe:b80:3:9ad1::2 0 - 0 - -gif0 1280 fe80:8::a00:20ff:fea7:686b/64 fe80:8::a00:20ff:fea7:686b 0 - 0 - -Мы разбили некоторые длинные строки на несколько частей, чтобы сохранить ясность представления.
2.
netstat -r-nfreebsd % <b>netstat -nr</b>Routing tablesInternet:Destination Gateway Flags Refs Use Netif Expire
