Könnte mir bitte jemand den Unterschied zwischen einem Port und einem Socket ganz klar erklären. Ich weiß, dass ein Port als Tür in das Netzwerk für einen Anwendungsprozess dient und dass der Anwendungsprozess eine Socket-Verbindung mit der angegebenen Portnummer verwendet, um die Netzwerkkommunikation zu verwalten Es ist schwierig, den Unterschied zwischen der Steckdose und dem Port zu verstehen und zu verstehen, wie sie alle zusammenpassen.
networking
sockets
networks
Cobie
quelle
quelle
Antworten:
S ist ein Serverprogramm: Nehmen wir an, es ist ein HTTP-Server, also verwendet er die bekannte Portnummer für HTTP (80). Ich führe es auf einem Host mit IP-Adresse aus
10.0.0.4
, damit es auf Verbindungen wartet10.0.0.4:80
(weil das ist, wo jeder erwarten wird, es zu finden).In S erstelle ich einen Socket und binde ihn an diese Adresse: Jetzt weiß das Betriebssystem, dass eingehende Verbindungen über diesen bestimmten Socket
10.0.0.4:80
an meinen S- Prozess geleitet werden sollen.Netstat-Ausgabe, sobald der Socket gebunden ist:
NB. Die lokale Adresse besteht nur aus Nullen, da es S egal ist, wie seine Clients sie erreichen
Sobald S diesen Socket gebunden hat, akzeptiert es Verbindungen. Jedes Mal, wenn ein neuer Client eine Verbindung herstellt, wird
accept
ein neuer Socket zurückgegeben, der für diesen Client spezifisch istNetstat-Ausgabe, sobald eine Verbindung akzeptiert wird:
10.0.0.4:80
repräsentiert S Ende der Verbindung S‘und ist mit dem Sockel verbunden ist durch zurückaccept
10.0.0.5:55715
ist das Ende der Verbindung des Clients und ist dem Socket zugeordnet, den der Client an die Verbindung übergeben hat . Der Client-Port wird nur zum Weiterleiten von Paketen auf dieser TCP-Verbindung an den richtigen Prozess verwendet: Er wird vom Client-Kernel nach dem Zufallsprinzip aus dem kurzlebigen Portbereich zugewiesen.Jetzt kann S problemlos weitere Client-Verbindungen akzeptieren. Jeder Socket erhält einen eigenen Socket, jeder Socket wird einer eindeutigen TCP-Verbindung zugeordnet und jede Verbindung hat eine eindeutige Remoteadresse. S verfolgt den Client-Status (falls vorhanden), indem es ihn dem Socket zuordnet.
Also ungefähr:
accept
Aufrufe zurückgegeben wird, erfolgt dies jedoch in nur einem Vorgang. Der Socket jeder eingehenden Verbindung ist für eine Instanz des Servers eindeutigsocketpair
hat, ein Kind dieses Prozesses zu sein und einen zu erben oder explizit einen der Sockets dieses Prozesses zu übergebenquelle
Stellen Sie sich Ihre Maschine als Wohnhaus vor:
Ein Hafen ist eine Wohnungsnummer.
Eine Steckdose ist die Tür einer Wohnung.
Eine IP-Adresse ist die Straßenadresse des Gebäudes.
quelle
A socket is the door of an apartment.
Aber konnten nicht mehrere Sockets an einem Port offen sein?Ein Port ist Teil der Adresse in den TCP- und UDP-Protokollen. Es wird verwendet, um dem Betriebssystem zu helfen, zu identifizieren, welche Anwendung die empfangenen Daten erhalten soll. Ein Betriebssystem muss Ports unterstützen, um TCP und UDP zu unterstützen, da Ports ein wesentlicher Bestandteil von TCP und UDP sind.
Ein Socket ist Teil der Schnittstelle, die das Betriebssystem für Anwendungen bereitstellt, damit diese Netzwerkdaten senden und empfangen können. Die meisten Socket-Implementierungen unterstützen viele Protokolle jenseits von TCP und UDP, von denen einige kein Konzept für Ports haben. Ein Betriebssystem muss keine Sockets unterstützen, um TCP oder UDP zu unterstützen. Es könnte eine andere Schnittstelle für Anwendungen zur Verfügung stellen. Ein Socket ist einfach eine Möglichkeit, Daten an einem bestimmten Port zu senden und zu empfangen.
quelle
Ein Computer verfügt über eine IP-Adresse, die ihn als separate Einheit im Netzwerk identifiziert. Wir fügen dem eine zusätzliche Nummer hinzu, damit wir zwischen Verbindungen zu diesem Computer unterscheiden können. Dies ist die Portnummer. Auf der OS-Seite der Verbindung benötigen Sie Puffer, Verbindungsstatus usw. Dieses logische Objekt ist der Socket.
quelle
Ein Socket ist ein Kommunikationspfad zu einem Port. Wenn Sie möchten, dass Ihr Programm über das Netzwerk kommuniziert, haben Sie ihm eine Möglichkeit zur Adressierung des Ports gegeben. Dazu müssen Sie einen Socket erstellen und diesen an den Port anschließen. Grundsätzlich gilt: Socket = IP + Ports Sockets bieten Zugriff auf den Port + IP
quelle
Eine IP-Adresse identifiziert das Gerät, dh die Adresse für das jeweilige Gerät, wenn Sie das Gerät über den IP-Now-Port erreicht haben, definiert, mit welchem Prozess das Gerät kommunizieren soll.
Für die eigentliche Kommunikation benötigen Sie also beide Ports + IP, die als Socket bezeichnet werden.
quelle