Frage

Das war eine Frage von einem der Software-Ingenieure in meiner Organisation erhöht. Ich habe Interesse an der breitesten Definition.

Keine korrekte Lösung

Andere Tipps

Zusammenfassung

Ein TCP-Socket ist ein Endpunkt Instanz , definiert durch eine IP-Adresse und ein Port im Zusammenhang mit entweder einer bestimmten TCP-Verbindung oder dem Hörposition Zustand.

Ein Port ist eine Virtualisierungs-Kennung einen Dienstendpunkt zu definieren (im Unterschied von einem Dienst Instanz Endpunkt aka Sitzungs-ID).

Ein TCP-Socket ist nicht eine Verbindung , es ist der Endpunkt einer spezifischen Verbindung.

Es kann gleichzeitig mit einem Service-Endpunkt sein, da eine Verbindung von identifiziert sowohl ihrem lokalen und Remote- Endpunkten, so dass Besucher auf eine bestimmte Dienstinstanz geroutet werden .

Es kann nur ein Hörer-Buchse für eine gegebene Adresse / Port-Kombination sein.

Exposition

Das war eine interessante Frage, die mich gezwungen, eine Reihe von Dingen, erneut zu prüfen, ich dachte, ich wusste, von innen nach außen. Man könnte meinen, ein Name wie „socket“ selbsterklärend sein würde: Es war offensichtlich Bilder des Endpunkts evozieren gewählt, in dem Sie ein Netzwerkkabel anschließen, da starke funktionale Parallele zu sein. Dennoch ist das Wort in Netzwerk parlance „socket“ trägt so viel Gepäck, dass eine sorgfältige Überprüfung notwendig ist.

Im weitesten Sinne, ein Port ist ein Punkt des Eingangs- oder Ausgangs. Obwohl es nicht in einem Netzwerk-Kontext verwendet, das Französisch Wort porte bedeutet wörtlich Tür oder Gateway , ferner die Tatsache betont, dass Häfen Transport Endpunkte sind, ob Sie Daten oder große Stahlbehälter versenden.

Für die Zwecke dieser Diskussion, die ich Rücksicht auf den Kontext der TCP-IP-Netze begrenzen. Das OSI-Modell ist alles sehr gut, aber noch nie mit hohen Belastung Bedingungen in stark frequentiert, viel weniger weit verbreitet vollständig umgesetzt worden.

Die Kombination aus einer IP-Adresse und ein Port als Endpunkt genau bekannt und wird manchmal eine Steckdose. Diese Nutzung stammt mit RFC793, der ursprünglichen TCP-Spezifikation.

Ein TCP Verbindung ist definiert durch zwei Endpunkte aka Steckdosen .

Ein Endpunkt (Buchse) wird durch die Kombination einer Netzwerkadresse und eine Port Kennung definiert. Beachten Sie, dass Adresse / Port tut nicht vollständig eine Buchse identifizieren (mehr dazu später).

Der Zweck der Ports ist mehrere Endpunkte auf einem bestimmten Netzwerkadresse zu unterscheiden. Man könnte sagen, dass ein Port ein virtualisierte Endpunkt ist. Diese Virtualisierung macht mehrere gleichzeitige Verbindungen auf einem einzigen Netzwerk-Schnittstelle möglich.

  

Es ist das Buchsenpaar (die 4-Tupel   bestehend aus der Client-IP-Adresse,   Client-Portnummer, Server-IP-Adresse,   und Server-Portnummer), die angibt   die beiden Endpunkte, die eindeutig   identifiziert jede TCP-Verbindung in einem   Internet. ( TCP-IP Illustrated Volume 1 , Richard Stevens)

In den meisten C-abgeleiteten Sprachen, TCP-Verbindungen hergestellt und unter Verwendung von Verfahren auf einer Instanz einer Socket-Klasse manipuliert. Obwohl es üblich ist, auf einer höheren Abstraktionsebene zu betreiben, die typischerweise eine Instanz einer Klasse Network, macht dies in der Regel eine Referenz auf ein Socket-Objekt. Um die Codierer Dieses Buchse Objekt erscheint die Verbindung darstellen, da die Verbindung hergestellt wird, und unter Verwendung von Verfahren des Socket-Objekts manipuliert.

In C #, eine TCP-Verbindung (zu einem vorhandenen Hörer) zu etablieren zunächst ein erstellen Sie TcpClient . Wenn Sie nicht über einen Endpunkt der angeben TcpClient Konstruktor es verwendet Standardwerte - eine oder andere Weise die lokale Endpunkt definiert ist. Dazu rufen Sie die Connect Methode auf der Instanz, die Sie erstellt haben. Dieses Verfahren erfordert einen Parameter, um den anderen Endpunkt zu beschreiben.

Das ist alles ein wenig verwirrend und führt Sie zu glauben, dass eine Buchse eine Verbindung ist, die Bollocks ist. Ich war arbeitend unter diesem Mißverständnis bis Reichard Dorman die Frage gestellt.

viel Lesen und Denken getan zu haben, ich bin jetzt überzeugt, dass es viel mehr Sinn machen würde, um eine Klasse haben TCPVerbindung mit einem Konstruktor, der zwei Argumente übernimmt, LocalEndPoint und RemoteEndpoint . Man könnte wahrscheinlich ein einziges Argument unterstützen RemoteEndpoint , wenn Standardeinstellungen für den lokalen Endpunkt akzeptabel sind. Dies ist nicht eindeutig mehrfach auf Computern, aber die Mehrdeutigkeit kann durch Auswahl der Schnittstelle mit dem kürzesten Weg zum Remote-Endpunkt mit der Routing-Tabelle aufgelöst werden.

Clarity würde in anderer Hinsicht verbessert werden, auch. Ein Socket ist nicht durch die Kombination aus IP-Adresse identifiziert und Port:

  

