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.
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.
quelle
Obwohl diese Frage bereits als beantwortet markiert wurde, wollte ich einige der zusätzlichen Fragen beantworten, die im OP gestellt wurden.
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.
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.
Portnummern werden auf verschiedene Arten vergeben, basierend auf drei Bereichen:
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).
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.)
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.
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.
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).
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.
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.
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.
quelle