API-интерфейс сокетов 5.1. Введение

В предыдущей главе описан интерфейс между прикладными программами и программным обеспечением TCP/IP и показано, как в большинстве систем используется механизм системных вызовов для передачи управления программному обеспечению TCP/IP в операционной системе. В ней также рассмотрено шесть основных функций ввода/вывода, предоставляемых в системах UNIX: open, close, read, write, lseek и ioctl. В этой главе даны подробные сведения об API-интерфейсе сокетов и показано, как функции сокетов объединяются с функциями ввода/вывода UNIX. В ней рассматриваются общие понятия и описана область назначения каждого вызова. В следующих главах показано, как эти вызовы могут применяться в клиентах и серверах, и представлены примеры, которые иллюстрируют многие из описанных здесь подробностей реализации.

5.2. Сокеты Berkeley

В начале 1980-х годов агентство ARPA (Advanced Research Projects Agency — агентство перспективных научных исследований) финансировало работу группы разработчиков Калифорнийского университете в г. Беркли, которые должны были создать программное обеспечение транспортных протоколов TCP/IP для операционной системы UNIX и предоставить созданное в результате программное обеспечение в распоряжение представителей других организаций. В составе этого проекта разработчики создали интерфейс, используемый в приложениях для обмена данными. Они решили применять уже существующие системные вызовы и вводить новые только для поддержки функций TCP/IP, которые нельзя легко включить в существующий набор функций. Результаты этого проекта получили широкую известность под названием API-интерфейса сокетов или просто интерфейса сокетов, а разработанная операционная система стала называться Berkeley UNIX или просто UNIX. (Протокол TCP впервые появился в выпуске 4.1 программного дистрибутива BSD — Berkeley Software Distribution; функции сокетов, описанные в настоящей книге, относятся к более поздним выпускам.)

В дальнейшем система Berkeley UNIX была адаптирована для своих целей многими поставщиками компьютеров, в частности, такими изготовителями рабочих станций, как Sun Microsystems, Tektronix и Digital Equipment Corporation, поэтому интерфейс сокетов стал применяться на многих компьютерах. Таким образом, интерфейс сокетов получил настольно широкое распространение, что стал фактически рассматриваться как стандарт. Компания Microsoft внесла свой вклад в дальнейшее распространение этого интерфейса, разработав версию сокетов для своей операционной системы. И наконец, сонеты были включены в систему Linux.

5.3. Определение интерфейса протокола

При решении вопроса о том, как ввести в операционную систему функции, которые обеспечивают прикладным программам доступ к программному обеспечению протоколов TCP/IP, прежде всего необходимо выбрать имена для функций и параметры, применяемые в каждой функции. Эта работа связана с определением набора услуг, предоставляемых каждой функцией, а также форм их использования в приложениях. Необходимо также решить, должен ли этот интерфейс применяться только с протоколами TCP/IP или в нем нужно предусмотреть возможность работы с дополнительными протоколами. Таким образом, должен быть принят один из двух общих подходов:

  • определить функции, предназначенные только для поддержки связи по протоколам TCP/IP;
  • определить функции, которые поддерживают сетевую связь в целом, и ввести параметры, с помощью которых связь по протоколам TCP/IP можно обозначить как частный случай.

Различия между этими двумя подходами проще всего понять, рассмотрев, как они влияют на выбор имен системных функций и параметров, необходимых для этих функций. Например, при первом подходе проектировщик может создать системную функцию maketcpconnection, а при втором — создать общую функцию makeconnection и использовать параметр для обозначения протокола TCP.

Поскольку проектировщики из г. Беркли решили учесть возможность применения различных наборов протоколов связи, они выбрали второй подход. По существу, в своем проекте они предусмотрели степень обобщения, далеко выходящую за рамки протоколов TCP/IP. Они допустили возможность применения множества семейств протоколов, среди которых протоколы TCP/IP представлены единственным семейством (PF_INET). Они также предусмотрели, чтобы в приложениях необходимые операции связи определялись путем указания требуемого типа службы, а не имени протокола. Поэтому вместо указания на то, что ему требуется соединение TCP, приложение запрашивает службу типа потоковой передачи с использованием параметра, обозначающего семейство протоколов Internet.

API-интерфейс сокетов предоставляет обобщенные функции, которые поддерживают сетевую связь с помощью многих возможных протоколов. В вызовах функций сокетов все протоколы TCP/IP упоминаются как одно семейство протоколов. Эти вызовы позволяют программистам указывать тип требуемой службы, а не имя конкретного протокола.

Общий проект интерфейса сокетов и предоставляемый этим интерфейсом широкий подход критиковался с момента его создания. Некоторые специалисты в области компьютерных наук утверждают, что такая общность не нужна и только затрудняет изучение прикладных программ, а другие доказывают, что предоставление программистам возможности задавать тип службы, а не конкретный протокол упрощает программирование, поскольку освобождает программиста от необходимости понимать все тонкости функционирования каждого семейства протоколов. И наконец, некоторые коммерческие поставщики программного обеспечения TCP/IP выступают в пользу применения альтернативных интерфейсов, поскольку интерфейсы сокетов нельзя вводить в операционную систему, если у заказчика нет исходного кода, поэтому поставка операционной системы обычно требует заключения специального лицензионного соглашения и дополнительных расходов.

1) Интерфейс сокетов иногда называют интерфейсом сокетов Berkeley. Качественно и надежно: Окно пластиковое калькулятор - прекрасное сочетание качества и цены.. Лучшие предложения у нас - наборы для вышивки крестом - обзоры и отзывы.

Похожие статьи Меню Опрос Фото Популярное
rss