[...] TCP demultiplext eingehende Segmente alle vier Werten, die die lokalen und ausländische Adressen umfassen: Ziel-IP-Adresse, Ziel-Portnummer, Quell-IP-Adresse und Quellportnummer. TCP kann nicht nur am Zielhafen suchen, welcher Prozess wird ein ankommendes Segment bestimmen. Auch die nur eine der [verschiedenen] Endpunkte bei [einer bestimmten Portnummer], die eingehenden Verbindungsanforderungen empfangen, ist das in dem Zustand hören. (P255, TCP-IP Illustrated Volume 1 , Richard Stevens)

Wie Sie sehen können, ist es nicht nur möglich, sondern sehr wahrscheinlich für einen Netzdienst zahlreiche Steckdosen mit derselben Adresse / Port zu haben, aber nur ein Hörer-Buchse an einer bestimmten Adresse / Port-Kombination. Typische Bibliothek Implementierungen stellt eine Socket-Klasse, eine Instanz verwendet wird, zu erstellen und eine Verbindung zu verwalten. Dies ist äußerst bedauerlich, da es Verwirrung verursacht und hat zu einer weit verbreiteten conflation der beiden Konzepte führen.

Hagrawal glaubt mir nicht (siehe Kommentare) hier ist also eine echte Probe. Ich verbunden, um einen Web-Browser http://dilbert.com und dann lief netstat -an -p tcp. Die letzten sechs Zeilen des Ausgangs enthalten zwei Beispiele für die Tatsache, dass Adresse und Port nicht ausreicht, um eindeutig einen Socket zu identifizieren. Es gibt zwei verschiedene Verbindungen zwischen 192.168.1.3 (meinem Arbeitsplatz) und 54.252.94.236:80 (der Remote-HTTP-Server)

  TCP    192.168.1.3:63240      54.252.94.236:80       SYN_SENT
  TCP    192.168.1.3:63241      54.252.94.236:80       SYN_SENT
  TCP    192.168.1.3:63242      207.38.110.62:80       SYN_SENT
  TCP    192.168.1.3:63243      207.38.110.62:80       SYN_SENT
  TCP    192.168.1.3:64161      65.54.225.168:443      ESTABLISHED

Da eine Buchse der Endpunkt einer Verbindung ist, gibt es zwei Buchsen mit der Adresse / Port-Kombination 207.38.110.62:80 und zwei weitere mit der Adresse / Port-Kombination 54.252.94.236:80.

Ich denke, Hagrawal Missverständnis von meiner sehr vorsichtig Gebrauch des Wortes „identifiziert“ entsteht. I bedeutet „vollständig, eindeutig und identifiziert eindeutig“. In dem obigen Beispiel gibt es zwei Endpunkte mit der Adresse / Port-Kombination 54.252.94.236:80. Wenn alles, was Sie Adresse und Port ist, haben Sie nicht genügend Informationen, um diese Buchsen zu unterscheiden. Es ist nicht genügend Informationen, um identifizieren eine Steckdose.

Nachtrag

Absatz zwei von Abschnitt 2.7 von RFC793 sagt

  

Eine Verbindung wird durch das Paar von Buchsen an den Enden voll spezifiziert. EIN   Lokal-Buchse kann in vielen Verbindungen zu verschiedenen ausländischen teilnehmen   Steckdosen.

Diese Definition der Buchse ist aus einer Programmiersprache Sicht nicht hilfreich, weil es nicht das gleiche wie ein Buchse Objekt ist, die der Endpunkt einer bestimmten Verbindung ist. Um einen Programmierer, und die meisten dieses Publikum Frage sind Programmierer, dies ist ein wichtiger funktioneller Unterschied.

Referenzen

  1. TCP-IP Illustrated Volume 1 Die Protokolle , W. Richard Stevens, 1994 Addison Wesley

  2. RFC793 , Information Sciences Institute, Universität Southern California für DARPA

  3. RFC147 , die Definition einer Buchse, Joel M. Winett, Lincoln Laboratory

Ein Socket besteht aus drei Dingen:

  1. Eine IP-Adresse
  2. Ein Transportprotokoll
  3. Eine Portnummer

Ein Port ist eine Zahl zwischen 1 und 65535 einschließlich, die einem logisches Gatter in einem Gerät bedeutet. Jede Verbindung zwischen einem Client und Server benötigt eine eindeutige Fassung.

Zum Beispiel:

  • 1030 ist ein Hafen.
  • (10.1.1.2, TCP, Port 1030) ist eine Buchse.

A Buchse stellt eine einzelne Verbindung zwischen zwei Netzwerkanwendungen. Diese beiden Anwendungen nominell laufen auf verschiedenen Computern, aber Steckdosen können auch auf einem einzigen Computer für die Kommunikation zwischen Prozessen verwendet werden. Anwendungen können für die Kommunikation miteinander mehrere Sockets erstellen. Sockets ist bidirektional, was bedeutet, dass auf jeder Seite der Verbindung ist in der Lage sowohl das Senden und Empfangen von Daten. Daher kann eine Buchse theoretisch auf jeder Ebene des OSI-Modells von 2 nach oben erzeugt werden. Programmierer verwenden häufig Steckdosen in Netzwerkprogrammierung, wenn auch nur indirekt. Programmbibliotheken wie Winsock verstecken viele der Low-Level-Details der Socket-Programmierung. Sockets wird weit verbreitet seit Anfang der 1980er Jahre.

A port steht für einen Endpunkt oder "Channel" für die Netzwerkkommunikation. Port-Nummern erlauben verschiedene Anwendungen auf demselben Computer-Netzwerk-Ressourcen zu nutzen, ohne sie zu stören. Portnummern werden hauptsächlich in der Netzwerkprogrammierung, insbesondere Socket-Programmierung. Manchmal aber sind Portnummern sichtbar an den gelegentlichen Nutzer. Zum Beispiel verwenden einige Websites eine Person Besuche im Internet eine URL wie folgt aus:

