Составители:
В то время как низкоуровневые транспортные протоколы осуществляют передачу
информации с помощью довольно сложных структур и пакетов, протоколы высшего
уровня обычно применяют методику, которая более привычна с точки зрения человека и
удобна для программистов. Эти протоколы имеют ряд общих характеристик [12]:
• устанавливают диалог между клиентом и сервером посредством двунаправленного
гнезда;
• применяют числовые коды ответов;
• их пакеты начинаются с распознаваемой командной строки, состоящей из четырех
символов.
Большинство программ, предназначенных для работы с Internet, используют пара-
дигму "гнезд" (sockets). В старые добрые времена, когда TCP/IP был интегрирован в
операционную систему Unix, появился набор функций, получивший название Берклиев-
ского стандарта гнезд (Berkeley sockets standard). Эти функции позволяют создать гнез-
до, прослушать соединение (на стороне сервера), связать гнездо с заданными сервером и
номером порта (на стороне клиента), а также передать и принять информацию через
гнездо. Таким образом, при взаимодействии клиент - сервер в сети каждого участника
взаимодействия можно рассматривать как конечную точку, которая и называется socket
(или "гнездо").
Гнездо играет роль, аналогичную выполняемой дескриптором файла, и в некото-
рых версиях Unix может использоваться непосредственно функциями ввода/вывода.
Имеется два типа гнезд, соответствующих протоколам, которые подразумевают или от-
рицают потребность в установлении соединения [1, 12]:
• TCP-гнезда - соединение между гнездом и сервером устанавливается;
• UDP-гнезда - для передачи данных необходимо только указать конечный пункт на-
значения (номер порта по заданному IP-адресу).
Принцип взаимодействия сервера и клиентов следующий. На сервере программа
взаимодействия с клиентами подключается к адресу IP, создает гнездо и находится в
режиме ожидания подключения. Программа клиент тоже создает гнездо и пытается под-
ключиться к гнезду сервера. Сервер при обнаружении попытки подключения создает
новое гнездо и использует его для взаимодействия с клиентом. Первое созданное на сер-
вере гнездо остается в режиме ожидания подключения следующего клиента. Таким спо-
собом производится взаимодействие сервера и многими клиентами.
В начале 90-х годов консорциумом частных лиц и компаний была предложена
версия функций работы с гнездами для Windows, которая стала называться WinSock. Та-
ким образом, WinSock или Windows socket - это интерфейс API-функций, созданный для
реализации приложений в сети на основе протокола TCP/IP. Обычно эти функции опи-
сываются в библиотеке WSOCK32.DLL.
Интерфейс WinSock несколько отличается от Берклеевского стандарта гнезд, так
как 16-разрядные версии Windows, для которых он первоначально создавался, в отличие
от Unix, не были полноценно многозадачными операционными системами. Необходимо
было предусмотреть асинхронный режим работы функций WinSock для исключения
возможности блокировки системы в момент ожидания ответа. В UNIX можно было про-
сто создать отдельные потоки для приложений, работающих с гнездами, чтобы обеспе-
чить их независимость. Современные версии Windows полноценно многозадачны, по-
этому в них можно использовать обычный Берклеевский стандарт гнезд.
В результате вышесказанного спецификация WinSock разделяет функции интер-
фейса на три типа [1]:
1. Расширения Windows для функций Беркли (Асинхронные функции, которые не
блокируют системы при нахождении в режиме ожидания. Данные функции могут
извещать Windows-приложения о своем завершении, отправляя специальное
сообщение указанному окну. При этом приложение может вызвать функцию, про-
191
В то время как низкоуровневые транспортные протоколы осуществляют передачу информации с помощью довольно сложных структур и пакетов, протоколы высшего уровня обычно применяют методику, которая более привычна с точки зрения человека и удобна для программистов. Эти протоколы имеют ряд общих характеристик [12]: • устанавливают диалог между клиентом и сервером посредством двунаправленного гнезда; • применяют числовые коды ответов; • их пакеты начинаются с распознаваемой командной строки, состоящей из четырех символов. Большинство программ, предназначенных для работы с Internet, используют пара- дигму "гнезд" (sockets). В старые добрые времена, когда TCP/IP был интегрирован в операционную систему Unix, появился набор функций, получивший название Берклиев- ского стандарта гнезд (Berkeley sockets standard). Эти функции позволяют создать гнез- до, прослушать соединение (на стороне сервера), связать гнездо с заданными сервером и номером порта (на стороне клиента), а также передать и принять информацию через гнездо. Таким образом, при взаимодействии клиент - сервер в сети каждого участника взаимодействия можно рассматривать как конечную точку, которая и называется socket (или "гнездо"). Гнездо играет роль, аналогичную выполняемой дескриптором файла, и в некото- рых версиях Unix может использоваться непосредственно функциями ввода/вывода. Имеется два типа гнезд, соответствующих протоколам, которые подразумевают или от- рицают потребность в установлении соединения [1, 12]: • TCP-гнезда - соединение между гнездом и сервером устанавливается; • UDP-гнезда - для передачи данных необходимо только указать конечный пункт на- значения (номер порта по заданному IP-адресу). Принцип взаимодействия сервера и клиентов следующий. На сервере программа взаимодействия с клиентами подключается к адресу IP, создает гнездо и находится в режиме ожидания подключения. Программа клиент тоже создает гнездо и пытается под- ключиться к гнезду сервера. Сервер при обнаружении попытки подключения создает новое гнездо и использует его для взаимодействия с клиентом. Первое созданное на сер- вере гнездо остается в режиме ожидания подключения следующего клиента. Таким спо- собом производится взаимодействие сервера и многими клиентами. В начале 90-х годов консорциумом частных лиц и компаний была предложена версия функций работы с гнездами для Windows, которая стала называться WinSock. Та- ким образом, WinSock или Windows socket - это интерфейс API-функций, созданный для реализации приложений в сети на основе протокола TCP/IP. Обычно эти функции опи- сываются в библиотеке WSOCK32.DLL. Интерфейс WinSock несколько отличается от Берклеевского стандарта гнезд, так как 16-разрядные версии Windows, для которых он первоначально создавался, в отличие от Unix, не были полноценно многозадачными операционными системами. Необходимо было предусмотреть асинхронный режим работы функций WinSock для исключения возможности блокировки системы в момент ожидания ответа. В UNIX можно было про- сто создать отдельные потоки для приложений, работающих с гнездами, чтобы обеспе- чить их независимость. Современные версии Windows полноценно многозадачны, по- этому в них можно использовать обычный Берклеевский стандарт гнезд. В результате вышесказанного спецификация WinSock разделяет функции интер- фейса на три типа [1]: 1. Расширения Windows для функций Беркли (Асинхронные функции, которые не блокируют системы при нахождении в режиме ожидания. Данные функции могут извещать Windows-приложения о своем завершении, отправляя специальное сообщение указанному окну. При этом приложение может вызвать функцию, про- 191
Страницы
- « первая
- ‹ предыдущая
- …
- 187
- 188
- 189
- 190
- 191
- …
- следующая ›
- последняя »