stfischr schrieb:
Könntest du das genauer erklären? HTTP braucht einen Eingangsport 80 und einen Ausgangsport >1000. FTP nimmt Rein 21 und Raus >1000. Wofür ist der dritte zufällige?
Standardports angenommen:
HTTP: Der Client baut von einem zufälligen, unprivilegiertem Port eine Verbindung zu Port 80 des Servers auf. Er stellt eine Anfrage, der Server schickt die Antwort mit den Daten und fertig. Bei jedem weiteren zusätzlichen Client läuft es ebenso.
=⇒ Es wird serverseitig ein Port verwendet, und der ist fix.
FTP: Der Client baut von einem zufälligen, unprivilegiertem Port eine Verbindung zu Port 21 des Servers auf. Wenn der Client nach der Anmeldung irgendwann mal Daten haben möchte, baut der Server von Port 20 zu einem wechselnden, unprivilegiertem Port des Clients eine zweite Verbindung in umgekehrter Richtung auf. Das funktionierte zwar in den 80ern, aber heute nicht mehr, da die meisten Clients hinter NAT-Routern oder Firewalls hocken, nicht von außen erreichbar sind und erst recht keine eingehenden Verbindungen zulassen.
Um das Problem zu umgehen, können sich Client und Server optional darauf einigen, dass die zweite Verbindung nicht mehr vom Server, sondern vom Client aufgebaut wird, wenn beide dies unterstützten und der Client das wünscht. Also baut nun der Client von einem zufälligen, unprivilegierten Port eine Verbindung zu einem wechselnden, unprivilegiertem Port des Servers auf. Da diese zweite Verbindung keine Authentifizierung kennt, muss für jeden weiteren Client ein zusätzlicher Port zur Verfügung stehen.
=⇒ Es werden serverseitig abhängig von der Nutzeranzahl ein Sack voll Ports verwendet, von denen nur einer (21) fix ist. Der Rest ist von Server zu Server unterschiedlich und schlimmstenfalls völlig willkürlich. Abhängig vom Client initiiert der Server außerdem auch noch ausgehende Verbindungen.
Natürlich kann man trotzdem FTP sicher über Firewalls und Router hinweg nutzen, aber es ist komplexer als HTTP.