Wie wählt man eine offene Portnummer?

1978
GeneCode

Ich habe easyPHP installiert und einen Port in meiner Firewall geöffnet, damit andere Personen auf meinen Webserver zugreifen können. Der Standardport ist 8888. Ich frage mich jedoch, wie Sie eine Portnummer auswählen. Ist es wirklich mehrdeutig oder gibt es einen "bevorzugten" Bereich der Portnummer?

7
Im Allgemeinen ist jeder Hafen in Ordnung. Der Grund, warum viele Apps Ports wie 8888 oder 8080 verwenden, sind Ports, die nicht auf Admin-Ebene sind, sodass viele Endbenutzer ohne Administratorrechte einen Server starten können. Dies funktioniert auch für professionelle Webanwendungen. Was bei diesen Anwendungen jedoch häufig passiert, verbindet ein Front-End-Webproxy 8080 oder 8888 mit Port 80. Im Allgemeinen sollten Sie nur Port 80 verwenden, um den Zugriff zu erleichtern. Alles andere würde etwas wie "123.456.789.0: 8080" oder "Beispiel: 8080" erfordern. JakeGould vor 6 Jahren 1
@ JakeGould Danke für deinen Kommentar, es hat mir wirklich geholfen. GeneCode vor 6 Jahren 0
Möglicherweise verwandte Frage: https://stackoverflow.com/questions/10476987/best-tcp-port-number-range-for-internal- applikations glenneroo vor 6 Jahren 0

1 Antwort auf die Frage

23
davidgo

Eine Portnummer ist eine vorzeichenlose 16-Bit-Ganzzahl und reicht von 0 bis 65535 (obwohl 0 nicht für TCP verwendet werden kann; sie hat eine besondere Bedeutung für UDP).

Sie können eine beliebige Portnummer im Bereich verwenden, es gibt jedoch einige Regeln:

  1. (Mindestens auf Unix-basierten Systemen) kann nur Root an Ports unter 1024 binden.
  2. Idealerweise möchten Sie keinen Port, der normalerweise mit einem anderen allgemeinen Dienst verbunden ist, da dies bei einigen Firewalls Probleme verursachen kann.
  3. Erweiterung um (2) oben - Zumindest auf Linux-Systemen gibt es eine Datei /etc/servicesmit einer Liste allgemeiner Dienste - Sie können diese als Anleitung verwenden.

Der "ideale" Port zum Ausführen eines HTTP-Dienstes ist Port 80, und der ideale Port für HTTPS ist 443, da diese Ports ihren jeweiligen Diensten zugeordnet sind. Wenn dies nicht praktikabel ist (und dies oftmals nicht ist - einige Router sind zu dumm, um ein Webinterface und Portweiterleitung an demselben Port extern auszuführen), ist es üblich, einen "themenorientierten" Port zu wählen - Port 8080 ist ziemlich üblich ist Port 8000.

Klare und prägnante Antwort. Vielen Dank. GeneCode vor 6 Jahren 0
Bei modernen Windows-Versionen müssen Sie über Administratorrechte verfügen, um auch Ports unter 1024 zu binden. enkryptor vor 6 Jahren 1
@enkryptor: Welche Versionen gibt es? Ist das irgendwo dokumentiert? grawity vor 6 Jahren 0
Ich glaube, es ist Windows 7 und später. Sie können auch einem Nicht-Admin-Benutzer eine Berechtigung für eine bestimmte URL über `netsh http add urlacl` erteilen enkryptor vor 6 Jahren 0
@enkryptor Ich habe nginx auf Port 80, nicht-localhost ip, ausgeführt und ich bin kein Administrator in diesem System. Braiam vor 6 Jahren 0
@Braiam gut für dich enkryptor vor 6 Jahren 0
@enkryptor: Dieser Befehl gilt nur, wenn der Port 80 von http.sys (IIS et al.) verwendet wird. Es funktioniert in Bezug auf die Reservierung von HTTP-Pfaden, nicht auf TCP-Ports. grawity vor 6 Jahren 0
@grawity korrekt, es ist nur für http, deshalb beginnt es mit "netsh http" enkryptor vor 6 Jahren 0
Die Windows "Services" -Datei lebt witzigerweise unter "% SystemRoot% \ System32 \ drivers \ etc \ services". Es gibt wahrscheinlich ein interessantes WinSock & BSD-Erbe. Die maßgebliche Quelle ist jedoch die [IANA Port Number Registry] (https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml). Bob vor 6 Jahren 0
@Bob Microsofts ursprünglicher TCP / IP-Stack war ein mehr oder weniger direkter Port der BSD-Sockets der frühen 1990er Jahre. Michael Hampton vor 6 Jahren 0