Въведение в Winsock, включително предистория и технология
Introduction Winsock Including Background Technology
Тази публикация говори главно за Windows Sockets API, който може да бъде съкратен до WSA и Winsock. След като прочетете тази публикация, можете да знаете неговата дефиниция, фон, технология, както и реализации.
На тази страница:Определение за Winsock
Какво е Winsock? В компютърната техника Winsock е техническа спецификация, използвана за определяне на начина, по който мрежовият софтуер на Windows трябва да осъществява достъп до мрежовите услуги, особено TCP /IP. Нарича се Winsock, защото е адаптация на интерфейса на Berkeley UNIX socket към Windows. Сокетът е специално споразумение, използвано за свързване и обмен на данни между два програмни процеса на един и същи компютър или мрежа.
Бакшиш: Ако искате да научите повече информация за други интернет протоколи, тогава се препоръчва да отидете на уебсайта MiniTool.
Winsock е съкращението на Windows Sockets API (WSA). Той дефинира стандартния интерфейс между Windows TCP/IP клиентски приложения (като FTP клиенти или уеб браузъри) и основния TCP/IP протоколен стек.
Свързана публикация: Използвайте командата за нулиране на Netsh Winsock, за да коригирате мрежовия проблем на Windows 10
Предистория на Winsock
Windows Sockets API беше предложен от Мартин Хол от 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 протокола.
Технология на Winsock
Спецификацията на 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.
Windows Sockets API почти покриваше всички характеристики на BSD sockets API, но има някои неизбежни пречки, които бяха причинени главно от фундаменталните разлики между Windows и Unix (въпреки че разликата между Windows Sockets и BSD сокети беше по-малка от разликата между последното и ПОТОЦИ).
Въпреки това, целта на дизайна на Windows sockets беше да направи сравнително лесно за разработчиците пренасяне на базирани на сокет приложения от Unix към Windows. Не беше достатъчно да се създадат API, които да са полезни само за новонаписани програми за Windows.
Следователно Windows Sockets съдържа много елементи, предназначени да улеснят пренасянето. Например, приложенията на Unix могат да използват една и съща променлива errno, за да регистрират мрежови грешки и грешки, открити в стандартни C библиотечни функции.
Тъй като не може да бъде приложен в Windows, Windows Sockets въведе специална функция, WSAGetLastError(), за извличане на информация за грешка. Такъв механизъм беше много полезен, но пренасянето на приложения все още беше изключително сложно.
Много примитивни TCP/IP приложения са били реализирани чрез използване на системни функции, специфични за Unix (като псевдо терминали и разклонителни системни повиквания), и беше проблематично да се възпроизведе тази функция в Windows. За сравнително кратко време пренасянето отстъпи място на разработването на специални Windows приложения.
Реализации на Winsock
- Microsoft не предостави внедряване на Winsock 1.0.
- Версия 1.1 на Winsock беше предоставена в пакет с добавки (наречен Wolverine) за Windows за работни групи (кодово име Snowball).
- Winsock версия 2.1 беше предоставена в пакет с добавки за Windows 95.
- Най-новата версия на Winsock 2.x е предоставена с новата версия на Windows или като част от сервизен пакет.
- Winsock 2 може да бъде разширен чрез механизъм, наречен Layered Service Provider (LSP).