Чтение онлайн

на главную - закладки

Жанры

UNIX: разработка сетевых приложений
Шрифт:

Таблица 1.2. Различные версии сервера времени и даты, рассматриваемые в данной книге

Листинг Описание
1.5 TCP/IPv4, зависимый от протокола
11.7 TCP, независимый от протокола, вызывает getaddrinfo и tcp_listen
11.8 TCP, независимый от протокола, вызывает getaddrinfo и tcp_listen
11.13 UDP, независимый от протокола, вызывает getaddrinfo и udp_server
13.2 TCP, независимый от протокола, выполняется как автономный демон
13.4 TCP, независимый от протокола, порожденный демоном inetd

Таблица 1.3. Различные версии эхо-клиента, рассматриваемые в

данной книге

Листинг Описание
5.3 TCP/IPv4, зависимый от протокола
6.1 TCP, использует функцию select
6.2 TCP, использует функцию select и работает в пакетном режиме
8.3 UDP/IPv4, зависимый от протокола
8.5 UDP, проверяет адрес сервера
8.7 UDP, вызывает функцию connect для получения асинхронных ошибок
14.2 UDP, тайм-аут при чтении ответа сервера с использованием сигнала SIGALRM
14.4 UDP, тайм-аут при чтении ответа сервера с использованием функции select
14.5 UDP, тайм-аут при чтении ответа сервера с использованием опции сокета SO_RCVTIMEO
14.7 TCP, использует интерфейс /dev/poll
14.8 TCP, использует интерфейс kqueue
15.4 Поток домена Unix, зависит от протокола
15.6 Дейтаграмма домена Unix, зависит от протокола
16.1 TCP, использует неблокируемый ввод-вывод
16.6 TCP, использует два процесса (функцию fork)
16.14 TCP, устанавливает соединение, затем посылает пакет RST
20.1 UDP, широковещательный, ситуация гонок
20.2 UDP, широковещательный, ситуация гонок
20.3 UDP, широковещательный, для устранения ситуации гонок используется функция pselect
20.5 UDP, широковещательный, для устранения ситуации гонок используются функции sigsetjmp и siglongmp
20.6 UDP, широковещательный, для устранения ситуации гонок в обработчике сигнала используется IPC
22.4 UDP, увеличение надежности протокола за счет применения повторной передачи, тайм-аутов и порядковых номеров
26.1 TCP, использование двух потоков
27.4 TCP/IPv4, задание маршрута от отправителя
27.5 UDP/IPv6, задание маршрута от отправителя

Таблица 1.4. Различные версии эхо-сервера, рассматриваемые в данной книге

Листинг Описание
5.1 TCP/IPv4, зависимый от протокола
5.9 TCP/IPv4, зависимый от протокола, корректно обрабатывает завершение всех дочерних процессов
6.3 TCP/IPv4, зависимый от протокола, использует функцию select, один процесс обрабатывает всех клиентов
6.5 TCP/IPv4, зависимый от протокола, использует функцию poll, один процесс обрабатывает всех клиентов
8.1 UDP/IPv4, зависимый от протокола
8.14 TCP и UDP/IPv4, зависимый от протокола, использует функцию select
14.6 TCP, использует стандартный ввод-вывод
15.3 Доменный сокет Unix, зависимый от протокола
15.5 Дейтаграмма домена Unix, зависит от протокола
15.13 Доменный сокет Unix, с передачей данных, идентифицирующих клиента
22.3 UDP, печатает полученный IP-адрес назначения и имя полученного интерфейса, обрезает дейтаграммы
22.13 UDP, связывает все адреса интерфейсов
25.2 UDP, использование модели ввода-вывода, управляемого сигналом
26.2 TCP, один поток на каждого клиента
26.3 TCP,
один поток на каждого клиента, машинонезависимая (переносимая) передача аргумента
27.4 TCP/IPv4, печатает полученный маршрут от отправителя
27.6 UDP/IPv4, печатает полученный маршрут от отправителя и обращает его
28.21 UDP, использует функцию icmpd для получения асинхронных ошибок
Д.9 UDP, связывает все адреса интерфейсов

1.7. Модель OSI

Распространенным способом описания уровней сети является предложенная Международной организацией по стандартизации (International Standards Organization, ISO) модель взаимодействия открытых систем( open systems interconnection, OSI). Эта семиуровневая модель показана на рис. 1.5, где она сравнивается со стеком протоколов Интернета.

Рис. 1.5. Уровни модели OSI и набор протоколов Интернета

Мы считаем, что два нижних уровня модели OSI соответствуют драйверу устройства и сетевому оборудованию, которые имеются в системе. Обычно нам не приходится беспокоиться об этих уровнях, за исключением того, что мы должны знать некоторые свойства канального уровня — например, что MTU (максимальная единица передачи) Ethernet, которая описывается в разделе 2.11, имеет размер 1500 байт.

Сетевой уровень управляется протоколами IPv4 и IPv6, оба они описываются в приложении А. Из протоколов транспортного уровня мы можем выбирать TCP, UDP и SCRIPT, они описываются в главе 2. На рис. 1.5 изображен разрыв между TCP и UDP; это означает, что приложение может обойти транспортный уровень и использовать IPv4 или IPv6 непосредственно. В таких случаях речь идет о символьных сокетах( raw socket), которые будут описаны в главе 28.

