TCP/IP UDP: Difference between revisions

From Medien Wiki
(sockets)
Line 1: Line 1:
== IPs & Ports ==
== IPs ==
IP steht für Internet Protocol und bezeichnet eine Adresse in einem [[Netzwerk|Netzstrukturen]]. Aktuell sind noch IPv4-Adressen im Einsatz, aufgrund der rasant ansteigenden Zahlen vorhandener Computer stößt man auch mit Konzepten wie dynamisch vergebenen IP-Adressen langsam an die Grenzen der maximalen Anzahl zu vergebender Nummern. In Zukunft wird jeder Rechner eine IPv6-Adresse haben.
IP steht für Internet Protocol und bezeichnet eine Adresse in einem [[Netzwerk|Netzstrukturen]]. Aktuell sind noch IPv4-Adressen im Einsatz, aufgrund der rasant ansteigenden Zahlen vorhandener Computer stößt man auch mit Konzepten wie dynamisch vergebenen IP-Adressen langsam an die Grenzen der maximalen Anzahl zu vergebender Nummern. In Zukunft wird jeder Rechner eine IPv6-Adresse haben.


Line 14: Line 14:
Ein DNS (Domain Name Server) hilft dabei, eine Adresse wie uni-weimar.de in eine IP Adresse aufzulösen.
Ein DNS (Domain Name Server) hilft dabei, eine Adresse wie uni-weimar.de in eine IP Adresse aufzulösen.