http://www.mairie-metz.fr:8080/ In diesem Beispiel bezieht sich die Zahl 8080 auf die Port-Nummer durch den Web-Browser verwendet, um den Web-Server zu verbinden. Normalerweise verwendet eine Portnummer der Website 80 und diese Zahl muss nicht mit der URL enthalten sein (obwohl es sein kann).

In IP-Netzwerken können Portnummern theoretisch im Bereich von 0 bis 65535. Die meisten populären Netzwerk-Anwendungen, aber verwenden Portnummern am unteren Ende des Bereichs (wie 80 für HTTP).

Hinweis: Der Begriff Port bezieht sich auch auf verschiedene andere Aspekte der Netzwerktechnik. Ein Port kann für Peripheriegeräte, wie beispielsweise serielle, parallele und USB-Ports an einen physikalischen Anschlusspunkt beziehen. Der Begriff Port bezieht sich auch auf bestimmte Ethernet-Verbindungsstellen, wie sie auf einem Hub, Switch oder Router.

http://compnetworking.about.com/od/basicnetworkingconcepts/l /bldef_port.htm

http://compnetworking.about.com/od/itinformationtechnology/l /bldef_socket.htm

Mit etwas Analogie

Obwohl viele technische Sachen bereits vorher für das Steckdosen gegeben ist ... Ich möchte meine Antwort hinzufügen, nur für den Fall, , wenn jemand noch nicht den Unterschied zwischen ip, port fühlen konnte und Steckdosen

Betrachten ein Server S ,

und sagt Person X, Y, Z benötigt einen Service (zB Chat-Dienst) von der Server S

dann

IP-Adresse sagt -> , die ist, dass Chat-Server 'S', dass X, Y, Z wollen Kontakt

in Ordnung, du hast "die der Server"

aber annehmen, dass Server 'S' wird auch einige andere Dienstleistungen für andere Menschen bereitstellt, sagen 'S' stellt Speicherdienste zu Person A, B, C

und

Port sagt ---> das? Service Sie (X, Y, Z) müssen also Chat-Dienst und nicht, dass Storage-Service

okay .., machen Sie Server zu kennen zu kommen, dass 'Chat-Dienst' ist, was Sie wollen und nicht die Speicherung

und

Sie sind drei und die Server möchten vielleicht alle unterschiedlich die drei identifizieren

kommt der Buchse

Jetzt Buchse sagt -> , die man bestimmte Verbindung

das heißt, sagen wir,

Buchse 1 für Person X

Buchse 2 für Person Y

und Buchse 3 für Person Z

Ich hoffe, dass es jemanden, der hilft immer noch verwirrt :)

Firsty, denke ich, dass wir mit ein wenig Verständnis dessen, was immer ein Paket von A nach B beginnen soll.

Eine allgemeine Definition für ein Netzwerk ist die Verwendung des OSI Modell , die ein Netzwerk in eine Anzahl von Schichten aus trennt nach dem Verwendungszweck. Es gibt ein paar wichtigen diejenigen, die wir hier behandeln:

  • Die Data Link Layer . Diese Schicht ist verantwortlich für die Datenpakete von einem Netzwerkgerät zu einem anderen zu gelangen und ist knapp über der Schicht, die die Sende tatsächlich der Fall ist. Er spricht über MAC-Adressen und weiß, wie Hosts zu finden, basierend auf deren MAC (Hardware) Adresse, aber nicht mehr.
  • Die Netzwerk-Layer ist die Schicht, die Sie zu transportieren Daten über Maschinen und über physische Grenzen, wie physikalische Geräte ermöglicht. Die Netzwerkschicht ist im wesentlichen eine weitere Adresse basierten Mechanismus unterstützen, die irgendwie mit der physikalischen Adresse bezieht; geben Sie das Internet-Protokoll (IPv4). Eine IP-Adresse kann Ihr Paket von A über das Internet nach B, aber weiß nichts darüber, wie einzelne Hopfen zu durchqueren. Dies wird durch die Schicht behandelt oben gemäß Routing-Informationen.
  • Die Transportschicht . Diese Schicht ist verantwortlich für die Festlegung der Art und Weise Informationen von A nach B kommt und jegliche Einschränkungen, Schecks oder Fehler auf dieses Verhalten. Zum Beispiel fügt TCP zusätzliche Informationen zu einem Paket, so dass es möglich ist, zu folgern, wenn Pakete verloren gegangen sind.

TCP enthält unter anderem das Konzept der Häfen . Dies sind effektiv verschiedene Datenendpunkte auf der gleichen IP-Adresse, an die ein Internet-Socket (AF_INET) binden können.

Wie es passiert, tut so auch UDP und andere Transportschichtprotokolle. Sie haben nicht technisch Notwendigkeit Ports verfügen, aber diese Häfen bieten eine Möglichkeit für vielfältige Anwendungen in den Schichten über denselben Computer zu verwenden, zu erhalten (und in der Tat zu machen) ausgehende Verbindungen.

Was uns an die Anatomie eines TCP oder UDP-Verbindung bringt. Jedes verfügt über einen Quell-Port und Adresse und ein Ziel-Port und Adresse. Dies ist so, dass in einer bestimmten Sitzung kann die Zielanwendung reagiert, sowie erhalten, von der Quelle.

So Ports ist im Wesentlichen eine Spezifikation verordneten Weise mehr gleichzeitigen Verbindungen zu erlauben, die gleiche Adresse teilen.

Nun müssen wir einen Blick auf, wie Sie aus einer Anwendung Sicht der Außenwelt kommunizieren. Um dies zu tun, müssen Sie sich bitte an Ihren Betriebssystem stellen und da die meisten OSes die Berkeley Sockets Art und Weise, Dinge zu tun zu unterstützen, sehen wir, wir Buchsen denen Ports von einer Anwendung wie folgt erstellen:

