Diese Frage wurde von einem der Software-Ingenieure in meiner Organisation gestellt. Ich bin an der weitesten Definition interessiert.
Antworten
Zu viele Anzeigen?Im Allgemeinen gibt es viele theoretische Möglichkeiten, aber eine der einfachsten Möglichkeiten, diese beiden Konzepte zu unterscheiden, ist die folgende:
Um einen Dienst in Anspruch zu nehmen, benötigen Sie eine Dienstnummer. Diese Dienstnummer wird Port genannt. So einfach ist das.
Der Dienst HTTP läuft zum Beispiel auf Port 80.
Nun können viele Personen den Dienst anfordern, und es wird eine Verbindung zwischen Client und Server hergestellt. Es wird eine Menge Verbindungen geben. Jede Verbindung stellt einen Client dar. Um jede Verbindung aufrechtzuerhalten, erstellt der Server für jede Verbindung einen Socket, um seinen Client zu verwalten.
Da es sich hierbei um grundlegende Netzwerkkonzepte handelt, werde ich sie in einer einfachen, aber dennoch umfassenden Weise erklären, um sie im Detail zu verstehen.
- Eine Steckdose ist wie ein Telefon (d.h. ein End-to-End-Gerät für die Kommunikation)
- IP ist wie Ihre Telefonnummer (d.h. die Adresse für Ihre Steckdose)
- Hafen ist wie die Person, mit der Sie sprechen möchten (d.h. die Dienstleistung, die Sie bei dieser Adresse bestellen möchten)
- Ein Socket kann ein Client- oder ein Server-Socket sein (z.B. in einer Firma ist das Telefon des Kundensupports ein Server, aber ein Telefon bei Ihnen zu Hause ist meistens ein Client)
Ein Socket im Netz ist also ein virtuelles Kommunikationsgerät, das an ein Paar (ip , port) = (Adresse , Dienst) gebunden ist.
Anmerkung:
- Eine Maschine, ein Computer, ein Host, ein Handy oder ein PC kann mehrere Adressen, mehrere offene Ports und damit mehrere Sockets haben. Wie in einem Büro können Sie mehrere Telefone mit mehreren Telefonnummern und mehreren Gesprächspartnern haben.
- Das Vorhandensein eines offenen/aktiven Ports setzt voraus, dass ein Socket an diesen gebunden ist, da der Port nur über den Socket zugänglich ist. Sie können jedoch vorläufig ungenutzte Ports haben.
- Beachten Sie auch, dass Sie einen Server-Socket an (einen Port, eine bestimmte Adresse eines Rechners) oder an (einen Port, alle Adressen eines Rechners) binden können, so wie Sie beim Telefon viele Telefonleitungen (Telefonnummern) an ein Telefon oder eine bestimmte Telefonleitung an ein Telefon anschließen können und dennoch eine Person über alle diese Telefonleitungen oder über eine bestimmte Telefonleitung erreichen können.
- Sie können eine Buchse nicht mit zwei Anschlüssen verbinden (binden), so wie beim Telefon nicht immer zwei Personen gleichzeitig dasselbe Telefon benutzen können.
- Erweitert: Auf demselben Rechner können Sie nicht zwei Sockets mit demselben Typ (Client oder Server) und demselben Port und derselben IP-Adresse haben. Wenn Sie jedoch ein Client sind, können Sie zwei Verbindungen mit zwei Sockets zu einem Server öffnen, da der lokale Port in jedem dieser Client-Sockets unterschiedlich ist)
Ich hoffe, dass dies Ihre Zweifel ausräumt.
Es scheint eine Menge Antworten zu geben, die Sockel mit der Verbindung zwischen 2 PCs gleichsetzen, was meiner Meinung nach absolut falsch ist. Ein Socket war schon immer die Endpunkt auf 1 PC, der angeschlossen sein kann oder auch nicht - sicher haben wir alle schon einmal Listener oder UDP-Sockets* verwendet. Das Wichtigste ist, dass sie adressierbar und aktiv ist. Eine Nachricht an 1.1.1.1:1234 zu senden, wird wahrscheinlich nicht funktionieren, da für diesen Endpunkt kein Socket definiert ist.
Sockets sind protokollspezifisch - daher ist die Implementierung der Einzigartigkeit, die sowohl TCP / IP y UDP / IP verwendet* (ipaddress:port), ist anders als z.B., IPX (Netzwerk, Knoten und... ähm, Socket - aber ein anderer Socket als mit dem allgemeinen Begriff "Socket" gemeint. IPX-Socket-Nummern sind gleichbedeutend mit IP-Ports). Aber sie alle bieten einen eindeutigen adressierbaren Endpunkt.
Seitdem IP das vorherrschende Protokoll geworden ist, ist ein Port (in der Netzwerksprache) entweder mit einer UDP- oder TCP-Portnummer gleichzusetzen, die ein Teil der Socket-Adresse ist.
-
UDP ist verbindungslos, d. h. es wird keine virtuelle Verbindung zwischen den beiden Endpunkten hergestellt. Wir beziehen uns jedoch immer noch auf UDP-Sockets als Endpunkt. Die API-Funktionen machen deutlich, dass es sich bei beiden nur um unterschiedliche Arten von Sockets handelt.
SOCK_DGRAM
ist UDP (nur das Senden einer Nachricht) undSOCK_STREAM
ist TCP (Schaffung einer virtuellen Leitung). -
Technisch gesehen enthält der IP-Header die IP-Adresse, und das Protokoll über IP (UDP oder TCP) enthält die Portnummer. Dies macht es möglich, dass andere Protokolle (z.B.. ICMP die keine Portnummern, aber IP-Adressierungsinformationen haben).
Kurze, knappe Antwort.
A Hafen kann beschrieben werden als eine interne Adresse innerhalb eines Hosts, der ein Programm oder einen Prozess identifiziert.
A Steckdose kann beschrieben werden als Programmierschnittstelle Ermöglicht einem Programm die Kommunikation mit anderen Programmen oder Prozessen, im Internet oder lokal.