1160 Stimmen

Was ist der Unterschied zwischen einem Port und einem Socket?

Diese Frage wurde von einem der Software-Ingenieure in meiner Organisation gestellt. Ich bin an der weitesten Definition interessiert.

11voto

Ugnes Punkte 601

Eine Anwendung besteht aus einem Paar von Prozessen, die über das Netz kommunizieren (Client-Server-Paar). Diese Prozesse senden und empfangen Nachrichten in und aus dem Netz über eine Software-Schnittstelle namens Steckdose . In Anbetracht der Analogie, die in dem Buch "Computer Networking: Top Down Approach". Es gibt ein Haus, das mit einem anderen Haus kommunizieren möchte. Hier ist das Haus mit einem Prozess und die Tür mit einer Steckdose vergleichbar. Der sendende Prozess geht davon aus, dass es auf der anderen Seite der Tür eine Infrastruktur gibt, die die Daten zum Zielort transportieren wird. Sobald die Nachricht auf der anderen Seite angekommen ist, geht sie durch die Tür des Empfängers (Socket) in das Haus (Prozess). Diese Illustration aus demselben Buch kann Ihnen helfen:
enter image description here
Sockets sind Teil der Transportschicht, die die logische Kommunikation mit Anwendungen ermöglicht. Das bedeutet, dass aus Sicht der Anwendung beide Hosts direkt miteinander verbunden sind, auch wenn zahlreiche Router und/oder Switches zwischen ihnen stehen. Ein Socket ist also nicht selbst eine Verbindung, sondern der Endpunkt der Verbindung. Protokolle der Transportschicht sind nur auf den Hosts und nicht auf den dazwischenliegenden Routern implementiert.
Häfen bieten eine Möglichkeit zur internen Adressierung einer Maschine. Der Hauptzweck besteht darin, mehreren Prozessen das Senden und Empfangen von Daten über das Netz zu ermöglichen, ohne andere Prozesse (und deren Daten) zu stören. Alle Sockets sind mit einer Portnummer versehen. Wenn ein Segment bei einem Host ankommt, prüft die Transportschicht die Nummer des Zielanschlusses des Segments. Anschließend leitet sie das Segment an den entsprechenden Socket weiter. Diese Aufgabe, die Daten in einem Segment der Transportschicht an den richtigen Socket weiterzuleiten, wird als De-Multiplexing . Die Daten des Segments werden dann an den mit dem Socket verbundenen Prozess weitergeleitet.

9voto

inf3rno Punkte 22107

Der Port war der einfachste Teil, er ist nur ein eindeutiger Bezeichner für einen Socket. Ein Socket ist etwas, das Prozesse verwenden können, um Verbindungen herzustellen und miteinander zu kommunizieren. Der große Jeff hatte eine tolle Telefonanalogie, die nicht perfekt war, also beschloss ich, sie zu korrigieren:

  • ip und port ~ Rufnummer
  • Steckdose ~ Telefongerät
  • Verbindung ~ Telefonanruf
  • Verbindungsaufbau ~ Anrufen einer Nummer
  • Prozesse, Remote-Anwendungen ~ Menschen
  • Nachrichten ~ Sprache

7voto

Shridhar410 Punkte 107

Hafen und Steckdose können mit einer Bankfiliale verglichen werden.

Die Gebäudenummer der "Bank" ist analog zur IP-Adresse. Eine Bank hat verschiedene Bereiche wie:

  1. Abteilung Sparkonto
  2. Abteilung für Privatkredite
  3. Abteilung Baufinanzierung
  4. Beschwerdestelle

1 (Abteilung für Sparkonten), 2 (Abteilung für Privatkredite), 3 (Abteilung für Bauspardarlehen) und 4 (Beschwerdestelle) sind also Häfen.

Nehmen wir an, Sie wollen ein Sparkonto eröffnen, Sie gehen zur Bank (IP-Adresse), dann gehen Sie zur "Sparkontoabteilung" (Anschlussnummer 1), dann treffen Sie einen der Mitarbeiter, die in der "Sparkontoabteilung" arbeiten. Nennen wir ihn SAVINGACCOUNT_EMPLOYEE1 für die Kontoeröffnung.

SAVINGACCOUNT_EMPLOYEE1 ist Ihr Socket-Deskriptor, daher kann es sein, dass SAVINGACCOUNT_EMPLOYEE1 bis SAVINGACCOUNT_EMPLOYEEN. Dies sind alles Socket-Deskriptoren.

Auch in anderen Abteilungen gibt es Mitarbeiter, die ihnen unterstellt sind, und sie sind mit der Steckdose vergleichbar.

7voto

yondoo Punkte 194

Von Oracle Java-Tutorial :

Ein Socket ist ein Endpunkt einer bidirektionalen Kommunikationsverbindung zwischen zwei Programmen, die im Netz laufen. Ein Socket ist an eine Anschlussnummer gebunden, so dass die TCP-Schicht die Anwendung identifizieren kann, an die die Daten gesendet werden sollen.

7voto

S.Lott Punkte 371691

Ein Socket ist eine Struktur in Ihrer Software. Er ist mehr oder weniger eine Datei; er hat Operationen wie Lesen und Schreiben. Es ist keine physische Sache, sondern eine Möglichkeit für Ihre Software, auf physische Dinge zu verweisen.

Ein Port ist ein geräteähnliches Ding. Jeder Host hat ein oder mehrere Netzwerke (diese sind physisch); ein Host hat eine Adresse in jedem Netzwerk. Jede Adresse kann Tausende von Ports haben.

Nur ein Socket darf einen Port an einer Adresse benutzen. Der Socket weist den Anschluss ungefähr so zu, wie er ein Gerät für Dateisystem-E/A zuweist. Sobald der Anschluss zugewiesen ist, kann kein anderer Socket eine Verbindung zu diesem Anschluss herstellen. Der Port wird freigegeben, wenn der Socket geschlossen wird.

Werfen Sie einen Blick auf TCP/IP-Terminologie .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X