int fd = socket(AF_INET, SOCK_STREAM, 0); // tcp socket
int fd = socket(AF_INET, SOCK_DGRAM, 0); // udp socket
// later we bind...

Great! So in den sockaddr Strukturen, werden wir unseren Hafen und bam angeben! Job erledigt! Nun, fast, außer:

int fd = socket(AF_UNIX, SOCK_STREAM, 0);

ist ebenfalls möglich. Urgh, das ist ein Strich durch die Rechnung geworfen!

Ok, gut tatsächlich hat es nicht.

: Alles, was wir mit einigen entsprechenden Definitionen tun müssen, ist kommen
  • Ein Internet-Buchse ist die Kombination aus einer IP-Adresse, ein Protokoll und die dazugehörige Portnummer, auf dem ein Servicedaten liefern kann. So TCP-Port 80, stackoverflow.com ist ein Internet-Socket.
  • Ein Unix-Socket ist ein IPC-Endpunkt in dem Dateisystem dargestellt wird, z.B. /var/run/database.sock.
  • A-Socket-API ist ein Verfahren zum Anfordern einer Anwendung der Lage sein, Daten an eine Steckdose lesen und schreiben.

Voila! Das räumt Dinge. Also in unserem Schema dann,

  • A-Port ist ein numerischer Identifizierer, der, als Teil eines Transportschichtprotokolls, die Servicenummer identifiziert, die auf die gegebene Anforderung antworten soll.

Also wirklich ein Port ist ein Teil der Anforderungen für die Bildung eines Internet-Buchse.Leider ist es passiert einfach so, dass die Bedeutung des Wortes Socket auf mehrere verschiedene Ideen angewendet. So herzlich rate ich Ihnen, Ihr nächstes Projekt-Socket-Namen, nur um die Verwirrung hinzuzufügen;)

A Buchse = IP-Adresse + a Port (numerische Adresse)
Zusammen bilden sie einen End-Punkt für eine Netzwerkverbindung auf einer Maschine zu identifizieren. (Habe ich flunk nur Netz 101?)

Im Allgemeinen werden Sie eine Menge theoretisches zu erhalten, aber eine der einfachsten Möglichkeiten, um diese beiden Konzepte zu unterscheiden ist wie folgt:

Um einen Dienst zu erhalten, müssen Sie eine Servicenummer. Diese Servicenummer wird ein Port genannt. So einfach ist das.

Zum Beispiel kann die HTTP als Dienst läuft auf Port 80.

Jetzt können viele Menschen fordern den Service und eine Verbindung vom Client-Server hergestellt hat. Es wird eine Menge von Verbindungen sein. Jede Verbindung eines Clients darstellen. Um jede Verbindung aufrecht zu erhalten, erstellt der Server einen Socket pro Verbindung seines Kunden aufrecht zu erhalten.

Es scheint eine Menge Antworten mit der Verbindung zwischen 2 PC's..which gleich Steckdose zu sein ich denke absolut falsch ist. Eine Buchse ist immer die Endpunkt auf 1 PC, die nicht angeschlossen werden oder kann - sicherlich haben wir alle verwendeten Hörer oder UDP-Sockets * an einem gewissen Punkt. Der wichtige Teil ist, dass es adressierbar und aktiv. eine Nachricht an 1.1.1.1:1234 Senden ist die Arbeit nicht wahrscheinlich, da es keine Buchse für diesen Endpunkt.

definiert ist

Sockets sind protokollspezifisch - so die Umsetzung der Einzigartigkeit, dass sowohl TCP / IP und UDP / IP verwendet * (IP address: port), ist anders als zB IPX . (Netzwerk, Knoten, und ... ähem, socket - aber eine andere Steckdose als durch den allgemeinen „socket“ Begriff gemeint ist IPX-Socket-Nummern entsprechen IP-Ports.). Aber sie alle bieten einen einzigartigen adressierbaren Endpunkt.

Da IP das dominierende Protokoll geworden ist, eine Schnittstelle (in der Vernetzung Begriffe) synonym geworden entweder mit einem UDP oder TCP-Port-Nummer -., Die ein Teil der Socket-Adresse ist

  • UDP ist verbindungslosen - keine virtuelle Verbindung zwischen den zwei Endpunkten Bedeutung ist je geschaffen wurden. Allerdings verweisen wir noch auf UDP-Sockets als Endpunkt. Die API-Funktionen machen deutlich, dass beide sind nur verschiedene Arten von Steckdosen - SOCK_DGRAM UDP ist (nur eine Nachricht zu senden) und SOCK_STREAM ist TCP (eine virtuelle Verbindung erstellen)

  • .
  • Technisch hält die IP-Header die IP-Adresse und das Protokoll auf IP (UDP oder TCP) hält die Portnummer. Dies ermöglicht es, andere Protokolle (zB. ICMP , die keine Portnummern haben , aber tun müssen IP-Adressierungsinformationen).

Kurze kurze Antwort.

A Port kann als interne Adresse beschrieben in einem Host, der ein Programm oder Prozess identifiziert.

Buchse kann als Programmierschnittstelle beschrieben ein Programm ermöglicht mit anderen Programmen oder Prozessen zu kommunizieren, im Internet oder vor Ort.

Sie sind Begriffe aus zwei verschiedenen Bereichen: ‚Hafen‘ ist ein Konzept von TCP / IP-Netzwerk, ‚Socket‘ ist eine API (Programmierung) Sache. A ‚socket‘ wird (in Code) durch einen Port und einen Hostnamen oder Netzwerkadapter zu nehmen und sie in eine Datenstruktur kombiniert, die Sie senden oder Empfangen von Daten verwenden können.

die ausgezeichneten Nach der Lektüre up-gestimmt Antworten, fand ich, dass der folgende Punkt benötigte Schwerpunkt für mich, ein Neuling Programmierung Netzwerk:

