Далее рассмотрим описание применяемой в языке Perl версии API-интерфейса сокетов Berkeley — сетевого API-интерфейса низкого уровня, который лежит в основе всех сетевых модулей Perl, используемых, например, в разработке приложений для iphone или других мобильных гаджетов. Здесь описаны различные виды сокетов для основных типов клиентов и серверов, созданных с использованием сокетов Berkeley, и рассмотрены некоторые обычные ловушки, которые подстерегают программистов при их первом знакомстве с этим API-интерфейсом.
Клиенты, серверы и протоколы. Сетевое взаимодействие происходит, когда две программы обмениваются данными по сети. За редкими исключениями, эти программы не являются равнозначными: одна из них, называемая клиентом, инициализирует соединение и обычно (но не всегда) подключается только к одному серверу одновременно. Другой участник соединения, сервер, является пассивным и просто ожидает, пока к нему обратится клиент, желающий установить соединение. В отличие от клиентов, сервер обычно обслуживает одновременно множество входящих соединений с множеством клиентов.
Обычно компьютер (“хост”), на котором работает сервер, крупнее и мощнее по сравнению с клиентским компьютером, но это правило не является абсолютным. В действительности в некоторых популярных приложениях, таких как система XWindow, ситуация может быть иной - сервером обычно является персональный или другой настольный Компьютер, а клиент работает на более мощном компьютере “класса сервера”.
Большинство известных сетевых протоколов составляют основу приложений типа клиент/сервер. К ним относятся протокол HTTP, применяемый в Web, протокол SMTP, который используется в электронной почте Internet, а также всё протоколы доступа к базе данных. Однако небольшим, но быстро растущим классом сетевых приложений являются одноранговые приложения. При использовании однорангового протокола оба участника соединения являются равными, и каждый из них может выполнить несколько соединений с другими копиями одной и той же программы. Например, одноранговым является протокол совместного доступа к файлам Napster, вызывающий много споров, а также разработанные на его основе системы Gnutella и FreeNet.