Michael J. Donahoo "TCP/IP Sockets in C, 2nd Edition" / Michael J. Donahoo "Программирование TCP/IP сокетов в Си, 2-ое издание": 1.4 Клиенты и серверы

Оглавление
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

1.4 Клиенты и серверы

prefer211 15.05.12 в 02:09

0

В нашей почтовой и телефонных аналогиях каждое соединение инициируется той стороной, котороя отправляет письмо или совершает телефонный звонок, в то время как другая сторона реагирует на это отправкой ответного письма или поднятием трубки и разговором с инициатором. Интернет-соединение аналогично.

prefer211 19.05.12 в 03:57

0

Термины "клиент" и "сервер" объясняют эти роли: программа-клиент инициирует соединение, в то время как программа-сервер пассивно ожидает соединения и отвечает клиенту, когда тот связывается с ней. Вместе клиент и сервер образуют приложение. Понятия клиент и сервер описывают типичную ситуацию, в которой сервер имеет определенную возможность, доступную для любого связывающегося с ним клиента (к примеру, сервис базы данных).

prefer211 19.05.12 в 04:15

0

Неважно как выступает программа в конкретном случае - сервером или клиентом, все равно определяется общая форма использования ею Sockets API для установления соединения с ее пиром (peer). Клиент является пиром сервера и наоборот. К тому же, разделение на клиент и сервер важно по той причине, что клиенту необходимо изначально знать адрес и порт сервера, но не наоборот. С Sockets API сервер может, если это необходимо, узнать информацию об адресе клиента при получении первоначального сообщения от него.

prefer211 19.05.12 в 05:15

0
+1

Это аналогично телефонному звонку - для того, чтобы принять входящий вызов, человек не должен знать номер телефона звонящего ему. Как и при телефонном звонке, после того, как соединение установлено, различие между сервером и клиентом пропадает.

prefer211 19.05.12 в 05:21

0

Как клиент узнает IP-адрес сервера и номер порта? Обычно, клиент знает имя необходимого ему сервера - к примеру из универсального локатора ресурса (Universal Resource Localor - URL) http://www.mkp.com - и, используя сервиc преобразования имен сетевых узлов в IP-адреса, узнает соответствующий интернет-адрес.

prefer211 19.05.12 в 05:33

0

Получение номера порта сервера это уже другая история. В принципе, серверы могут использовать любой порт, но клиент должен иметь возможность узнать какой именно. Что касается интернета, существует соглашение о выделении пользующихся популярностью портов для конкретных приложений. «Администрация адресного пространства Интернет» (Internet Assigned Numbers Authority - IANA) осуществляет контроль этого выделения.

prefer211 19.05.12 в 05:49

0

К примеру, 80 порт предназначен для HTTP. Когда вы запускаете клиентский браузер HTTP, он пытается подсоединиться к веб-серверу на порт по умолчанию. Список всех выделенных номеров портов утверждается IANA (посетите http://www.iana.org/assignments/port-numbers).

Возможно, Вы слышали об альтернативе клиент-сервер, называмой peer-to-peer (P2P).

prefer211 19.05.12 в 05:55

0

В P2P приложения и используют, и предоставляют сервисы, в отличие от традиционной клиент-серверной архитектуры, в которой сервер обеспечивает сервис, а клиент его использует. Узлы P2P иногда называют сервентами (комбинация слов "сервер" и "клиент").

prefer211 19.05.12 в 06:22

0

Так Вам необходимо изучить другой набор технологий для программирования для P2P вместо клиент-северного? Нет. При использовании сокетов клиент по сравнению с сервером отличается лишь тем, кто создает первоначальное соединение и кто ожидает соединения. Приложения P2P обычно как инициируют соединения (к существующим P2P узлам), так и принимают соединения (от других P2P узлов).

prefer211 19.05.12 в 06:40

0

После прочтения этой книги , Вы сможете писать приложения P2P наряду с клиент-серверными.

prefer211 19.05.12 в 06:43

0
Минутку...