Einführung in Winsock, einschließlich Hintergrund und Technologie
Introduction Winsock Including Background Technology
In diesem Beitrag geht es hauptsächlich um die Windows Sockets API, die auf WSA und Winsock abgekürzt werden kann. Nachdem Sie diesen Beitrag gelesen haben, können Sie dessen Definition, Hintergrund, Technologie und Implementierungen kennen.
Auf dieser Seite :Definition zu Winsock
Was ist Winsock? In der Informatik ist Winsock eine technische Spezifikation, mit der definiert 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 eine spezielle Vereinbarung, die zur Verbindung und zum Datenaustausch zwischen zwei Programmprozessen auf demselben Computer oder Netzwerk verwendet wird.
Winsock ist die Abkürzung für die Windows Sockets API (WSA). Es definiert die Standardschnittstelle zwischen Windows TCP/IP-Clientanwendungen (wie FTP-Clients oder Webbrowsern) und dem grundlegenden TCP/IP-Protokollstapel.
Verwandter Beitrag: Verwenden Sie den Netsh Winsock Reset-Befehl, um das Windows 10-Netzwerkproblem zu beheben
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 sowie Henry Sanders und J Allard von Microsoft mit Hilfe vieler anderer geschrieben.
Es gab einige Diskussionen darüber, wie Urheberrechts-, geistiges Eigentums- und potenzielle Kartellrechtsprobleme am besten gelöst werden können, und es wurde über die Arbeit der IETF oder die Gründung gemeinnütziger Stiftungen nachgedacht. Am Ende wurde entschieden, dass die Spezifikation nur von fünf (unabhängigen) Autoren urheberrechtlich geschützt werden sollte.
Alle beteiligten Entwickler weigerten sich lange Zeit, den Namen einfach auf „Winsock“ abzukürzen, da es große 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 Unterstützung des TCP/IP-Protokolls gewährleisten kann.
Technologie von Winsock
Die Windows-Socket-API-Spezifikation definiert zwei Schnittstellen: die von Anwendungsentwicklern verwendete API und die SPI, die Netzwerksoftwareentwicklern eine Methode bietet, dem System neue Protokollmodule hinzuzufügen. Jede Schnittstelle stellt einen Vertrag dar.
Die API garantiert, dass konforme Anwendungen mit der konformen Protokollimplementierung jedes Netzwerksoftwareanbieters normal ausgeführt werden können. Der SPI-Vertrag garantiert, dass konforme Protokollmodule zu Windows hinzugefügt werden können, sodass sie von API-konformen Anwendungen verwendet werden können.
Obwohl diese Verträge bei der ersten Veröffentlichung von Windows Sockets wichtig waren, haben sie heute nur noch akademische Bedeutung, da die Netzwerkumgebung Multiprotokollunterstützung erfordert. Die Windows Sockets API Version 2.0 beinhaltet die Funktion zur 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, es werden jedoch zusätzliche Funktionen bereitgestellt, damit die API dem herkömmlichen Windows-Programmiermodell entspricht.
Die Windows Sockets API deckte fast alle Funktionen der BSD Sockets API ab, es gibt jedoch 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 Windows Sockets und BSD Sockets). Letzteres und STREAMS).
Das Designziel von Windows-Sockets bestand jedoch darin, es Entwicklern relativ einfach zu machen, Socket-basierte Anwendungen von Unix auf Windows zu portieren. Es reichte nicht aus, APIs zu erstellen, die nur für neu geschriebene Windows-Programme nützlich waren.
Daher enthielten Windows Sockets viele Elemente, die die Portierung erleichtern sollten. Beispielsweise könnten Unix-Anwendungen dieselbe errno-Variable verwenden, um Netzwerkfehler und Fehler zu protokollieren, die in Standard-C-Bibliotheksfunktionen erkannt wurden.
Da es in Windows nicht implementiert werden kann, haben die Windows Sockets eine spezielle Funktion, WSAGetLastError(), zum Abrufen von Fehlerinformationen eingeführt. Ein solcher Mechanismus war sehr hilfreich, aber die Anwendungsportierung war immer noch äußerst kompliziert.
Viele primitive TCP/IP-Anwendungen wurden mithilfe von Unix-spezifischen Systemfunktionen (z. B. Pseudoterminals und Fork-Systemaufrufen) implementiert, und es war problematisch, diese Funktion in Windows zu reproduzieren. In relativ kurzer Zeit wich die Portierung der Entwicklung dedizierter Windows-Anwendungen.
Implementierungen von Winsock
- Microsoft hat keine Implementierung von Winsock 1.0 bereitgestellt.
- Version 1.1 von Winsock wurde in einem Add-on-Paket (genannt Wolverine) für Windows für Workgroups (Codename Snowball) bereitgestellt.
- Winsock Version 2.1 wurde in einem Add-On-Paket 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.