Netzwerkbuchse
A Netzwerkbuchse ist eine Softwarestruktur innerhalb eines Netzwerkknoten von a Computernetzwerk Dies dient als Endpunkt für das Senden und Empfangen von Daten im gesamten Netzwerk. Die Struktur und Eigenschaften einer Steckdose werden durch eine definiert Programmierschnittstelle (API) für die Netzwerkarchitektur. Sockel werden nur zu Lebzeiten von a erstellt Prozess einer im Knoten ausgeführten Anwendung.
Wegen der Standardisierung der TCP/IP Protokolle bei der Entwicklung der Internet, der Begriff Netzwerkbuchse wird am häufigsten im Kontext der Internet -Protokollsuite verwendet und wird daher häufig auch als als bezeichnet Internet -Sockel. In diesem Zusammenhang wird eine Steckdose extern an anderen Hosts durch seine identifiziert Sockeladresse, was die Triade von ist Transportprotokoll, IP Adresse, und Port-Nummer.
Der Begriff Steckdose wird auch für den Software-Endpunkt von Knoten-Internal verwendet Interprozesskommunikation (IPC), das häufig dieselbe API wie eine Netzwerkbuchse verwendet.
Verwenden
Die Verwendung des Begriffs Steckdose in der Software ist analog zur Funktion eines elektrischen weiblicher Verbinder, ein Gerät in Hardware für die Kommunikation zwischen Knoten, die mit einem verbunden sind elektrisches Kabel. Ebenso der Begriff Hafen wird für externe physikalische Endpunkte an einem Knoten oder Gerät verwendet.
Die Anwendungsprogrammierschnittstelle (API) für den Netzwerkprotokollstapel erstellt a handhaben Für jeden von einer Anwendung erstellten Socket, das allgemein als als bezeichnet als als bezeichnet wird Sockeldeskriptor. Im UNIX-ähnliche BetriebssystemeDieser Deskriptor ist eine Art von Art von Dateideskriptor. Es wird durch den Bewerbungsprozess zur Verwendung mit jedem Les- und Schreibvorgang auf dem Kommunikationskanal gespeichert.
Zum Zeitpunkt der Erstellung mit der API ist eine Netzwerkbuchse an die Kombination eines Netzwerkprotokolls gebunden, das für Übertragungen, eine Netzwerkadresse des Hosts und a verwendet werden soll Port-Nummer. Ports sind nummerierte Ressourcen, die eine andere Art von Softwarestruktur des Knotens darstellen. Sie werden als Diensttypen verwendet und dienen, sobald er durch einen Prozess erstellt wurde, als extern (aus dem Netzwerk) adressierbare Standortkomponente, damit andere Hosts Verbindungen herstellen können.
Netzwerkhöhlen können für anhaltende Verbindungen für die Kommunikation zwischen zwei Knoten gewidmet sein oder daran teilnehmen verbindungslos und Multicast Kommunikation.
In der Praxis, aufgrund der Proliferation der im Internet verwendeten TCP/IP -Protokolle Netzwerkbuchse bezieht sich normalerweise auf die Verwendung mit dem Internetprotokoll (IP). Es wird daher oft auch genannt Internet -Sockel.
Sockeladressen
Eine Anwendung kann mit einem Remote -Prozess kommunizieren, indem Daten mit TCP/IP austauschen, indem Sie die Kombination aus Protokolltyp, IP -Adresse und Portnummer kennen. Diese Kombination wird oft als als bekannt Sockeladresse. Es ist der Netzwerk-Access-Handle zum Netzwerkbuchse. Der Remote -Prozess stellt in seiner eigenen Instanz des Protokollstacks eine Netzwerkbuchse ein und verwendet die Netzwerk -API, um eine Verbindung zur Anwendung herzustellen, wobei eine eigene Socket -Adresse für die Verwendung durch die Anwendung vorgelegt wird.
Implementierung
A Protokollstapel, normalerweise von der bereitgestellt Betriebssystem (Zum Beispiel eher als separate Bibliothek) ist eine Reihe von Diensten, mit denen Prozesse über ein Netzwerk mithilfe der Protokolle, die der Stapel impliziert, über ein Netzwerk kommunizieren kann. Das Betriebssystem leitet die Nutzlast eingehender IP -Pakete in die entsprechende Anwendung weiter, indem die Socket -Adressinformationen aus den IP- und Transportprotokollheadern extrahiert und die Header aus den Anwendungsdaten entlegt werden.
Das Programmierschnittstelle (API), die Programme verwenden, um mit dem Protokollstapel mit Netzwerkhöhlen zu kommunizieren, heißt a Sockel -API. Die Entwicklung von Anwendungsprogrammen, die diese API nutzen, heißt Sockelprogrammierung oder Netzwerkprogrammierung. Internet -Socket -APIs basieren normalerweise auf dem Berkeley Sockets Standard. In den Berkeley Sockets Standard sind Sockets eine Form von Dateideskriptor, aufgrund der Unix -Philosophie Dass "alles eine Datei ist" und die Analogien zwischen Sockets und Dateien. Beide haben Funktionen zum Lesen, Schreiben, Öffnen und Schließen. In der Praxis dauern die Unterschiede die Analogie und verschiedene Schnittstellen (Senden und Empfangen) werden in einer Steckdose verwendet. Im Interprozesskommunikation, jedes Ende hat im Allgemeinen eine eigene Steckdose.
In den Standard -Internetprotokollen TCP und UDP ist eine Socket -Adresse die Kombination von a IP Adresse und ein Port-Nummer, ähnlich wie ein Ende einer Telefonverbindung ist die Kombination von a Telefonnummer und ein besonderes Verlängerung. Sockets müssen beispielsweise keine Quelladresse haben, um nur Daten zu senden, aber wenn ein Programm bindet Mit einem Socket zu einer Quelladresse kann der Socket verwendet werden, um Daten zu empfangen, die an diese Adresse gesendet werden. Basierend auf dieser Adresse liefern Internet -Sockets eingehende eingehende Datenpakete auf die entsprechende Anwendung Prozess.
Steckdose Bezieht sich häufig speziell auf einen Internet -Sockel oder eine TCP -Steckdose. Eine Internet -Sockel ist minimal durch Folgendes charakterisiert:
- Lokale Socket -Adresse, bestehend aus der lokalen IP -Adresse und (für TCP und UDP, aber nicht IP) eine Portnummer
- Protokoll: Ein Transportprotokoll, z. B. TCP, UDP, RAW IP. Dies bedeutet, dass (lokale oder entfernte) Endpunkte mit TCP -Port 53 und UDP -Port 53 unterschiedliche Sockets sind, während IP keine Ports hat.
- Eine Steckdose, die mit einer anderen Steckdose verbunden wurde, z. B. während der Erstellung einer TCP -Verbindung, hat ebenfalls eine Remote -Socket -Adresse.
Definition
Die Unterscheidungen zwischen einer Socket (interne Darstellung), Socket -Deskriptor (abstrakter Kennung) und Sockeladresse (öffentliche Adresse) sind subtil, und diese unterscheiden sich nicht immer im täglichen Gebrauch. Darüber hinaus spezifische Definitionen von a Steckdose unterscheiden sich zwischen Autoren. Im Ietf Anfrage für Kommentare, Internetstandardssowohl in vielen Lehrbüchern als auch in diesem Artikel der Begriff Steckdose Bezieht sich auf ein Unternehmen, das von der Socket -Nummer einzigartig identifiziert wird. In anderen Lehrbüchern,[1] der Begriff Steckdose Bezieht sich auf eine lokale Sockeladresse, d. H. Eine "Kombination einer IP -Adresse und einer Portnummer". In der ursprünglichen Definition von Steckdose gegeben in RFC 147,[2] wie es mit dem verwandt war ARPA -Netzwerk 1971,, "Die Socket wird als 32 -Bit -Nummer angegeben, wobei auch Steckdosen empfangende Sockets und ungerade Sockets identifiziert werden, die Senden von Sockets identifizieren." Heutzutage sind Sockelkommunikation bidirektional.
Innerhalb des Betriebssystems und der Anwendung, die einen Socket erstellt hat Sockeldeskriptor.
Werkzeug
Auf Unix-ähnlichen Betriebssystemen und Microsoft Windows, die Befehlszeilenwerkzeuge Netstat oder ss[3] werden verwendet, um festgelegte Sockets und verwandte Informationen aufzulisten.
Beispiel
Dieses Beispiel sendet die Zeichenfolge "Hallo, Welt!" über TCP zu Port 80 des Hosts mit Adresse 1.2.3.4. Es zeigt die Erstellung einer Socket (Getocket), verbindet sie mit dem Remote -Host, sendet die Zeichenfolge und schließt schließlich den Socket:
Socket mySocket = getocket (type = "tcp") connect (Mysocket, Adresse = "1.2.3.4", port = "80") senden (Mysocket, "Hallo, Welt!") Schließen (MySocket)
Typen
Es stehen verschiedene Arten von Internet -Socket zur Verfügung:
- Datagramm -Sockeln
- Verbindungslos Sockets, die verwenden User Datagram Protocol (UDP).[4] Jedes Paket, das in einem Datagramm -Socket gesendet oder empfangen wird, wird individuell angesprochen und weitergeleitet. Auftrag und Zuverlässigkeit werden nicht mit Datagramm -Sockeln garantiert, sodass mehrere Pakete, die von einem Maschine oder einem anderen verarbeitet werden, in jeder Reihenfolge ankommen oder überhaupt nicht eintreffen. Eine spezielle Konfiguration ist möglicherweise erforderlich, um zu senden Sendungen Auf einem Datagramm -Socket.[5] Um Broadcast -Pakete zu empfangen, sollte ein Datagramm -Socket nicht an eine bestimmte Adresse gebunden sein, obwohl in einigen Implementierungen auch Broadcast -Pakete empfangen werden können, wenn ein Datagramm -Socket an eine bestimmte Adresse gebunden ist.[6]
- Stream -Sockel
- Verbindungs orientiert Sockets, die verwenden Transmissionskontrollprotokoll (TCP), Stream Control Transmission Protocol (SCTP) oder Datagramm -Überlastungskontrollprotokoll (DCCP). Ein Stream -Socket bietet a sequenziert und eindeutiger fehlerfreier Daten ohne Datensatzgrenzen mit genau definierten Mechanismen zum Erstellen und Zerstören von Verbindungen und Berichterstellungsfehlern. Eine Stream -Socket überträgt Daten zuverlässigin Ordnung und mit außerhalb der Bandbreite Fähigkeiten. Im Internet werden Stream -Sockets normalerweise mit TCP implementiert, sodass Anwendungen über Netzwerke mit dem TCP/IP -Protokoll in Bezug auf Netzwerke ausgeführt werden können.
- Rohe Steckdosen
- Ermöglichen Sie direktes Senden und Empfangen von IP-Paketen ohne protokollspezifische Transportschichtformatierung. Mit anderen Arten von Sockets die Nutzlast ist automatisch eingekapselt Gemäß dem ausgewählten Transportschichtprotokoll (z. B. TCP, UDP) und dem Socket -Benutzer ist sich der Existenz von Protokoll nicht bewusst Header das werden mit der Nutzlast ausgestrahlt. Beim Lesen einer rohen Steckdose sind die Header normalerweise enthalten. Beim Übertragen von Paketen aus einer Rohsteck ist die automatische Zugabe eines Headers optional.
- Meiste Steckdose Anwendungsprogrammierschnittstellen (APIs) zum Beispiel diejenigen, die auf basieren Berkeley Sockets, unterstützen Sie rohe Steckdosen. Windows XP wurde im Jahr 2001 mit RAW -Socket -Unterstützung veröffentlicht, die in der implementierten Winsock Schnittstelle, aber drei Jahre später, Microsoft Limited Winsocks Roh -Socket -Unterstützung aufgrund von Sicherheitsbedenken.[7]
- Rohstocken werden in Sicherheitsanwendungen wie wie NMAP. Ein Anwendungsfall für rohe Sockel ist die Implementierung neuer Transportschichtprotokolle in Benutzerraum.[8] Rohstocken sind in der Regel in Netzwerkgeräten erhältlich und werden für verwendet Routing -Protokolle so wie die Internetgruppenmanagementprotokoll (IGMP) und öffne den kürzesten Weg zuerst (OSPF) und in der Internet -Steuermeldungsprotokoll (ICMP) verwendete unter anderem durch die Ping -Dienstprogramm.[9]
Andere Sockeltypen werden über andere Transportprotokolle implementiert, wie z. Systemnetzwerkarchitektur[10] und UNIX -Domain -Sockets Für interne Inter-Process-Kommunikation.
Sockelzustände im Client-Server-Modell
Computerprozesse, die Anwendungsdienste anbieten, werden als bezeichnet als Serverund erstellen Sie Sockets beim Startup, die in der enthalten sind Hörzustand. Diese Sockel warten auf Initiativen von Klient Programme.
Ein TCP -Server kann mehrere Clients gleichzeitig bedienen, indem er für jede Client -Verbindung für jeden Client einen einzigartigen dedizierten Socket für jede Client -Verbindung erstellt. Diese sind in der etablierter Staat Wenn ein Sockel zu Socket Virtuelle Verbindung oder Virtual Circuit (VC), auch als TCP bezeichnet Sitzung, wird mit dem Fernstock eingerichtet und bietet einen Duplex Bytestrom.
Ein Server kann mehrere gleichzeitig etablierte TCP-Sockets mit derselben lokalen Portnummer und der gleichen lokalen IP-Adresse erstellen, die jeweils einem eigenen Server-Kind-Prozess zugeordnet sind und seinen eigenen Client-Prozess bedienen. Sie werden vom Betriebssystem als unterschiedliche Sockel behandelt, da die Remote -Socket -Adresse (die Client -IP -Adresse oder Portnummer) unterschiedlich ist. d.h. da sie unterschiedlich haben Sockelpaar Tupel.
UDP -Sockets haben keine etablierter Staat, weil das Protokoll ist verbindungslos. Ein UDP -Serverprozess verarbeitet eingehende Datagramme aus allen Remote -Clients nacheinander über denselben Socket. UDP -Sockets werden nicht von der Remote -Adresse identifiziert, sondern nur von der lokalen Adresse, obwohl jede Nachricht eine zugeordnete Remote -Adresse hat, die von jedem Datagramm mit der Netzwerk -Anwendungsprogrammierschnittstelle (API) abgerufen werden kann.
Sockelpaare
Die Kommunikation lokaler und abgelegener Sockets wird genannt Sockelpaare. Jedes Sockelpaar wird von einem einzigartigen beschrieben 4-Tupel bestehend aus Quell- und Ziel -IP -Adressen und Portnummern, d. H. Von lokalen und Remote -Socket -Adressen.[11][12] Wie oben erläutert, ist im TCP-Fall ein Socket-Paar an jedem Ende der Verbindung mit einem einzigartigen 4-Tupel zugeordnet.
Geschichte
Der Begriff Steckdose stammt aus der Veröffentlichung von RFC 147 im Jahr 1971, als es im Arpanet verwendet wurde. Die meisten modernen Implementierungen von Sockets basieren auf Berkeley Sockets (1983) und andere Stapel wie z. Winsock (1991). Die Berkeley Sockets API in der Berkeley Software Distribution (BSD), Ursprung mit dem 4.2bsd UNIX -Betriebssystem Als API. Erst 1989 konnte dies jedoch UC Berkeley Versionen seiner Betriebssystem- und Netzwerkbibliothek frei von den Lizenzbeschränkungen von Lizenzierung AT&T's urheberrechtlich geschützt Unix.
In c. 1987 stellte AT & T die vor Ströme-basierend Transportschichtschnittstelle (Tli) in UNIX -System v Release 3 (SVR3).[13] und fuhr in Release 4 (SVR4) fort.[14]
Andere frühe Implementierungen wurden geschrieben für Tops-20,[15] MVS,[15] VM,[15] IBM-DOS (PCIP).[15][16]
Steckdosen in Netzwerkgeräten
Die Steckdose ist in erster Linie ein Konzept, das in der verwendet wird Transportschicht des Internet -Protokollsuite oder Sitzungsschicht des OSI -Modell. Networking -Geräte wie z. Router, die bei der operieren Internetschicht, und Schalter, die bei der operieren Verbindungsschichtbenötigen keine Implementierungen der Transportschicht. Allerdings staatlich Netzwerk -Firewalls, Netzwerkadressenübersetzerund Proxy -Server verfolgen aktive Sockelpaare. Im Mehrschichtschalter und Servicequalität (QoS) Unterstützung in Routern, Paketflüsse kann identifiziert werden, indem Informationen über die Sockelpaare extrahiert werden.
Rohe Steckdosen sind in der Regel in Netzwerkgeräten erhältlich und werden für verwendet Routing -Protokolle wie zum Beispiel IGRP und OSPF, und für Internet -Steuermeldungsprotokoll (ICMP).
Siehe auch
Verweise
- ^ Programm für Cisco Networking Academy, CCNA 1 und 2 Begleitführer überarbeitet dritte Ausgabe, S. 480, ISBN1-58713-150-1
- ^ RFC 147
- ^ Jack Wallen (2019-01-22). "Eine Einführung in den SS -Befehl".
- ^ V. S. Bagad, I. A. Dhotre (2008), Computernetzwerke (5. überarbeitete Ausgabe, 2010 Hrsg.), Technische Veröffentlichungen Pune, p. 52
- ^ SO_BROADCAST, Microsoft, abgerufen 2019-12-12
- ^ Klassendatagramsocket, Orakel, abgerufen 2019-12-12
- ^ Ian Griffiths für Iang vom Fass. 12. August 2004. Rohe Sockel in XP SP2 weggegangen
- ^ "RAW (7): IPv4 Rohstecke - Linux Man Page". Die.net.
- ^ "RAW IP -Netzwerk -FAQ". faqs.org.
- ^ "www-306.ibm.com - Anynet Guide to Sockets Over SNA". Archiviert von das Original am 2008-05-03. Abgerufen 2006-09-07.
- ^ books.google.com - UNIX -Netzwerkprogrammierung: Die Sockets Networking API
- ^ books.google.com - Entwerfen von BSD Rootkits: Eine Einführung in das Kernel -Hacking
- ^ (Goodheart 1994, p. 11)
- ^ (Goodheart 1994, p. 17)
- ^ a b c d HistoryOfComputerCommunications.info - Buch: 9.8 TCP/IP und XNS 1981 - 1983
- ^ Der Desktop -Computer als Netzwerkteilnehmer.pdf 1985
Weitere Lektüre
- Jones, Anthony; Ohlund, Jim (2002). Netzwerkprogrammierung für Microsoft Windows. ISBN 0-7356-1579-9.
Externe Links
- Wie Socken funktionieren - IBM Information Center
- Serverprogrammierung mit TCP/IP -Sockeln[Dead Link]
- Beejs Leitfaden zur Netzwerkprogrammierung
- Java -Tutorials: Networking -Grundlagen
- NET :: RAWIP; Modul für Perl -Anwendungen. Erstellt von Sergey Kolychev.
- SOCK_RAW Demystified: Artikel, der innere Arbeiten von rohen Sockeln beschreibt
- C Sprachbeispiele für Linux -Rohstocken für IPv4 und IPv6 - David Buchans C -Sprachbeispiele für IPv4- und IPv6 -Rohstecke für Linux.