Um Ports und Netzwerkprotokolle geht es in der einhunderteinundvierzigsten Episode des Anwendungsentwickler-Podcasts.
Inhalt
Mit dem Kommandozeilentool ping kann getestet werden, ob die Kommunikation zum Ziel über das Netzwerk grundsätzlich möglich ist. Wenn ja, kann man die Adresse dann z.B. auch im Browser aufrufen.
Ports
Die grundsätzliche Kommunikation steht nun also, aber woher weiß ein Server, welchen Dienst er einem Client anbieten soll (z.B. Mail oder WWW oder eben auf den "Ping" antworten)?
Die Lösung sind Ports. Für jeden bekannten Dienst gibt es einen einzelnen Port, der einfach an die IP-Adresse bzw. an den DNS-Namen angehängt werden kann, z.B. google.de:80.
Allgemein bekannte Dienste haben verbindlich festgelegte, so genannte well-known Ports bis 1024. Beispiele: HTTP 80, SMTP 25, SSH 22 oder Doom 666.
Übrigens: ping benutzt das Protokoll ICMP, das Bestandteil von IP ist und keinen eigenen Port verwendet.
Unter Windows gibt es in der Datei C:\Windows\System32\drivers\etc\services eine Liste dieser bekannten Ports.
# Copyright (c) 1993-2004 Microsoft Corp.
#
# This file contains port numbers for well-known services defined by IANA
#
# Format:
#
# / [aliases...] [#]
#
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users #Active users
systat 11/udp users #Active users
daytime 13/tcp
daytime 13/udp
qotd 17/tcp quote #Quote of the day
qotd 17/udp quote #Quote of the day
chargen 19/tcp ttytst source #Character generator
chargen 19/udp ttytst source #Character generator
ftp-data 20/tcp #FTP, data
ftp 21/tcp #FTP. control
ssh 22/tcp #SSH Remote Login Protocol
telnet 23/tcp
smtp 25/tcp mail #Simple Mail Transfer Protocol
...
Protokolle
Die Kommunikation steht also jetzt, aber was wird da nun konkret übertragen?
Protokoll: Eine Abfolge von definierten Befehlen an den Server und dessen passenden Antworten.
Leicht verständlich ist das Protokoll SMTP (Simple Mail Transfer Protocol) zum Versenden von E-Mails. Beispiel: HELO, MAIL FROM, RCPT TO, DATA, Subject: Test, .
Mit Hilfe des Kommandozeilenwerkzeugs telnet kann man sich gezielt mit einem Port des Zielservers verbinden und die passenden Befehle zum jeweiligen Dienst ausführen.
SMTP verwendet keinerlei Authentifizierung. Daher ist Spam so ein Problem.
HTTP (Hypertext Transfer Protocol) verwendet Port 80. Bei HTTP werden andere Befehle verwendet, wichtig ist insb. das GET, mit dem man Ressourcen abrufen kann (also insb. Websites).
Als Beispiel, wie wichtig dabei die Verschlüsselung (HTTPS anstatt HTTP) ist, kann man ein kleines Webformular erstellen, das einen Benutzernamen und ein "geschütztes" Passwort abfragt. Schneidet man den Netzwerkverkehr mit, kann man Benutzernamen und Passwort im Klartext mitlesen, auch wenn im Formular im Passwortfeld nur Sternchen zu sehen sind.
Literaturempfehlungen
Im guten alten IT-Handbuch für Fachinformatiker* werden in Kapitel 4 Netzwerkgrundlagen die meisten hier genannten Inhalte ausführlich erläutert. In meinem Buchclub gehe ich auf die Inhalte auch noch einmal im Detail ein.
*
Links
Permalink zu dieser Podcast-Episode
RSS-Feed des Podcasts
Port (Protokoll)
Internet Control Message Protocol
Netzwerkprotokoll
Simple Mail Transfer Protocol
Hypertext Transfer Protocol