Операционные системы. Учебное пособие. Марапулец Ю.В. - 189 стр.

UptoLike

Составители: 

В то время как низкоуровневые транспортные протоколы осуществляют передачу
информации с помощью довольно сложных структур и пакетов, протоколы высшего
уровня обычно применяют методику, которая более привычна с точки зрения человека и
удобна для программистов. Эти протоколы имеют ряд общих характеристик [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