Глава 18. Сетевое программирование
Глава 18. Сетевое программирование
Если торговец в разговоре с вами произносит слово «сеть», скорее всего, он желает всучить свою визитную карточку. Но в устах программиста это слово обозначает электронное взаимодействие физически удаленных машин — неважно, находятся они в разных углах комнаты, в разных районах города или в разных частях света.
Для программистов сеть чаще всего ассоциируется с набором протоколов TCP/IP — тем языком, на котором неслышно беседуют миллионы машин, подключенных к сети Интернет. Несколько слов об этом наборе, перед тем как мы перейдем к конкретным примерам.
Концептуально сетевое взаимодействие принято представлять в виде различных уровней (или слоев) абстракции. Самый нижний — канальный уровень, на котором происходит аппаратное взаимодействие; о нем мы говорить не будем. Сразу над ним расположен сетевой уровень, который отвечает за перемещение пакетов в сети — это епархия протокола IP (Internet Protocol). Еще выше находится транспортный уровень, на котором расположились протоколы TCP (Transmission Control Protocol) и UDP (User Datagram Protocol). Далее мы видим прикладной уровень — это мир telnet, FTP, протоколов электронной почти и т.д.
Можно обмениваться данными непосредственно по протоколу IP, но обычно так не поступают. Чаще нас интересуют протоколы TCP и UDP.
Протокол TCP обеспечивает надежную связь между двумя компьютерами (хостами). Он упаковывает данные в пакеты и распаковывает их, подтверждает получение пакетов, управляет тайм-аутами и т.д. Поскольку протокол надежный, приложению нет нужды беспокоиться о том, получил ли удаленный хост посланные ему данные.
Протокол UDP гораздо проще: он отправляет пакеты (датаграммы) удаленному хосту, как будто это двоичные почтовые открытки. Нет никакой гарантии, что данные будут получены, поэтому протокол называется ненадежным (а, следовательно, приложению придется озаботиться дополнительными деталями).
Ruby поддерживает сетевое программирование на низком уровне (главным образом по протоколам TCP и UDP), а также и на более высоких, в том числе по протоколам telnet, FTP, SMTP и т.д.
На рис. 18.1 представлена иерархия классов, из которой видно, как организована поддержка сетевого программирования в Ruby. Показаны классы HTTP и некоторые другие столь же высокого уровня; кое-что для краткости опущено.
Рис. 18.1. Часть иерархии наследования для поддержки сетевого программирования в Ruby
Отметим, что большая часть этих классов прямо или косвенно наследует классу IO. Следовательно, мы может пользоваться уже знакомыми методами данного класса.
Попытка документировать все функции всех показанных классов завела бы нас далеко за рамки этой книги. Я лишь покажу, как можно применять их к решению конкретных задач, сопровождая примеры краткими пояснениями. Полный перечень всех методов вы можете найти к справочном руководстве на сайте ruby-doc.org.
Ряд важных областей применения в данной главе вообще не рассматривается, поэтому сразу упомянем о них. Класс Net::Telnet упоминается только в связи с NTP-серверами в разделе 18.2.2; этот класс может быть полезен не только для реализации собственного telnet-клиента, но и для автоматизации всех задач, поддерживающих интерфейс по протоколу telnet.
Библиотека Net::FTP также не рассматривается. В общем случае автоматизировать обмен по протоколу FTP несложно и с помощью уже имеющихся клиентов, так что необходимость в этом классе возникает реже, чем в прочих.
Класс Net::Protocol, являющийся родительским для классов HTTP, POP3 и SMTP полезен скорее для разработки новых сетевых протоколов, но эта тема в данной книге не обсуждается.
На этом завершим краткий обзор и приступим к рассмотрению низкоуровневого сетевого программирования.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
ГЛАВА 12 Сетевое программирование с помощью сокетов Windows
ГЛАВА 12 Сетевое программирование с помощью сокетов Windows Именованные каналы пригодны для организации межпроцессного взаимодействия как в случае процессов, выполняющихся на одной и той же системе, так и в случае процессов, выполняющихся на компьютерах, связанных друг с
ГЛАВА 16 Программирование в среде Win64
ГЛАВА 16 Программирование в среде Win64 Наиболее заметный прогресс в развитии возможностей Windows после появления Windows NT и Windows 95 связан с приходом 64-разрядного программирования и расширением Win32 до Win64. На объединенный API обычно ссылаются просто как на Windows API, и именно такой
Глава 1 Введение в сетевое программирование
Глава 1 Введение в сетевое программирование 1.1. Введение Чтобы писать программы, рассчитанные на взаимодействие в компьютерных сетях, необходимо сначала изобрести протокол — соглашение о порядке взаимодействия таких программ. Прежде чем углубляться в детальное
Глава 5 Программирование на языке shell
Глава 5 Программирование на языке shell Большинство пользователей считают, что shell представляет собой диалоговый интерпретатор команд. На самом же деле это язык программирования, в котором каждый оператор инициирует запуск команды. Язык shell может показаться вам несколько
Глава 6 Сетевое оборудование
Глава 6 Сетевое оборудование Какое бы количество компьютеров ни планировалось подключить к сети, для того чтобы такое подключение стало возможным вообще, требуется некоторое оборудование. Мало того, чем больше компьютеров – тем больше такого оборудования потребуется.В
Глава 6 Сетевое общение
Глава 6 Сетевое общение – Секреты ICQ – Альтернативы ICQ – Сеть FIDO – IP-телефония. Программы для голосового общения Общение – один из самых популярных способов использования Интернета. Существует очень много инструментов сетевого общения, и каждый человек может найти
Глава 28 Программирование ядра
Глава 28 Программирование ядра Из главы 7 вы узнали, что драйверы устройств в Linux выполнены в виде модулей ядра, и познакомились с пакетом module-init-tools (он же modutils для ядер 2.4), содержащим утилиты для выполнения основных операций над модулями ядра. В этой главе я покажу, как
Глава 15. Программирование на VBA в Word.
Глава 15. Программирование на VBA в Word. В этой главе ...~ Объектная модель Word~ Ключевые объекты Word: окна, выделения, диапазоны и объект Find~ Диапазоны или выделения: что использовать при работе с текстом~ Методы и свойства для манипуляции с текстом~ Поиск и замена текста с помощью
Глава 16. VBA-программирование в Excel.
Глава 16. VBA-программирование в Excel. В этой главе ...~ Что такое объектная модель Excel~ Управление ячейками с использованием объектов диапазонов~ Создание собственных функций для использования в формулах рабочих листов~ Использование встроенных функций Excel в VBA-коле~ Работа с
Глава 17. Программирование баз данных.
Глава 17. Программирование баз данных. В этой главе ...~ Знакомство с терминологией~ Написание кода баз данных с помощью объектов данных ActiveX~ Программирование с помощью DAO~ Ускорение с помощью SQLНесмотря на то, что Access - официальное приложение для работы с базами данных,
Глава 7 Шаблоны и обобщенное программирование
Глава 7 Шаблоны и обобщенное программирование Изначально шаблоны в C++ появились для того, чтобы можно было реализовать безопасные относительно типов контейнеры: vector, list, map и им подобные. Однако по мере обретения опыта работы с шаблонами стали обнаруживаться все новые и
ГЛАВА 27. Программирование с транзакциями.
ГЛАВА 27. Программирование с транзакциями. Транзакция является начальной точкой для всех взаимодействий клиентского приложения с сервером. В этой главе мы с точки зрения различных интерфейсов клиента рассмотрим запуск, управление и завершение транзакций.Многие языки и
Глава 9 Программирование для смартфонов
Глава 9 Программирование для смартфонов Особенности программирования для смартфонов В этой главе мы научимся создавать приложения для смартфонов под управлением системы Windows Mobile 5.0. Так получилось, что в России смартфоны под управлением Smartphone 2003 поначалу не получили
Глава 11 Сетевое взаимодействие
Глава 11 Сетевое взаимодействие • Краткое описание сетевых компонентов• Простой обмен данными• Слежение за компьютером по сети• Многопользовательский разговорникОрганизация надежного сетевого взаимодействия между приложениями или компонентами одного
Глава 11 Программирование на языке SQL
Глава 11 Программирование на языке SQL Как уже говорилось в главе 9, главной «специальностью» языка SQL является конструирование запросов пользователя к базе данных. Поэтому программирование на языке SQL – это в основном формирование таких
Глава 9 ВИЗУАЛЬНОЕ ПРОГРАММИРОВАНИЕ
Глава 9 ВИЗУАЛЬНОЕ ПРОГРАММИРОВАНИЕ 9.1. ОБЩЕЕ ПОНЯТИЕ ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ Визуальное программирование является в настоящее. время одной из наиболее популярных парадигм программирования. Визуальное программирование состоит в автоматизированной разработке