TCP-IP-Verbindungen sind bidirektional Wege einer Adresse verbinden: Port-Kombination mit einer anderen Adresse: Port-Kombination. Deshalb, wenn Sie eine Verbindung von Ihrem lokalen Rechner zu einem Port auf einem Remote-Server (zB www.google.com:80) öffnen, werden Sie auch eine neue Portnummer auf Ihrem Rechner mit der Verbindung zuordnet, damit der Server senden Dinge zurück zu Ihnen, (zB 127.0.0.1:65234). Es kann hilfreich sein netstat verwendet an Ihrem Gerät Verbindungen aussehen:

> netstat -nWp tcp (on OS X)
Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)    
tcp4       0      0  192.168.0.6.49871      17.172.232.57.5223     ESTABLISHED
...

Eine Socket-Adresse ist eine IP-Adresse und Port-Nummer

123.132.213.231         # IP address
               :1234    # port number
123.132.213.231:1234    # socket address

Eine Verbindung tritt auf, wenn zwei Buchsen miteinander verbunden sind.

Ein Socket ist eine spezielle Art von Datei-Handle, die von einem Prozess verwendet wird, Netzwerkdienste von dem Betriebssystem anzufordern. Ein Socket-Adresse ist die dreifache: {Protokoll, local-Adresse, local-Prozess} wo der lokale Prozess durch eine Portnummer identifiziert wird.

In der TCP / IP-Suite, zum Beispiel:

{tcp, 193.44.234.3, 12345}

Ein Gespräch ist die Kommunikationsverbindung zwischen zwei Prozessen somit eine Verbindung zwischen zwei darstellt. Eine Assoziation ist das 5-Tupel, die die beiden Prozesse vollständig spezifiziert, die eine Verbindung umfassen: {Protokoll, local-Adresse, local-Prozess, Fremd Adresse, Fremd Prozess}

In der TCP / IP-Suite, zum Beispiel:

{tcp, 193.44.234.3, 1500, 193.44.234.5, 21}

könnte eine gültige Assoziation sein.

Eine halbe Vereinigung ist entweder: {Protokoll, local-Adresse, local-Prozess}

oder

{Protokoll, Fremd Adresse, Fremd Prozess}

, die jeweils die Hälfte einer Verbindung an.

Der Halb Verband wird auch eine Steckdose oder eine Transportadresse. Das heißt, eine Buchse ist ein Endpunkt für die Kommunikation, die in einem Netzwerk mit dem Namen und angesprochen werden kann. Die Socket-Schnittstelle ist einer von mehreren Anwendungsprogrammierschnittstellen (APIs) an die Kommunikationsprotokolle. Entwickelt, um eine generische Kommunikation Programmierschnittstelle zu sein, es wurde zuerst von dem 4.2BSD UNIX-System eingeführt. Obwohl es nicht standardisiert, es war ein De-facto-Industriestandard geworden.

Der Hafen war der einfachste Teil, es ist nur eine eindeutige Kennung für eine Steckdose. Ein Socket ist etwas Prozesse können Verbindungen aufzubauen nutzen und miteinander zu kommunizieren. Hohe Jeff hatte eine große Telefon Analogie, die nicht perfekt war, so habe ich beschlossen, es zu beheben:

  • ip und port ~ Telefonnummer
  • Buchse ~ Telefongerät
  • Verbindung ~ Telefonanruf
  • Herstellen einer Verbindung ~ Anrufen einer Nummer
  • Prozesse, Remote-Anwendungen ~ Menschen
  • Nachrichten ~ Sprache

Ein Socket ist eine Struktur, in der Software. Es ist mehr oder weniger eine Datei; es hat Operationen wie Lesen und Schreiben. Es ist nicht eine physische Sache; es ist ein Weg für Ihre Software auf physische Dinge zu beziehen.

Ein Port ist ein Gerät artige Sache. Jeder Host besitzt einen oder mehrere Netzwerke (die physikalische sind); ein Host hat auf jedes Netzwerk eine Adresse. Jede Adresse kann Tausende von Ports.

Eine Buchse kann nur einen Port an einer Adresse werden. Die Buchse weist den Port etwa wie ein Gerät für das Dateisystem der Zuweisung I / O. Sobald der Port zugeordnet ist, kann keine andere Buchse an diesen Port angeschlossen werden. Der Port wird freigegeben werden, wenn der Socket geschlossen ist.

Werfen Sie einen Blick auf TCP / IP-Terminologie .

Eine Anwendung besteht aus zwei Prozessen, die über das Netzwerk (Client-Server-Paar) zu kommunizieren. Diese Prozesse Nachrichten senden und empfangen, in der und aus dem Netzwerk über eine Software-Schnittstelle namens Buchse . In Anbetracht der Analogie in dem Buch präsentiert „Computer Networking: Top-Down-Ansatz“. Es ist ein Haus, das mit anderen Haus kommunizieren möchte. Hier Haus ist analog zu einem Prozess und Tür zu einer Steckdose. Sendeprozess übernimmt, dass es eine Infrastruktur auf der anderen Seite der Tür, die die Daten an das Ziel transportieren. Sobald die Nachricht auf der anderen Seite angekommen ist, geht es durch Empfänger Tür (Buchse) in das Haus (Prozess). Diese Illustration aus dem gleichen Buch kann Ihnen helfen:

Sockets sind Teil der Transportschicht, die auf Anwendungen logische Kommunikation liefert. Dies bedeutet, dass beide Hosts aus der Anwendung Sicht sind direkt miteinander verbunden, obwohl es zahlreiche Router und / oder Schalter zwischen ihnen. Somit kann eine Buchse ist keine Verbindung selbst, es ist der Endpunkt der Verbindung. Transportschichtprotokolle werden nur auf Hosts und nicht auf Zwischen Routern implementiert.
Ports bietet mittels interner an eine Maschine Adressierung. Der primäre Zweck es mehr Prozesse zu ermöglichen, Daten über das Netzwerk zu senden und empfangen, ohne andere Prozesse zu stören (ihre Daten). Alle Steckdosen sind mit einer Portnummer versehen. Wenn ein Segment mit einem Host ankommt, prüft die Transportschicht, die die Ziel-Portnummer des Segments. Er leitet dann das Segment mit der entsprechenden Buchse. Diese Aufgabe, die Daten in einem Transportschichtsegment an die richtige Buchse liefert heißt Demultiplexen . Die Daten des Segments wird dann an die Buchse angebracht zu dem Prozess weitergeleitet.