Weiterführende Links:
* [http://de.wikipedia.org/wiki/IP-Adresse IP-Adressen] inkl. Übersicht über reservierte IP-Adressräume
* [http://de.wikipedia.org/wiki/DNS DNS - Domain Name Server]
* IP-Adress-Typen:
** [http://de.wikipedia.org/wiki/Unicast Unicast]: Senden an einen bestimmten Empfänger im Netzwerk
** [http://de.wikipedia.org/wiki/Broadcast Broadcast]: Senden an alle Geräte im selben Netz (Subnetz)
** [http://de.wikipedia.org/wiki/Multicast Multicast]: Senden an einige Geräte im selben Netz
== Ports ==
Jeder Rechner verfügt über Ports, sozusagen Postfächer, an denen verschiedene Programme lauschen, ob für sie eine Nachricht eintrifft. Eigene Ports sollten am besten im Bereich von 49152 bis 65535 vergeben werden; eine [http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers Übersicht vergebener TCP und UDP Port Nummern] findet man auf Wikipedia. Übliche Ports sind z.B. 80 für http, 21 für ftp, 110 für POP3, 5190 für ICQ usw...
Jeder Rechner verfügt über Ports, sozusagen Postfächer, an denen verschiedene Programme lauschen, ob für sie eine Nachricht eintrifft. Eigene Ports sollten am besten im Bereich von 49152 bis 65535 vergeben werden; eine [http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers Übersicht vergebener TCP und UDP Port Nummern] findet man auf Wikipedia. Übliche Ports sind z.B. 80 für http, 21 für ftp, 110 für POP3, 5190 für ICQ usw...
* 0-255: TCP/IP-Anwendungen (System, reserviert)
* 0-255: TCP/IP-Anwendungen (System, reserviert)
Line 20: Line 29:
* 49152-65535: Dynamische Port-Nummern für den "privaten" Gebrauch
* 49152-65535: Dynamische Port-Nummern für den "privaten" Gebrauch


=== Weiterführende Links IP ===
Weiterführende Links:
* [http://de.wikipedia.org/wiki/IP-Adresse IP-Adressen] inkl. Übersicht über reservierte IP-Adressräume
* [http://de.wikipedia.org/wiki/DNS DNS - Domain Name Server]
* [http://de.wikipedia.org/wiki/Port_(Protokoll) Ports] inkl. Übersicht üblicher Ports
* [http://de.wikipedia.org/wiki/Port_(Protokoll) Ports] inkl. Übersicht üblicher Ports
* [http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers Übersicht vergebener TCP und UDP Port Nummern]
* [http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers Übersicht vergebener TCP und UDP Port Nummern]
* IP-Adress-Typen:
** [http://de.wikipedia.org/wiki/Unicast Unicast]: Senden an einen bestimmten Empfänger im Netzwerk
** [http://de.wikipedia.org/wiki/Broadcast Broadcast]: Senden an alle Geräte im selben Netz (Subnetz)
** [http://de.wikipedia.org/wiki/Multicast Multicast]: Senden an einige Geräte im selben Netz


== TCP ==
== TCP ==
TCP/IP (Transmission Control Protocol / Internet Protocol) ist (v.a. im Unterschied zu UDP) ein '''verbindungsorientiertes Transportprotokoll'''. D.h. es wird zuerst eine Verbindung aufgebaut, bevor der eigentliche Datentransfer beginnt. Dies ist zwar sicher (damit ist nicht sicher im Sinne von verschlüsselt oder abhörsicher gemeint!), aber bringt auch einen gewissen Overhead mit.
TCP/IP (Transmission Control Protocol / Internet Protocol) ist (v.a. im Unterschied zu UDP) ein '''verbindungsorientiertes Transportprotokoll'''. D.h. es wird zuerst eine Verbindung aufgebaut, bevor der eigentliche Datentransfer beginnt. Dies ist zwar sicher (damit ist nicht sicher im Sinne von verschlüsselt oder abhörsicher gemeint!), aber bringt auch einen gewissen Overhead mit.


=== Weiterführende Links TCP ===
Weiterführende Links:
* [http://de.wikipedia.org/wiki/TCPIP Wikipedia:TCP/IP]
* [http://de.wikipedia.org/wiki/TCPIP Wikipedia:TCP/IP]
* [http://netzmafia.de/skripten/netze/netz8.html TCP/IP @ netzmafia.de]
* [http://netzmafia.de/skripten/netze/netz8.html TCP/IP @ netzmafia.de]
Line 45: Line 47:
Man kann ein Datenpaket z.B. an eine bekannte IP Adresse und einen bestimmten Port im lokalen (oder globalen) Netzwerk senden. Eine Besonderheit bei UDP ist die Möglichkeit Nachrichten an die IP 0.0.0.0 zu senden, was einer "Rundmail" gleichkommt. Natürlich empfangen nur Rechner diese Nachricht, auf denen ein Programm läuft, das auf Nachrichten an dem entsprechenden Port wartet (Port-Listener).
Man kann ein Datenpaket z.B. an eine bekannte IP Adresse und einen bestimmten Port im lokalen (oder globalen) Netzwerk senden. Eine Besonderheit bei UDP ist die Möglichkeit Nachrichten an die IP 0.0.0.0 zu senden, was einer "Rundmail" gleichkommt. Natürlich empfangen nur Rechner diese Nachricht, auf denen ein Programm läuft, das auf Nachrichten an dem entsprechenden Port wartet (Port-Listener).


<source lang="bash">
<source lang="C">
127.0.0.0:4444 // Eigener Rechner (IP 127.0.0.0), Port# 4444
127.0.0.0:4444 // Eigener Rechner (IP 127.0.0.0), Port# 4444
192.168.1.11:5555 // IP im lokalen Netzwerk 192.168.1.11, Port# 5555
192.168.1.11:5555 // IP im lokalen Netzwerk 192.168.1.11, Port# 5555
Line 53: Line 55:
Achtung: Eigene Ports sollten am besten im Bereich von 1024 bis 49151 vergeben werden; eine [http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers Übersicht vergebener TCP und UDP Port Nummern] findet man auf Wikipedia.  
Achtung: Eigene Ports sollten am besten im Bereich von 1024 bis 49151 vergeben werden; eine [http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers Übersicht vergebener TCP und UDP Port Nummern] findet man auf Wikipedia.  


[[OSC|Open Sound Control]]
Weiterführende Links UDP
 
=== Weiterführende Links UDP ===
* [http://de.wikipedia.org/wiki/User_Datagram_Protocol User Datagram Protocol]
* [http://de.wikipedia.org/wiki/User_Datagram_Protocol User Datagram Protocol]
* [http://www.abc.se/~m6695/udp.html Writing a simple UDP client/server in a Unix Environment]
* [http://www.abc.se/~m6695/udp.html Writing a simple UDP client/server in a Unix Environment]
* [[OSC]] - Open Sound Control
* [[OSC]] - Open Sound Control


== Weiterführende Links TCP und UDP ==
== Sockets ==
* [http://www.uni-weimar.de/medien/webis/teaching/lecturenotes/web-technology/unit-de-network-protocol1.pdf Lecture Notes Network Protocols] von Prof. Benno Stein
Protokolle wie TCP und UDP sind abstrakte Dienste, die die Struktur von Computer-Kommunikation definieren. Programmierer benutzen für TCP und UDP Operationen ''[http://de.wikipedia.org/wiki/Socket_(Software) Sockets]'', manchmal auch BSD-Sockets genannt. Sockets sind in jedem Betriebssystem zu finden.
* [http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers List of TCP and UDP Port numbers]
 
=== Socket-Beispiel JAVA ===
Die [http://de.wikipedia.org/wiki/Java (Programmiersprache) Java] als plattformunabhängige [[Category:Programmiersprachen|Programmiersprache]] unterstützt im Paket <code>java.net</code> die Socket-Programmierung: Folgendes Kurzbeispiel zeigt die Verwendung der Klassen <code>Socket</code> und <code>ServerSocket</code>:
<source lang="java">
ServerSocket serverSocket = new ServerSocket(port);    // Serversocket mit bestimmter Port-Nummer erstellen
while(true) {
  Socket clientSocket = serverSocket.accept();        // auf Anfragen warten
  InputStream input  = clientSocket.getInputStream(); // InputStream-Objekt öffnen
  byte[] data        = new byte[1024];                // Datenpuffer deklarieren (anlegen)
  int NumBytes        = 0;                            // Variable für Anzahl der tatsächlich gelesenen Bytes
  NumBytes            = input.read(data);              // Daten lesen
  /*** gelesene Daten verarbeiten ***/
  clientSocket.close();                                // Verbindung schließen
}
</source>
 
 
weiterführende Links:
* [http://de.wikipedia.org/wiki/Socket_(Software) BSD Sockets]
 
== Links ==
siehe "weiterführende Links" unter den einzelnen Sektionen und:
* [http://www.uni-weimar.de/medien/webis/teaching/lecturenotes/web-technology/unit-de-network-protocol1.pdf Lecture Notes Network Protocols 1] von Prof. Benno Stein
* [http://www.uni-weimar.de/medien/webis/teaching/lecturenotes/web-technology/unit-de-network-protocol1.pdf Lecture Notes Network Protocols 2] von Prof. Benno Stein


[[Category:Internet]]
[[Category:Internet]]

Revision as of 14:30, 22 April 2010

IPs

IP steht für Internet Protocol und bezeichnet eine Adresse in einem Netzstrukturen. Aktuell sind noch IPv4-Adressen im Einsatz, aufgrund der rasant ansteigenden Zahlen vorhandener Computer stößt man auch mit Konzepten wie dynamisch vergebenen IP-Adressen langsam an die Grenzen der maximalen Anzahl zu vergebender Nummern. In Zukunft wird jeder Rechner eine IPv6-Adresse haben.

127.0.0.0:4444 // Eigener Rechner (IP 127.0.0.0), Port# 4444
192.168.1.11:5555 // IP im lokalen Netzwerk 192.168.1.11, Port# 5555
0.0.0.0:45678 // Aktuelle Netzadresse, Port#45678. 
// Bei UDP kann diese Adresse für einen Broadcast im lokalen Netzwerk genutzt werden.
255.255.255.2555:2222 // Broadcast (z.B. von DHCP oder BOOTP genutzt) auf Port#2222
2001:0db8:85a3:08d3:1319:8a2e:0370:7344 // Bsp. einer IPv6 Adresse in hexadezimal-Notierung (ohne Port)

IP-Adressen sind für Menschen schwer zu merken, deshalb gibt es für Menschen lesbare Adressen (Hostnamen). Ein DNS (Domain Name Server) hilft dabei, eine Adresse wie uni-weimar.de in eine IP Adresse aufzulösen.

Weiterführende Links:

Ports

Jeder Rechner verfügt über Ports, sozusagen Postfächer, an denen verschiedene Programme lauschen, ob für sie eine Nachricht eintrifft. Eigene Ports sollten am besten im Bereich von 49152 bis 65535 vergeben werden; eine Übersicht vergebener TCP und UDP Port Nummern findet man auf Wikipedia. Übliche Ports sind z.B. 80 für http, 21 für ftp, 110 für POP3, 5190 für ICQ usw...

  • 0-255: TCP/IP-Anwendungen (System, reserviert)
  • 256-1023: Unix-Anwendungen (System, reserviert)
  • 1024-49151: Von der IANA verwaltete Port-Nummern
  • 49152-65535: Dynamische Port-Nummern für den "privaten" Gebrauch

Weiterführende Links:

TCP

TCP/IP (Transmission Control Protocol / Internet Protocol) ist (v.a. im Unterschied zu UDP) ein verbindungsorientiertes Transportprotokoll. D.h. es wird zuerst eine Verbindung aufgebaut, bevor der eigentliche Datentransfer beginnt. Dies ist zwar sicher (damit ist nicht sicher im Sinne von verschlüsselt oder abhörsicher gemeint!), aber bringt auch einen gewissen Overhead mit.

Weiterführende Links:

UDP

UDP (User Datagram Protocol), auch oft scherzhaft mit Unreliable Data Protocol übersetzt ist ein verbindungsloses Transportprotokoll. D.h. es wird keine Verbindung aufgebaut, sondern die Datenpakete werden ins Blaue geschickt. Es gibt keine Garantie, dass das Paket auch ankommt! Tatsächlich sollte man sich in der Praxis nicht sonderlich wundern, wenn eines von 10 Paketen nicht ankommt, auch wenn ein Verlust von 1:100 vermutlich der "normalere" Wert ist.

Der Empfänger kann dem Sender antworten, da die Absenderadresse mit übertragen wird.

Man kann ein Datenpaket z.B. an eine bekannte IP Adresse und einen bestimmten Port im lokalen (oder globalen) Netzwerk senden. Eine Besonderheit bei UDP ist die Möglichkeit Nachrichten an die IP 0.0.0.0 zu senden, was einer "Rundmail" gleichkommt. Natürlich empfangen nur Rechner diese Nachricht, auf denen ein Programm läuft, das auf Nachrichten an dem entsprechenden Port wartet (Port-Listener).

127.0.0.0:4444 // Eigener Rechner (IP 127.0.0.0), Port# 4444
192.168.1.11:5555 // IP im lokalen Netzwerk 192.168.1.11, Port# 5555
0.0.0.0:45678 // UDP-Broadcast im lokalen Netzwerk auf Port#45678

Achtung: Eigene Ports sollten am besten im Bereich von 1024 bis 49151 vergeben werden; eine Übersicht vergebener TCP und UDP Port Nummern findet man auf Wikipedia.

Weiterführende Links UDP

Sockets

Protokolle wie TCP und UDP sind abstrakte Dienste, die die Struktur von Computer-Kommunikation definieren. Programmierer benutzen für TCP und UDP Operationen Sockets, manchmal auch BSD-Sockets genannt. Sockets sind in jedem Betriebssystem zu finden.

Socket-Beispiel JAVA

Die (Programmiersprache) Java als plattformunabhängige unterstützt im Paket java.net die Socket-Programmierung: Folgendes Kurzbeispiel zeigt die Verwendung der Klassen Socket und ServerSocket:

ServerSocket serverSocket = new ServerSocket(port);     // Serversocket mit bestimmter Port-Nummer erstellen
while(true) {
   Socket clientSocket = serverSocket.accept();         // auf Anfragen warten
   InputStream input   = clientSocket.getInputStream(); // InputStream-Objekt öffnen
   byte[] data         = new byte[1024];                // Datenpuffer deklarieren (anlegen)
   int NumBytes        = 0;                             // Variable für Anzahl der tatsächlich gelesenen Bytes
   NumBytes            = input.read(data);              // Daten lesen
   /*** gelesene Daten verarbeiten ***/
   clientSocket.close();                                // Verbindung schließen
}


weiterführende Links:

Links

siehe "weiterführende Links" unter den einzelnen Sektionen und: