Was sind Ports und Protokolle wirklich?

11

Ich höre Leute über Ports und Protokolle sprechen (in Bezug auf Computernetzwerke) und sie liefern oft Analogien für sie (zum Beispiel: "Ein Port ist einem Versandhafen sehr ähnlich, er sendet und empfängt Daten wie ein Versandhafen sendet und empfängt Waren von anderen Häfen ") und solche Sachen.

Ich verstehe, was das alles bedeutet, aber nur auf einer sehr künstlichen Ebene. Grundsätzlich weiß ich, was ein Port ist und ich verstehe, was Protokolle sind, aber was sind sie wirklich?

Sind diese Ports physische Objekte? Sind sie in einen Teil meines Computers eingebaut? Wie viele Ports gibt es? Kann ich die Anzahl der Ports erhöhen oder verringern? Sind sie überhaupt etwas Körperliches? Oder in Code geschrieben? Wo ist dieser Code? Das Betriebssystem? Was ist wirklich ein Hafen?

Was sind Protokolle? Ich würde mir vorstellen, dass es sich um eine Art Code handelt. Können Sie Ihr eigenes Protokoll erstellen? Wie kann ein bestimmter Port ein bestimmtes Protokoll ausführen? In welcher Sprache erstellen Sie ein Protokoll? Wie definieren oder erfinden Sie ein neues Protokoll?

Bob
quelle

Antworten:

9

Nach der Antwort von Hello71 kann es hilfreich sein, einen Port zu visualisieren, indem Sie über die Struktur einer Adresse in einem Paket nachdenken. Ein Paket ist eine Dateneinheit, die in einem Netzwerk übertragen wird. TCP ist ein Beispiel für ein Transportschichtprotokoll, das Ports verwendet und üblicherweise über IP verwendet wird.

IP hat also zwei Adressierungskomponenten - die Quell-IP und die Ziel-IP. TCP ergänzt dies durch die Verwendung eines Quellports und eines Zielports. Es sind die Ports, die es dem empfangenden Computer ermöglichen, Datenverkehr zu unterscheiden, der für dieselbe IP-Adresse bestimmt ist. Wenn Sie also einen Server haben, der sowohl Webanforderungen als auch E-Mails unter einer einzigen IP-Adresse empfängt, müssen Sie festlegen, welche Anwendung die Daten empfangen soll - der E-Mail-Dienst oder der Webdienst. Sie sehen also möglicherweise so aus, wenn ein einzelner Benutzer eine Webanforderung und eine E-Mail-Anforderung an denselben Server ausführen soll:

Source IP    Source Port       Dest IP       Dest Port       Service
10.1.1.10    23434             192.168.1.1   80              web
10.1.1.10    34343             192.168.1.1   25              incoming email

Der Webdienst besitzt Port 80 und der E-Mail-Dienst besitzt Port 25 - sie "lauschen" ihren jeweiligen Ports, wodurch der Datenverkehr am richtigen Ort landet.

Der Quellport ist "kurzlebig" - das heißt, er besteht zum Zeitpunkt des Sendens des Pakets. Es dient jedoch immer noch einem nützlichen Zweck. Es ermöglicht beiden Enden der Verbindung, separate Gespräche zu verfolgen. Überlegen Sie, ob unser Benutzer zwei gleichzeitige Webanfragen gesendet hat:

Source IP    Source Port       Dest IP       Dest Port       Service
10.1.1.10    23232             192.168.1.1   80              web request 1
10.1.1.10    23234             192.168.1.1   80              web request 2

Auf diese Weise wird dem Webdienst mitgeteilt, dass es sich um separate Anforderungen handelt. Außerdem wird der Rückverkehr vom Webserver - den Webseiten - an die jeweiligen Quellports zurückgesendet, sodass der Browser erkennen kann, auf welche Anforderung der Server antwortet.

Beachten Sie, dass sich dies alles auf Portnummern bezieht. Aus TCP / IP-Sicht können die tatsächlichen Daten, die über diese Ports verschoben werden, beliebig sein. Es ist egal oder hat keine Kenntnis von Anwendungen. Wenn Sie also Web-Verkehr auf Port 25 und E-Mail auf Port 80 hätten, wäre dies nicht klüger.

Es ist Sache der sendenden und empfangenden Anwendung, sicherzustellen, dass die Daten die richtige Struktur haben. Hier kommen Anwendungsprotokolle ins Spiel. HTTP ist ein Beispiel für ein Anwendungsprotokoll, mit dem Webbrowser mit Webservern kommunizieren. Es ist ein genau definiertes Protokoll, das sicherstellt, dass der Browser Anforderungen an jeden Webserver sendet und dass der Webserver dies versteht und vernünftig reagiert. Was jedoch nicht in der Definition enthalten ist, ist die Frage, wie Pakete von A nach B gelangen - das liegt in der Verantwortung der vorhergehenden Schichten - der Transport-, Internet- und Verbindungsschichten.

Paul
quelle
Vielen Dank! Dies war genau die Antwort, nach der ich gesucht habe, danke für Ihre Hilfe!
Bob
3

Hm. Ich denke, der beste Ausgangspunkt wäre ein Blick auf die IP Suite, auch bekannt als TCP / IP-Modell. (Die anderen Ebenen des OSI-Modells werden der Einfachheit halber ignoriert.)

Im Grunde ist es eine Reihe von Schichten:

Anwendungsschicht - HTTP, FTP, POP, SSH usw.
Transportschicht - TCP, UDP usw.
Internetschicht - IP, ICMP usw.
Verbindungsschicht - Ethernet usw.

Ports werden größtenteils auf der Transportschicht implementiert (Schicht 4 - Ja, die Nummerierung ist korrekt.)

Die Mehrheit der in Betriebssystemen implementierten TCP- und / oder UDP-Stapel verwendet ein Basissystem zum Zuweisen von Ports zu Programmen und zum einfachen Auslösen von Ereignissen in diesen Programmen, wenn Pakete über das Netzwerk eingehen. Jede Implementierung könnte jedoch theoretisch funktionieren. es kann sogar durch hypothetische alternative Stapel in der Wissenschaft erwogen werden.

TCP hat insgesamt 65535 Ports, mit denen jedes Programm tun kann, was es will (obwohl viele Betriebssysteme die Verwendung von Ports unter 1024 einschränken und ihnen einen Ad-hoc-Sonderstatus verleihen). Obwohl es einige begrenzte Listen gibt, gibt es keinen wirklichen Standard für die Definition, wer welchen Port erhält und welcher Port welches Programm ausführt. Ein Port ist also mehr oder weniger eine Zufallszahl, über die verschiedene Implementierungen eines Programms zustimmen, zu kommunizieren. Natürlich versuchen die Entwickler solcher Programme, Ports zu vermeiden, die andere beliebte Programme bereits ausgewählt haben.

Zugegeben, die Ausführung mit TCP ist in keiner Weise erforderlich. Einige Protokolle werden auf der Bare-Internet-Schicht oder sogar der Bare-Link-Schicht ausgeführt, hauptsächlich aus Effizienzgründen oder weil diese Protokolle erfunden wurden, bevor überhaupt TCP oder IP existierten. Wenn Sie dies tun, tauschen Sie natürlich die Einfachheit und die umfassende Fehlerprüfung von Betriebssystem-Netzwerkbibliotheken aus.

Weitere Informationen finden Sie auf den Wikipedia-Seiten zu OSI-Modell, TCP und IP.

Hallo71
quelle
Ich verstehe das alles. Ein Port ist also im Grunde keine physische Sache? Es ist etwas, das programmiert ist? Wo ist der Port auf einem Computer definiert? Und wie werden diese für Protokolle erstellt? Sind die programmiert?
Bob
Nein, ein Port ist in diesem Zusammenhang keine physische Sache (offensichtlich ist ein USB-Port physisch, hat aber nichts mit diesem Thema zu tun). Protokolle werden über RFCs ( en.wikipedia.org/wiki/Request_for_Comments ) definiert und in Code programmiert implementiert.
Paul
Wäre es richtig zu sagen, dass TCP ein Systemprozess ist, der Speicher für das Speichern von von IP eingehenden Daten (oder das Speichern von Daten, die von IP abgerufen werden sollen) reserviert und dass dieser Speicher in "Ports" unterteilt ist. Und dass andere Anwendungen (Prozesse) wie HTTP TCP benachrichtigen können, dass sie bestimmte Ports reservieren möchten (z. B. 80 und 443). Dann wird es TCPs Aufgabe, 1. HTTP zu erlauben, ausgehende Daten zu diesen Speicheradressen hinzuzufügen, und 2. HTTP zu informieren, wenn eingehende Daten zu diesen Speicheradressen hinzugefügt wurden?
Zach Smith
Vielleicht hat Bob zwischen Protokollports und physischen Switch-Ports verwechselt. Der Protokollport-Teil wurde von mehreren gut beantwortet, obwohl keine Quelle vorhanden war. Bei den physischen Ports handelt es sich um Eingangs- und Ausgangsstellen, an denen Kabel angeschlossen sind, die die Übertragung von Netzwerkdaten ermöglichen. Dies kann elektronische Schaltungen, Glasfaserempfänger, Laser und Puffer umfassen. L. Peterson 4. Auflage.
Nassim
3

Obwohl diese Frage bereits als beantwortet markiert wurde, wollte ich einige der zusätzlichen Fragen beantworten, die im OP gestellt wurden.

Sind diese Ports physische Objekte?

Keine Ports sind keine physischen Objekte.

Eine Portnummer ist eine 16-Bit-Ganzzahl ohne Vorzeichen. Dies bedeutet, dass der Bereich der zur Verwendung verfügbaren Ports zwischen 1 und 65535 liegt (Portnummer 0 ist reserviert und kann nicht verwendet werden). Ein Prozess verknüpft seine Eingabe- oder Ausgabekanäle über Internet-Sockets, eine Art Dateideskriptor, mit einem Transportprotokoll, einer Portnummer und einer IP-Adresse. Dieser Vorgang wird als Bindung bezeichnet und ermöglicht das Senden und Empfangen von Daten über das Netzwerk.

Sind sie in einen Teil meines Computers eingebaut? Sind sie überhaupt etwas Körperliches? Oder in Code geschrieben? Wo ist dieser Code? Das Betriebssystem? Was ist wirklich ein Hafen?

Die Netzwerksoftware des Betriebssystems hat die Aufgabe, ausgehende Daten von allen Anwendungsports in das Netzwerk zu übertragen und ankommende Netzwerkpakete an einen Prozess weiterzuleiten, indem die IP-Adresse und die Portnummer des Pakets abgeglichen werden.

Nur ein Prozess darf mit demselben Transportprotokoll an eine bestimmte Kombination aus IP-Adresse und Port gebunden werden. Häufige Anwendungsfehler, manchmal auch als Portkonflikte bezeichnet, treten auf, wenn mehrere Programme versuchen, mit demselben Protokoll an dieselben Portnummern an derselben IP-Adresse zu binden.

Der obige Absatz ist der Schlüssel zum Verständnis, warum Ports / Protokolle im Netzwerk verwendet werden. Wenn wir nicht die Möglichkeit hätten, das Protokoll anzugeben, das Daten über eine vereinbarte Apon-Portnummer überträgt, könnten Sie nicht mehr als eine Sache gleichzeitig ausführen (überprüfen Sie Ihre E-Mails und nutzen Sie das Internet), da dies auf Ihrem Computer der Fall wäre Es gibt keine Möglichkeit, zwischen Daten für Ihren E-Mail-Client und Daten für die Website, die Sie durchsuchen, zu unterscheiden.

Wie viele Ports gibt es?

Portnummern werden auf verschiedene Arten vergeben, basierend auf drei Bereichen:

  1. Bekannte / System-Ports (0-1023) - Diese Reihe von Ports wird von Systemprozessen verwendet, die weit verbreitete Arten von Netzwerkdiensten bereitstellen (HTTP / 80, HTTPS / 443, Telnet / 21, SSH / 22).

  2. Registrierte / Benutzer-Ports (1024-49151) - Der Bereich der Portnummern von 1024 bis 49151 sind die registrierten Ports. Sie werden von IANA auf Antrag einer anfordernden Stelle für einen bestimmten Dienst zugewiesen. (Webmin / 10000, HTTP-Proxy / 8080, Remotedesktopprotokoll / 3389 usw.)

  3. Vergängliche / dynamische / private Ports (49152-65535) - Der Bereich 49152–65535 enthält dynamische oder private Ports, die nicht bei IANA registriert werden können. Dieser Bereich wird für benutzerdefinierte oder temporäre Zwecke und für die automatische Zuweisung von kurzlebigen Ports verwendet.

Kann ich die Anzahl der Ports erhöhen oder verringern?

Um die Anzahl der verfügbaren Ports zu erhöhen, können Sie aufgrund der Mathematik, mit der das Netzwerk funktioniert (binär), keinen Port über 65535 zuweisen. Die Antwort auf diese Frage lautet also "Nein". Sie können die Gesamtzahl der verfügbaren Ports nicht erhöhen Ports über 65535.

Was sind Protokolle?

In der Informatik ist ein Kommunikationsprotokoll ein System digitaler Regeln für den Nachrichtenaustausch innerhalb oder zwischen Computern. Wenn Nachrichten über ein Computernetzwerk ausgetauscht werden, wird das Regelsystem als Netzwerkprotokoll bezeichnet. Ein Protokoll ist im Grunde ein vereinbarter Satz von Anweisungen / Befehlen / Aufrufen, über die zwei vernetzte Geräte kommunizieren können. Denken Sie, wenn wir uns nicht auf Protokolle geeinigt hätten und Webserver nur zufällig Daten an Webbrowser gesendet hätten, mit denen der Browser nicht umgehen konnte? Glücklicherweise haben wir HTTP, das jeder erstellte Webbrowser in die Software integriert hat, damit er mit jedem Webserver kommunizieren kann, der auch dieselbe Sprache spricht (HTTP).

Ich würde mir vorstellen, dass es sich um eine Art Code handelt. Können Sie Ihr eigenes Protokoll erstellen? In welcher Sprache erstellen Sie ein Protokoll?

Ja, Sie können Ihre eigenen Protokolle erstellen. Protokolle werden in einer Vielzahl von Sprachen geschrieben. Ich bin kein Softwareentwickler, aber ich bin mir ziemlich sicher, dass Sie, solange die von Ihnen verwendete Sprache über Bibliotheken verfügt, Software schreiben können, die über TCP / IP kommunizieren kann (es gibt andere Protokollsuiten, aber TCP / IP ist die meiste weit verbreitet) können Sie diese Sprache verwenden, um ein Protokoll zu schreiben. Die Programmiersprache 'C' scheint am häufigsten zum Schreiben von Protokollen verwendet zu werden. Dies liegt an der Tatsache, dass viele der ersten Netzwerkprotokolle in den 1970er Jahren unter UNIX entwickelt wurden und C zufällig die Sprache ist, in der UNIX selbst geschrieben ist.

Wie kann ein bestimmter Port ein bestimmtes Protokoll ausführen?

Dies unterscheidet sich erheblich zwischen den Betriebssystemen. Um beispielsweise die Portnummer zu ändern, auf der das Remotedesktopprotokoll unter Windows ausgeführt wird, müssen Sie die Registrierung bearbeiten. Unter Linux können viele der Netzwerkdienste direkt aus einer .conf-Datei für einen bestimmten Netzwerkdienst konfiguriert werden.

Wie definieren oder erfinden Sie ein neues Protokoll?

Unter https://journal.paul.querna.org/articles/2012/02/22/designing-network-protocols/ finden Sie einen Blogbeitrag von jemandem, der kürzlich ein neues Netzwerkprotokoll entwickelt hat und welche Art von Dingen er tun musste nach dem Weg.

Richie086
quelle