Oracle Java Tutorial :

  

Ein Socket ist ein Endpunkt einer Zwei-Wege-Kommunikationsverbindung zwischen zwei Programmen auf dem Netzwerk ausgeführt werden. Eine Buchse ist an eine Portnummer gebunden, so dass die TCP-Schicht, die Anwendung identifizieren kann, die zu sendenden Daten bestimmt sind, an.

  
    

Port und Buchse kann auf die Bank Branch verglichen werden.

  

Das Gebäude Nummer der „Bank“ ist die IP-Adresse analog. Eine Bank hat bekommt verschiedene Abschnitte wie:

  1. Sparkonto Abteilung
  2. Persönliche Darlehen Abteilung
  3. Baudarlehen Abteilung
  4. Grievance Abteilung

So 1 (Sparkonto Abteilung), 2 (persönliche Kreditabteilung), 3 (Darlehen Abteilung) und 4 (Beschwerde-Abteilung) sind Häfen.

Nun lassen Sie uns sagen, Sie gehen, um ein Sparkonto zu öffnen, gehen Sie an die Bank (IP-Adresse), dann gehen Sie zu „Spar Abteilung Konto“ (Port-Nummer 1), dann treffen Sie einen der Mitarbeiter, die unter " Sparkonto Abteilung“. Lassen Sie uns ihn zum Öffnen Konto SAVINGACCOUNT_EMPLOYEE1 nennen.

SAVINGACCOUNT_EMPLOYEE1 ist Ihr Socket-Deskriptor, so kann es sein, SAVINGACCOUNT_EMPLOYEE1 zu SAVINGACCOUNT_EMPLOYEEN. Diese sind alle Socket-Deskriptoren.

Ebenso werden andere Abteilungen werden mit employess unter ihnen zu arbeiten und sie sind analog zu stecken.

Dies sind grundlegende Netzwerkkonzepte, damit ich sie in einem einfachen und doch umfassende Weise in Details zu verstehen, erklären.

  • A Buchse ist wie ein Telefon (d.h. Endgerät für die Kommunikation zu beenden)
  • IP ist wie Ihre Telefonnummer (d-Adresse für Ihre Buchse)
  • Port ist wie die Person, die Sie sprechen möchten (das heißt der Service, den Sie von dieser Adresse bestellen möchten)
  • A Buchse ein Client oder ein Server-Socket sein kann (das heißt in einem Unternehmen des Telefon des Kunden-Supports ist ein Server, sondern ein Telefon in Ihrem Hause ist vor allem ein Client)

So eine Steckdose in der Vernetzung ist eine virtuelle an ein Paar gebunden Kommunikationsgerät (ip, port) = (Adresse, Service).

Hinweis:

  • Eine Maschine, ein Computer, ein Host, ein Handy oder einen PC können mehrere Adressen, mehrere offene Ports haben und somit mehrere Steckdosen. Wie in einem Büro können Sie mehrere Telefone mit mehreren Telefonnummern und mehr Menschen zu sprechen haben.
  • Die Existenz eines offenen / aktiv-Port erforderlich, dass Sie eine Steckdose an ihn gebunden haben muss, weil es die Dose ist, dass der Port zugänglich macht. Sie können jedoch nicht genutzte Ports für den Augenblick.
  • Beachten Sie auch, in einem Server-Socket Sie es (ein Hafen, eine bestimmte Adresse einer Maschine) oder binden, können (ein Port, alle Adressen einer Maschine), wie im Telefon können Sie viele Telefonleitungen verbinden (Telefon Zahlen) an ein Telefon oder eine bestimmte Telefonleitung an ein Telefon und immer noch können Sie eine Person durch alle diese Telefonleitungen oder durch eine spezielle Telefonleitung erreichen.
  • Sie können nicht zuordnen (binden) eine Buchse mit zwei Anschlüssen, wie im Telefon in der Regel kann man nicht immer haben zwei Menschen das gleiche Telefon zur gleichen Zeit verwenden.
  • Erweitert: auf der gleichen Maschine, die Sie nicht zwei Buchsen mit gleichen Typs (Client oder Server) und denselben Port und IP haben. Wenn Sie jedoch ein Kunde sind, können Sie zwei Verbindungen öffnen, mit zwei Steckdosen, an einen Server, weil der lokale Port in jeder dieser Buchsen des Kunden ist unterschiedlich)

Hoffe, es löscht Sie bezweifelt

Relative TCP / IP-Terminologie, die ist, was ich davon ausgehen, von der Frage impliziert. In juristischer Hinsicht:

Ein Port ist wie die Telefonnummer eines bestimmten Hauses in einer bestimmten Postleitzahl. Die Postleitzahl der Stadt gedacht als die IP-Adresse der Stadt und alle Häuser in dieser Stadt werden könnte.

A Buchse auf der anderen Seite ist mehr wie ein etablierter Telefonanruf zwischen den Telefonen eines Paares von Häusern, miteinander zu reden. Diese Anrufe können zwischen den Häusern in der gleichen Stadt oder zwei Häuser in verschiedenen Städten eingerichtet werden. Es ist, dass temporärer etablierte Weg zwischen dem Paar von Telefonen miteinander zu reden, dass die Steckdose ist.

