Programmierung

TCP/IP-Netzwerkprotokolle

Im unserem heutigen Informationszeitalter, in dem Google, Facebook und Skype überall und jederzeit verfügbar sind, wird oft vergessen, dass dies alles auf globalen Netzwerken und vor allem auf eindeutigen Netzwerkprotokollen beruht.

Allgemein formuliert ist ein Netzwerkprotokoll:

“Eine exakte Vereinbarung (Protokoll), nach der Daten zwischen Computern bzw. Prozessen ausgetauscht werden, die durch ein Netz miteinander verbunden sind.”

Grundlage für die unterschiedlichen Netzwerkprotokolle, ist das so genannte OSI-Schichtenmodell, das in der nächsten Tabelle dargestellt wird und am besten von unten nach oben gelesen wird.

OSI-Schicht OSI-Schicht-Name TCP/IP-Schicht Beispiel
7 Anwendungen Anwendungen HTTP, FTP, SMTP, POP, Telnet, OPC UA
6 Darstellung (=OSI 5–7)
5 Sitzung SOCKS
4 Transport Transport TCP, UDP, SCTP
3 Vermittlung Internet IP (IPv4,IPv6)
2 Sicherung Netzzugang Ethernet, Token Bus, Token Ring, FDDI
1 Bitübertragung (=OSI 1–2)

Das Internetprotokoll oder besser gesagt, die gesamte Internetprotokollfamilie ist hierbei eine spezielle Ansammlung von ca. 500 Netzwerkprotokollen, die auf Basis des OSI-Schichtenmodell, die Basis für die Netzkommunikation des Internet darstellen.
Die Aufgabe des TCP/IP-Referenzmodell ist dabei speziell, einen Datenaustausch über die Grenzen des lokalen Netzwerkes hinaus zu ermöglichen (Internetworking). Es wird dabei aber weder der Zugriff auf ein Übertragungsmedium noch die Datenübertragungstechnik definiert. Vielmehr sind die Internet-Protokolle dafür zuständig, Datenpakete über mehrere Punkt-zu-Punkt-Verbindungen (Hops) weiterzuvermitteln und auf dieser Basis Verbindungen zwischen Netzwerkteilnehmern über mehrere Hops herzustellen.
Für jedes einzelne TCP/IP-Protokoll wurde ein Request for Comments (kurz RFC) festgelegt. Ein RFC beinhaltet eine Reihe von technischen und organisatorischen Dokumenten, des jeweiligen zu beschreibenden Netzwerk-Protokolls.

Wichtige TCP/IP-Protokolle sind unter anderem:

  • RFC 821 (SMTP)
  • RFC 854 (Telnet)
  • RFC 868 (NTP)
  • RFC 959 (FTP)
  • RFC 1939 (POP3)
  • RFC 1945 (HTTP 1.0)
  • RFC 2616 (HTTP 1.1)
  • RFC 2818 (HTTPS)
  • RFC 2821 (SMTP)
  • RFC 3501 (IMAP 4)
  • RFC 4511 (LDAP)

Durch den Einsatz von TCP/IP-Verbindungen, können Verbindungen zu einem Host aufgebaut werden. Der Host kann entweder als IP-Adresse oder als Name angegeben werden. Bei der Verwendung eines Namens wird die IP-Adresse von einem DNS-Server bereitgestellt.
Der Austausch von Nachrichten erfordert dabei häufig ein gleichzeitiges Zusammenspiel verschiedener TCP/IP-Protokolle. Den einzelnen TCP/IP-Protokollen werden daher unterschiedliche Ports zugeordnet.

TCP/IP Protokoll verwendeter Port
FTP 21
TELNET 23
SMTP 25
HTTP 80
HTTPS 443
POP3 110

Im RFC werden vor allem Standardkommunikationskommandos definiert, die von einem Client oder Server, der ein TCP/IP-Protokoll verwendet, verarbeitet werden sollten.

