In diesem Beitrag geht es hauptsächlich um die Windows Sockets API, die zu WSA und Winsock abgekürzt werden kann. Nachdem Sie diesen Beitrag gelesen haben, können Sie seine Definition, seinen Hintergrund, seine Technologie sowie seine Implementierungen kennen.
Definition zu Winsock
Was ist Winsock? In der Informatik ist Winsock eine technische Spezifikation, mit der festgelegt wird, wie Windows-Netzwerksoftware auf Netzwerkdienste, insbesondere TCP/IP, zugreifen soll. Es heißt Winsock, weil es eine Anpassung der Berkeley-UNIX-Socket-Schnittstelle an Windows ist. Ein Socket ist ein spezielles Protokoll, das verwendet wird, um eine Verbindung herzustellen und Daten zwischen zwei Programmprozessen auf demselben Computer oder im selben Netzwerk auszutauschen.
Tipp: Wenn Sie mehr über andere Internet-Protokolle wissen wollen, empfiehlt sich ein Besuch der MiniTool Webseite.
Winsock ist die Abkürzung für die Windows Sockets API (WSA). Sie definiert die Standardschnittstelle zwischen Windows-TCP/IP-Client-Anwendungen (z. B. FTP-Clients oder Webbrowsern) und dem grundlegenden TCP/IP-Protokollstapel.
Hintergrund von Winsock
Die Windows Sockets API wurde von Martin Hall von JSB Software (später Stardust Technologies) in der „BoF“-Diskussion (Bird of a Feather) im CompuServe BBS-Netzwerk im Oktober 1991 vorgeschlagen.
Die erste Version der Spezifikation wurde von Martin Hall, Mark Towfiq von Microdyne (später Sun Microsystems), Geoff Arnold von Sun Microsystems und Henry Sanders und J. Allard von Microsoft mit der Hilfe vieler anderer geschrieben.
Es gab einige Diskussionen darüber, wie Urheberrecht, geistiges Eigentum und potenzielle kartellrechtliche Fragen am besten gelöst werden könnten, und es wurde erwogen, über die IETF zu arbeiten oder gemeinnützige Stiftungen zu gründen. Schließlich wurde beschlossen, dass die Spezifikation nur von fünf (unbeteiligten) Autoren urheberrechtlich geschützt werden sollte.
Alle teilnehmenden Entwickler weigerten sich lange Zeit, den Namen einfach auf Winsock abzukürzen, da es eine Menge Verwirrung zwischen der API und der DLL-Bibliotheksdatei (winsock.dll) gab, die nur die allgemeine WSA-Schnittstelle für die darüber liegende Anwendung offenlegte. Es wird allgemein angenommen, dass nur die Sicherstellung, dass die DLL-Datei auf dem System vorhanden ist, eine vollständige TCP/IP-Protokollunterstützung bieten kann.
Technologie von Winsock
Die Windows Socket API-Spezifikation definiert zwei Schnittstellen: API, die von Anwendungsentwicklern verwendet wird, und SPI, die Entwicklern von Netzwerksoftware eine Methode bietet, dem System neue Protokollmodule hinzuzufügen. Jede Schnittstelle stellt einen Vertrag dar.
Die API garantiert, dass konforme Anwendungen normal mit der konformen Protokollimplementierung eines beliebigen Netzwerksoftwareanbieters ausgeführt werden können. Der SPI-Vertrag garantiert, dass konforme Protokollmodule zu Windows hinzugefügt werden können, so dass sie von API-konformen Anwendungen verwendet werden können.
Obwohl diese Verträge wichtig waren, als Windows Sockets zum ersten Mal veröffentlicht wurde, sind sie jetzt nur noch von akademischer Bedeutung, da die Netzwerkumgebung die Unterstützung mehrerer Protokolle erfordert. Die Windows Sockets API Version 2.0 enthält die Funktion der Verwendung von IPX/SPX, obwohl dieses Protokoll fast veraltet war, als WSA 2.0 das Werk verließ.
Der Code und das Design von Windows Sockets basieren auf BSD-Sockets, aber es wurden zusätzliche Funktionen bereitgestellt, damit die API mit dem herkömmlichen Windows-Programmiermodell übereinstimmt.
Die Windows Sockets API deckte fast alle Funktionen der BSD Sockets API ab, aber es gab einige unvermeidliche Hindernisse, die hauptsächlich durch die grundlegenden Unterschiede zwischen Windows und Unix verursacht wurden (obwohl der Unterschied zwischen Windows Sockets und BSD Sockets geringer war als der Unterschied zwischen letzteren und STREAMS).
Das Ziel von Windows Sockets war es jedoch, den Entwicklern die Portierung von Socket-basierten Anwendungen von Unix nach Windows relativ einfach zu machen. Es reichte nicht aus, APIs zu schaffen, die nur für neu geschriebene Windows-Programme nützlich waren.
Daher enthielt Windows Sockets viele Elemente, welche die Portierung erleichtern sollten. Zum Beispiel konnten Unix-Anwendungen dieselbe errno-Variable verwenden, um Netzwerkfehler und Fehler zu protokollieren, die in Standard-C-Bibliotheksfunktionen entdeckt wurden.
Da sie in Windows nicht implementiert werden kann, haben die Windows Sockets eine spezielle Funktion, WSAGetLastError(), eingeführt, um Fehlerinformationen abzurufen. Ein solcher Mechanismus war sehr hilfreich, aber die Portierung von Anwendungen war immer noch extrem kompliziert.
Viele primitive TCP/IP-Anwendungen wurden unter Verwendung von Unix-spezifischen Systemmerkmalen (wie Pseudo-Terminals und Fork-Systemaufrufe) implementiert, und es war problematisch, diese Funktion in Windows zu reproduzieren. In relativ kurzer Zeit wich die Portierung der Entwicklung von speziellen Windows-Anwendungen.
Implementierungen von Winsock
- Microsoft hat keine Implementierung von Winsock 1.0 bereitgestellt.
- Die Version 1.1 von Winsock wurde in einem Zusatzpaket (namens Wolverine) für Windows for Workgroups (Codename Snowball) bereitgestellt.
- Die Winsock-Version 2.1 wurde in einem Zusatzpaket für Windows 95 bereitgestellt.
- Die neueste Version von Winsock 2.x wurde mit der neuen Windows-Version oder als Teil eines Service Packs bereitgestellt.
- Winsock 2 kann durch einen Mechanismus namens Layered Service Provider (LSP) erweitert werden.