Введение в Winsock, включая предысторию и технологии
Introduction Winsock Including Background Technology
В этом посте в основном говорится об API Windows Sockets, который можно сократить до WSA и Winsock. Прочитав этот пост, вы сможете узнать его определение, предысторию, технологию, а также реализации.
На этой странице :Определение для Winsock
Что такое Винсок? В вычислительной технике Winsock — это техническая спецификация, используемая для определения того, как сетевое программное обеспечение Windows должно получать доступ к сетевым службам, особенно TCP/IP. Он называется Winsock, поскольку представляет собой адаптацию интерфейса сокетов Berkeley UNIX для Windows. Сокет — это специальное соглашение, используемое для соединения и обмена данными между двумя программными процессами на одном компьютере или в сети.
Кончик: Если вы хотите узнать больше информации о других интернет-протоколах, то рекомендуется зайти на сайт MiniTool.
Winsock — это аббревиатура Windows Sockets API (WSA). Он определяет стандартный интерфейс между клиентскими приложениями Windows TCP/IP (такими как FTP-клиенты или веб-браузеры) и базовым стеком протоколов TCP/IP.
Связанное сообщение: Используйте команду сброса Netsh Winsock, чтобы устранить проблему с сетью Windows 10
История Винсока
API Windows Sockets был предложен Мартином Холлом из JSB Software (позже Stardust Technologies) в ходе обсуждения BoF (Bird of a Feather) в сети CompuServe BBS в октябре 1991 года.
Первую версию спецификации написали Мартин Холл, Марк Тауфик из Microdyne (позже Sun Microsystems), Джефф Арнольд из Sun Microsystems, а также Генри Сандерс и Дж. Аллард из Microsoft с помощью многих других.
Состоялись некоторые дискуссии о том, как лучше всего решать вопросы авторского права, интеллектуальной собственности и потенциальных антимонопольных вопросов, а также рассматривались возможности работы через IETF или создания некоммерческих фондов. В конце концов было решено, что авторские права на спецификацию должны принадлежать только пяти (несвязанным) авторам.
Все участвующие разработчики долгое время отказывались сокращать имя до просто Winsock, поскольку существовала большая путаница между API и файлом библиотеки DLL (winsock.dll), который предоставлял приложению над ним только общий интерфейс WSA. Обычно считается, что только обеспечение наличия файла DLL в системе может обеспечить полную поддержку протокола TCP/IP.
Технология Винсокка
Спецификация Windows Socket API определяет два интерфейса: API, используемый разработчиками приложений, и SPI, который предоставляет разработчикам сетевого программного обеспечения метод добавления в систему новых модулей протокола. Каждый интерфейс представляет собой контракт.
API гарантирует, что соответствующие приложения могут нормально работать с реализацией соответствующего протокола любого поставщика сетевого программного обеспечения. Контракт SPI гарантирует, что соответствующие модули протокола могут быть добавлены в Windows, чтобы их можно было использовать приложениями, совместимыми с API.
Хотя эти контракты были важны при первом выпуске Windows Sockets, сейчас они имеют лишь академическое значение, поскольку сетевая среда требует поддержки нескольких протоколов. Windows Sockets API версии 2.0 включает функцию использования IPX/SPX, хотя этот протокол практически устарел, когда WSA 2.0 покинул завод.
Код и дизайн Windows Sockets основаны на сокетах BSD, но предусмотрены дополнительные функции, позволяющие API соответствовать традиционной модели программирования Windows.
API сокетов Windows почти охватывал все возможности API сокетов BSD, но есть некоторые неизбежные препятствия, которые в основном были вызваны фундаментальными различиями между Windows и Unix (хотя разница между сокетами Windows и сокетами BSD была меньше, чем разница между сокетами Windows и BSD). последний и ПОТОКИ).
Однако целью разработки сокетов Windows было облегчить разработчикам перенос приложений на основе сокетов из Unix в Windows. Недостаточно было создать API, которые были бы полезны только для недавно написанных программ для Windows.
Поэтому сокеты Windows содержали множество элементов, предназначенных для облегчения портирования. Например, приложения Unix могут использовать одну и ту же переменную errno для регистрации сетевых ошибок и ошибок, обнаруженных в стандартных функциях библиотеки C.
Поскольку это невозможно реализовать в Windows, в Windows Sockets введена специальная функция WSAGetLastError() для получения информации об ошибках. Такой механизм был очень полезен, но портирование приложений по-прежнему было крайне сложным.
Многие примитивные приложения TCP/IP были реализованы с использованием системных функций, специфичных для Unix (таких как псевдотерминалы и разветвленные системные вызовы), и воспроизвести эту функцию в Windows было проблематично. За относительно короткое время портирование уступило место разработке специализированных приложений для Windows.
Реализации Winsock
- Microsoft не предоставила реализацию Winsock 1.0.
- Версия 1.1 Winsock была предоставлена в дополнительном пакете (называемом Wolverine) для Windows for Workgroups (под кодовым названием Snowball).
- Winsock версии 2.1 был предоставлен в дополнительном пакете для Windows 95.
- Последняя версия Winsock 2.x предоставляется вместе с новой версией Windows или как часть пакета обновления.
- Winsock 2 можно расширить с помощью механизма, называемого многоуровневым поставщиком услуг (LSP).