Diese Frage wurde von einem der Software-Ingenieure in meiner Organisation gestellt. Ich bin an der weitesten Definition interessiert.
Antworten
Zu viele Anzeigen?Socket ist eine SW-Abstraktion eines Netzwerk-Endpunkts, der als Schnittstelle zur Anwendung dient. In Java, C# wird es durch ein Objekt dargestellt, in Linux, Unix ist es eine Datei.
Port ist nur eine Eigenschaft eines Sockets, die Sie angeben müssen, wenn Sie eine Kommunikation herstellen wollen. Um Pakete von einem Socket zu empfangen, müssen Sie ihn an einen bestimmten lokalen Port und eine NIC (mit lokaler IP-Adresse) oder an alle NICs (INADDR_ANY wird im bind-Aufruf angegeben) binden. Um Pakete zu senden, müssen Sie Port und IP des entfernten Sockets angeben.
Ein Port bezeichnet einen Kommunikationsendpunkt bei den TCP- und UDP-Transporten für das IP-Netzwerkprotokoll. Ein Socket ist eine Softwareabstraktion für einen Kommunikationsendpunkt, die häufig in Implementierungen dieser Protokolle verwendet wird (Socket-API). Eine alternative Implementierung ist die XTI/TLI-API.
Siehe auch:
Stevens, W. R. 1998, UNIX-Netzwerkprogrammierung: Networking APIs: Sockets und XTI; Band 1, Prentice Hall.
Stevens, W. R., 1994, TCP/IP Illustrated, Band 1: Die Protokolle, Addison-Wesley.
Uff zu viele Leute verbinden das Socket-Konzept mit einer Zwei-Endpunkte-Kommunikation, meist über das TCP/IP-Protokoll. Aber:
- NO - Socket steht nicht im Zusammenhang mit einer Zwei-Endpunkt-Kommunikation. Es ist der lokale Endpunkt, der auf der anderen Seite verbunden werden kann oder nicht (denken Sie an einen Server-Socket, der auf eine eingehende Verbindung wartet).
- NO - Socket hat nicht unbedingt etwas mit TCP/IP zu tun. Es wird mit einem Protokoll definiert, das TCP/IP, aber auch etwas anderes sein kann. Zum Beispiel können Sie einen Socket haben, der über Dateien kommuniziert. Sie können auch selbst ein neues Protokoll implementieren, um eine Kommunikation über eine USB-Lampe zu haben, die Daten durch Blinken sendet: Das wäre aus der Sicht der Anwendung immer noch ein Socket.
Was das Port-Konzept betrifft, so ist es richtig, was Sie in anderen Antworten gelesen haben. Port ist meist als Zahlenwert (2 Bytes, 0-65535) in TCP- oder UDP-Paketen gedacht. Ich möchte nur betonen, dass TCP oder UPD nicht unbedingt zusätzlich zu IP verwendet werden. Also:
- NO - Es ist nicht richtig, dass der Port Teil von TCP/IP oder UDP/IP ist. Er ist Teil von TCP oder UDP, oder jedem anderen Protokoll, das ihn definiert und verwendet. IP hat keine Ahnung, was ein Port ist.
Ein einzelner Anschluss kann eine oder mehrere Steckdosen haben, die mit verschiedenen externen IPs verbunden sind, wie eine Mehrfachsteckdose.
TCP 192.168.100.2:9001 155.94.246.179:39255 ESTABLISHED 1312
TCP 192.168.100.2:9001 171.25.193.9:61832 ESTABLISHED 1312
TCP 192.168.100.2:9001 178.62.199.226:37912 ESTABLISHED 1312
TCP 192.168.100.2:9001 188.193.64.150:40900 ESTABLISHED 1312
TCP 192.168.100.2:9001 198.23.194.149:43970 ESTABLISHED 1312
TCP 192.168.100.2:9001 198.49.73.11:38842 ESTABLISHED 1312
Auf diese Frage sind bereits theoretische Antworten gegeben worden. Ich möchte ein praktisches Beispiel zu dieser Frage geben, das Ihr Verständnis von Socket und Port verdeutlichen wird.
Ich fand es aquí
Dieses Beispiel zeigt Ihnen, wie Sie eine Verbindung zu einer Website wie Wiley herstellen. Sie öffnen Ihren Webbrowser (z. B. Mozilla Firefox) und geben www.wiley.com in die Adressleiste ein. Ihr Webbrowser verwendet einen DNS-Server (Domain Name System), um den Namen www.wiley.com nachzuschlagen und seine IP-Adresse zu ermitteln. In diesem Beispiel lautet die Adresse 192.0.2.100.
Firefox stellt eine Verbindung mit der Adresse 192.0.2.100 und dem Port auf dem der Webserver der Anwendungsschicht läuft. Firefox weiß welchen Port er erwarten muss, weil es sich um einen bekannten Port handelt. Der bekannte Port für einen Webserver ist der TCP-Port 80.
Der Zielsocket, zu dem Firefox eine Verbindung herzustellen versucht, wird geschrieben als socket:port, oder in diesem Beispiel 192.0.2.100:80. Dies ist der Server Seite der Verbindung, aber der Server muss wissen, wohin er die Webseite, die Sie in Mozilla Firefox anzeigen möchten, zu senden, daher haben Sie auch einen Socket für die Client-Seite der Verbindung.
Die clientseitige Verbindung besteht aus Ihrer IP-Adresse, z. B. 192.168.1.25, und einer zufällig gewählten dynamischen Portnummer. Der mit Firefox verbundene Socket sieht wie 192.168.1.25:49175 aus. Da Web Server auf dem TCP-Port 80 arbeiten, sind diese beiden Sockets TCP-Sockets, Wenn Sie sich hingegen mit einem Server verbinden, der über einen UDP-Port arbeitet, sind wären sowohl die Server- als auch die Client-Sockets UDP-Sockets.