Hier z.B. eine Tabelle der Kommandos, die vom RFC für das TCP/IP-Protokoll POP3 festgelegt wurden:

Kommando Beschreibung
USER xxx wählt den Benutzernamen bzw. das Benutzerkonto auf dem E-Mail-Server.
PASS xxx übergibt das Passwort in Klartext.
STAT liefert den Status der Mailbox, u.a. die Anzahl aller E-Mails im Postfach und deren Gesamtgröße (in Byte).
LIST (n) liefert die Anzahl und die Größe der (n-ten) E-Mail(s).
RETR n holt die n-te E-Mail vom E-Mail-Server.
DELE n löscht die n-te E-Mail am E-Mail-Server.
NOOP keine Funktion, der Server antwortet mit +OK.
RSET setzt alle DELE-Kommandos zurück.
QUIT beendet die aktuelle POP3-Sitzung und führt alle DELE-Kommandos durch.
APOP sichere Anmeldung, s.u.
TOP n x ruft den Header und die ersten x Zeilen der n-ten Mail ab.
UIDL n zeigt die eindeutige ID der E-Mail an.

Anhand der in den jeweiligen RFCs festgelegten Definitionen, ist es auch mit CONZEPT 16, durch Zuhilfenahme der CONZEPT 16 eigenen Socket Befehle, einfach möglich, RFC konforme TCP/IP-Netzwerkprotokolle, client- und serverseitig selbst zu realisieren.

Beispiel:

Unter Zuhilfenahme der RFC Befehle USER und PASS wird eine Verbindung zu einem POP3 E-Mailserver hergestellt.

// *********************************************************************
// * Es wird eine Verbindung zu einem E-Mail Server (POP3) hergestellt *
// *********************************************************************
@A+
@C+

sub Pop_Command
(
  aHdl          : handle;
  aCmd          : alpha;
  VAR aResult   : alpha;
)
{
  if (StrLen(aCmd) > 0)
  {
    try
    {
      aHdl->SckWrite(_SckLine,aCmd);
      aHdl->SckRead(_SckReadMax,aResult,4096);
      if (!(aResult =* '+*'))
        ErrSet(_ErrGeneric);
    }

    if (ErrGet() != _ErrOk)
      aHdl->SckClose();
  }
}


sub Pop_Login
(
  var aHdl      : handle;
  aUser         : alpha;
  aPassword     : alpha;
  aServer       : alpha;
)
: logic

local
  {
    tPort       : word;
    tResult     : alpha(4096);
  }

{
  tPort # 110;
  try
  {
    aHdl # SckConnect(aServer,tPort);
    aHdl->Pop_Command('USER ' + aUser    ,VAR tResult);
    aHdl->Pop_Command('PASS ' + aPassword,VAR tResult);
    return(true);
  }
  return(false);
}


main

  local
  {
    tHdl          : handle;
    tServer       : alpha;
    tUser         : alpha;
    tPassword     : alpha;
  }

{
  tServer   # 'pop.googlemail.com';
  tUser     # 'Benutzername@googlemail.com';
  tPassword # '123456789';

  if (Pop_Login(var tHdl,tUser,tPassword,tServer))
  {
    WinDialogBox(0,'', 'Verbindung hergestellt!', 0, 0, 0);
    tHdl->SckClose();
  }
  else
    WinDialogBox(0,'', 'Verbindung nicht hergestellt!', 0, 0, 0);
}

// *********************************************************************

In der CONZEPT 16 – Code Library im Bereich Schnittstellen / Sockets befinden sich weitere Beispiele, die exemplarisch die Realisierungen von TCP/IP-Protokollen veranschaulichen.
Es existieren Beispiele zu den TCP/IP-Protokollen:

  • FTP
  • HTTP
  • POP3
  • Telnet
  • Time (NTP)
Keine Kommentare

Kommentar abgeben