Три верхних уровня модели OSI соответствуют уровню приложений. Приложением может быть веб-клиент (браузер), клиент Telnet, веб-сервер, сервер FTP или любое другое используемое нами приложение. В случае протоколов Интернета три верхние уровня модели OSI разделяются очень редко.

Описанный в этой книге API сокетов является интерфейсом между верхними тремя уровнями («приложением») и транспортным уровнем. Это один из важнейших вопросов книги: как создавать приложения, используя сокеты TCP и UDP. Мы уже упоминали о символьных сокетах, и в главе 29 мы увидим, что можем даже полностью обойти уровень IP, чтобы читать и записывать свои собственные кадры канального уровня.

Почему сокеты предоставляют интерфейс между верхними тремя уровнями модели OSI и транспортным уровнем? Для подобной организации модели OSI имеются две причины, которые мы отобразили на правой стороне рис. 1.5. Прежде всего, три верхних уровня отвечают за все детали, имеющие отношение к приложению (например, FTP, Telnet, HTTP), но знают мало об особенностях взаимодействия по сети. Четыре же нижних уровня знают мало о приложении, но отвечают за все, что связано с коммуникацией: отправку данных, ожидание подтверждения, упорядочивание данных, приходящих не в должном порядке, расчет и проверку контрольных сумм и т.д. Второй же причиной является то, что верхние три уровня часто формируют так называемый пользовательский процесс( user process), в то время как четыре нижних уровня обычно поставляются как часть ядра операционной системы. Unix, как и многие современные операционные системы, обеспечивает разделение пользовательского процесса и ядра. Следовательно, интерфейс между уровнями 4 и 5 является естественным местом для создания API.

1.8. История сетевого обеспечения BSD

API сокетов происходит от системы 4.2BSD (Berkeley Software Distribution — программное изделие Калифорнийского университета, в данном случае — адаптированная для Интернета реализация операционной системы Unix, разрабатываемая и распространяемая этим университетом), выпущенной в 1983 году. На рис. 1.6 показано развитие различных реализаций BSD и отмечены главные этапы развития TCP/IP. Некоторые изменения API сокетов также имели место в 1990 году в реализации 4.3BSD Reno, когда протоколы OSI были включены в ядро BSD.

Вертикальная цепочка систем на рис. 1.6 от 4.2BSD до 4.4BSD включает версии, созданные группой исследования компьютерных систем (Computer System Research Group, CSRG) университета Беркли. Для использования этих реализаций требовалось, чтобы у получателя уже была лицензия на исходный код для Unix. Однако весь код сетевых программ — и поддержка на уровне ядра (например, стек протоколов TCP/IP и доменные сокеты Unix, а также интерфейс сокетов), и приложения (такие, как клиенты и серверы Telnet и FTP), были разработаны независимо от кода Unix, созданного AT&T. Поэтому начиная с 1989 года университет Беркли начал выпускать реализации системы BSD, не ограниченные лицензией на исходный код Unix. Эти реализации распространялись свободно и, в конечном итоге, стали доступны через анонимные FTP-серверы фактически любому пользователю Интернета.

Последними реализациями Беркли стали 4.4BSD-Lite в 1994 году и 4.4BSD-Lite2 в 1995 году. Нужно отметить, что эти две реализации были затем использованы в качестве основы для других систем: BSD/OS, FreeBSD, NetBSD и OpenBSD, и все четыре до сих пор активно развиваются и совершенствуются. Более подробную информацию о различных реализациях BSD, а также общую историю развития различных систем Unix можно найти в главе 1 книги [74].

Рис. 1.6. История различных реализаций BSD

Поделиться:
Популярные книги

Отморозки

Земляной Андрей Борисович
Фантастика:
научная фантастика
7.00
рейтинг книги
Отморозки

Цеховик. Книга 2. Движение к цели

Ромов Дмитрий
2. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цеховик. Книга 2. Движение к цели

Гримуар темного лорда V

Грехов Тимофей
5. Гримуар темного лорда
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда V

Комендант некромантской общаги 2

Леденцовская Анна
2. Мир
Фантастика:
юмористическая фантастика
7.77
рейтинг книги
Комендант некромантской общаги 2

Попаданка в деле, или Ваш любимый доктор

Марей Соня
1. Попаданка в деле, или Ваш любимый доктор
Фантастика:
фэнтези
5.50
рейтинг книги
Попаданка в деле, или Ваш любимый доктор

Ведьмак. Назад в СССР

Подус Игорь
1. Ведьмак. Назад в СССР
Фантастика:
попаданцы
альтернативная история
6.60
рейтинг книги
Ведьмак. Назад в СССР

Здравствуй, 1984-й

Иванов Дмитрий
1. Девяностые
Фантастика:
альтернативная история
6.42
рейтинг книги
Здравствуй, 1984-й

Огромный. Злой. Зеленый

Новикова Татьяна О.
1. Большой. Зеленый... ОРК
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Огромный. Злой. Зеленый

Черный маг императора

Герда Александр
1. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора

Мое ускорение

Иванов Дмитрий
5. Девяностые
Фантастика:
попаданцы
альтернативная история
6.33
рейтинг книги
Мое ускорение

Вечный. Книга IV

Рокотов Алексей
4. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга IV

Я еще князь. Книга XX

Дрейк Сириус
20. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще князь. Книга XX

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

Лорд Системы

Токсик Саша
1. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
4.00
рейтинг книги
Лорд Системы