Ein Socket ist ein Kommunikationsendpunkt. Eine Buchse ist nicht direkt mit der TCP / IP-Protokollfamilie verwendet, kann es mit jedem Protokoll Ihres System unterstützt werden. Der C-Socket-API erwartet, dass Sie zunächst aus dem System ein leeres Buchse Objekt erhalten, die man dann entweder an einer lokalen Socket-Adresse binden kann (direkt ankommenden Verkehr für verbindungslose Protokolle abrufen oder für verbindungsorientierte Protokolle eingehende Verbindungsanforderungen zu akzeptieren) oder dass Sie an einen Remote-Socket-Adresse (für beide Arten von Protokoll) verbinden. Sie können sogar beides tun, wenn Sie beide steuern wollen, die lokale Socket-Adresse ein Socket gebunden ist, und die Remote-Buchse Adresse eine Steckdose angeschlossen ist. Für verbindungslose Protokolle eine Steckdose verbindet, ist auch optional, aber wenn Sie das nicht tun, werden Sie müssen auch mit jedem Paket die Zieladresse übergeben Sie über die Socket wie senden möchten, wie sonst wäre die Steckdose wissen, wo senden diese Daten an? Vorteil ist, dass Sie eine einzelne Steckdose verwenden können Pakete an verschiedene Socket-Adressen zu senden. Sobald Sie Ihre Buchse konfiguriert und vielleicht sogar verbunden ist, halten es für eine bidirektionale Verbindungsleitung sein. Sie können es verwenden, um Daten zu einem gewissen Ziel passieren und einig Ziel kann es verwenden, um Daten an Sie weiter zurück. Was Sie an eine Steckdose schreiben ist aussenden und was empfangen wurde, ist zum Lesen zur Verfügung.

Ports auf der anderen Seite ist etwas, das nur bestimmte Protokolle der TCP / IP-Protokollstapel haben. TCP und UDP-Pakete haben Ports. Ein Port ist nur eine einfache Zahl. Die Kombination von Quellport und Zielport identifizieren, einen Kommunikationskanal zwischen zwei Hosts. Z.B. Sie können einen Server haben, der sowohl einen einfachen HTTP-Server und einen einfachen FTP-Server sein soll. Wenn jetzt ein Paket für die Adresse des Servers kommt, wie würden Sie wissen es, wenn das ein Paket für den HTTP- oder FTP-Server ist? Nun wird es wissen, so wie der HTTP-Server auf Port 80 und dem FTP-Server auf Port 21 laufen wird, so dass, wenn das Paket mit einem Ziel-Port ankommt, 80, ist es für den HTTP-Server und nicht für den FTP-Server. Auch hat das Paket eine Quellport, da ohne eine solche Quellport, ein Server nur eine Verbindung zu einer IP-Adresse zu einem Zeitpunkt haben könnte. Der Quell-Port ermöglicht es, einen Server ansonsten identischen Verbindungen zu unterscheiden: sie alle das gleiche Ziel-Port haben, z.B. Port 80, die gleiche Ziel-IP, immer die gleiche Server-Adresse und der gleiche Quell-IP, da sie alle von demselben Client kommen, aber da sie eine andere Quellports haben, kann der Server um sie voneinander zu unterscheiden. Und wenn der Server Antworten sendet, wird sie so in den Hafen die Anfrage kam, diese Weise kann der Kunde auch unterschiedliche Antworten unterscheiden kann er empfängt.

Ein Socket ist ein Datum-I / O-Mechanismus. Ein Port ist ein Vertrag Konzept eines Kommunikationsprotokolls . Eine Buchse kann, ohne einen Port vorhanden sein. Ein Port kann witout einem bestimmten Sockel vorhanden sind (z.B. wenn mehrere Buchsen auf dem gleichen Port aktiv sind, die für einige Protokolle erlaubt werden kann).

Ein Port verwendet wird, um festzustellen, welche Buchse des Empfänger Strecke sollte das Paket an, mit vielen Protokollen, aber es ist nicht immer erforderlich und die Aufnahmebuchse Auswahl kann durch andere Mittel erfolgen - ein Port ist vollständig ein Werkzeug, durch die verwendete Protokollhandler in dem Netzwerk-Subsystem. z.B. wenn ein Protokoll keinen Port verwenden, Pakete an alle hören Steckdosen oder jede Steckdose gehen kann.

In einem weiten Sinne, Socket - ist nur, dass eine Steckdose, genau wie Ihre elektrischen, Kabel oder Telefonbuchse. Ein Punkt, an die „erforderliche Sachen“ (Power, Signal, Information) aus gehen und kommen aus. Es verbirgt sich eine Menge detaillierte Sachen, die nicht für die Verwendung der „erforderlichen Sachen“ erforderlich ist. In der Software-Sprachgebrauch, bietet es eine generische Art und Weise einen Mechanismus für die Kommunikation zwischen zwei Einheiten zu definieren (die Einheiten könnten alles sein - zwei Anwendungen, zwei physikalisch getrennte Geräte, Benutzer und Kernel Raum innerhalb eines OS, usw.)

Ein Port ist ein Endpunkt-Diskriminator. Es unterscheidet einen Endpunkt von einem anderen. Bei Netzwerkebene unterscheidet es eine Anwendung von einem anderen, so dass der Netzwerk-Stack auf Informationen an der entsprechenden Anwendung gelangen kann.

Bereits theoretische Antworten wurden auf diese Frage gegeben. Ich möchte ein Beispiel aus der Praxis auf diese Frage geben, die Ihr Verständnis über Sockel und Port löschen werden.

Ich fand es hier

  

In diesem Beispiel werden Sie durch den Prozess geht auf eine Website zu verbinden, wie Wiley. Sie würden Ihren Web-Browser (wie Mozilla Firefox) öffnen und www.wiley.com in die Adressleiste eingeben. Ihr Web-Browser verwendet eine Domain Name System (DNS) -Server den Namen www.wiley.com nachzuschlagen seine IP-Adresse zu identifizieren ist. In diesem Beispiel ist die Adresse 192.0.2.100.

     

Firefox macht eine Verbindung mit dem 192.0.2.100 Adresse und zum Hafen   wo die Anwendungsschicht-Webserver arbeitet. Firefox kennt   welchen Port zu erwarten, weil es ein bekannter Port ist. Die gut bekannten   Port für einen Webserver ist TCP-Port 80.

     

Das Ziel Buchse, die Firefox zu verbinden versucht wird geschrieben als   Sockel: Port oder in diesem Beispiel 192.0.2.100:80. Dies ist der Server   Seite des Verbindungs, aber der Server muss wissen, wo die schicken   Web-Seite wollen Sie in Mozilla Firefox sehen, so haben Sie eine Buchse für   die Client-Seite der Verbindung auch.

     

Die Client-Seite Verbindung von Ihrer IP-Adresse aus, wie   192.168.1.25, und eine zufällig dynamische Portnummer ausgewählt. Die Socket-Verbindung mit Firefox sieht aus wie 192.168.1.25:49175. da Web   Server arbeiten auf TCP-Port 80, die beide diese Buchsen TCP-Sockets sind,   während, wenn Sie wurden mit einem Server verbinden auf einem UDP-Port betrieben wird,   sowohl das Server- und Client-Sockets würde UDP-Sockets sein.

Sockel ist eine Abstraktion von Kernel Benutzeranwendungen für Daten-I / O zur Verfügung gestellt. Ein Socket-Typ durch das Protokoll seiner Handhabung definiert ist, eine IPC-Kommunikation usw. Also, wenn jemand schafft einen TCP-Socket er Manipulationen wie das Lesen von Daten an Buchse und Schreiben von Daten, um es mit einfachen Methoden und das untere Ebene Protokoll Handling wie TCP Umwandlungen tun können und Weiterleiten von Paketen Level-Netzwerkprotokolle zu senken, ist durch die bestimmte Socket-Implementierung im Kernel getan. Der Vorteil besteht darin, dass Benutzer nicht über den Umgang mit protokollspezifischen nitigrities kümmern müssen und sollen nur Daten wie ein normaler Puffer an Buchse lesen und schreiben. Dasselbe ist bei IPC wahr, Benutzer gerade liest und Daten-Buchse und Kernel schreibt behandelt alle untere Ebene Angaben über die Art der Socket-Basis erstellt.

Port zusammen mit IP ist eine Adresse an die Steckdose wie die Bereitstellung, obwohl es nicht notwendig, aber es hilft bei der Netzwerkkommunikation.

Ein einzeln Port kann eine oder mehr Steckdosen mit unterschiedlicher externen IP ist wie eine mehrere Steckdose angeschlossen hat.

  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

Eine Buchse ist im Grunde ein Endpunkt für die Netzwerkkommunikation, bestehend aus mindestens einer IP-Adresse und ein Port. In Java / C # Socket ist eine höhere Umsetzung einer Seite einer Zwei-Wege-Verbindung.

, auch eine Definition in dem Java-Dokumentation .

Port:

Ein Port kann auf einen physikalischen Verbindungspunkt beziehen für Peripheriegeräte wie serielle, parallele und USB-Anschlüsse.  Der Begriff Port bezieht sich auch auf bestimmte Ethernet-Anschlussstellen, s UCH wie die auf einem Hub, Switch oder Router.

Sockel:

A Buchse stellt eine einzige Verbindung zwischen zwei Netzwerkanwendungen.  Diese beiden Anwendungen nominell auf verschiedenen Rechnern laufen,  aber Steckdosen können auch für die Kommunikation zwischen Prozessen auf einem einzelnen Computer verwendet werden. Anwendungen können für die Kommunikation miteinander mehrere Sockets erstellen.  Sockets ist bidirektional, was bedeutet, dass auf jeder Seite der Verbindung ist in der Lage sowohl das Senden und Empfangen von Daten.

Ich weiß, dass es viele Erklärungen. Aber es ist ein einfacher Weg, um mit praktischem Beispiel zu verstehen. Wir alle können an HTTP-Port 80, schließen aber bedeutet es nur ein Benutzer zu diesem Port zu einem Zeitpunkt verbinden kann ?. Die Antwort ist natürlich ‚Nein‘. Mehrere Benutzer für mehrere Zwecke können 80 HTTP-Port zuzugreifen, aber sie immer noch die richtige Antwort sie warten, von dem Server, nicht wahr ?. Jetzt denken sie für eine Minute, wie ?.    Ja, Sie sind richtig, seine IP-Adresse , die eindeutig verschiedene Benutzer, die Kontakte für verschiedene Zwecke identifiziert. Wenn Sie die bisherigen Antworten gelesen haben würden, bevor hier erreichen, würden Sie wissen, dass die IP-Adresse ein Teil der Informationen, die Buchse besteht. Denken Sie darüber nach, ist es möglich, eine Kommunikation ohne Steckdosen zu haben ?. Die Antwort ist ‚Ja‘, aber Sie können nicht mehr als eine Anwendung in einem Hafen laufen, aber wir wissen, dass wir nicht ein ‚Dump‘ Schalter sind, die nur auf Hardware läuft.

Ein Port bezeichnet einen Kommunikationsendpunkt in der TCP- und UDP-Transporte für das IP-Netzwerk-Protokoll. Ein Socket ist eine Software-Abstraktion für einen Kommunikationsendpunkt üblicherweise in Implementierungen dieser Protokolle (Socket-API) verwendet. Eine alternative Implementierung ist die XTI / TLI-API.

Siehe auch:

Stevens, W. R. 1998, UNIX Network Programming: Netzwerk-APIs: Sockets und XTI; Band 1, Prentice Hall.
Stevens, W. R., 1994, TCP / IP Illustrated, Volume 1:. Die Protokolle, Addison-Wesley

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top