UNP Cover

Unix-Netzwerkprogrammierung mit Threads, Sockets und SSL

Vernetzte Rechnersysteme und insbesondere das weltumspannende Internet haben unsere Welt verändert. Die Anziehungskraft derartiger Rechnernetze steht und fällt mit der Leistungsfähigkeit und Zuverlässigkeit der darüber verfügbaren Anwendungen. Ohne Online-Enzyklopädien, Online-Shopping, File-Sharing und vieles mehr wäre das Internet wohl nach wie vor nur für Wissenschaftler und Computerexperten von Interesse.

Bei der Entwicklung netzwerkfähiger Anwendungen sind neben der Kenntnis der Netzwerk-APIs auch fundierte Einsichten in die Systemprogrammierung unabdingbar. Aufbauend auf einer kompakten Einführung in die Unix-Systemprogrammierung erläutert der Autor anhand zahlreicher praktischer Beispiele die Programmierung nebenläufiger Abläufe mittels Unix-Prozessen und POSIX-Threads. Die Grundlagen der Netzwerkprogrammierung mit TCP/IP und der Sockets-API werden durch fünf einschlägige Implementierungsmuster für typische Server-Programme vertieft. Das Themenspektrum der Netzwerkprogrammierung wird durch die ausführliche Darstellung der Absicherung des Datenaustauschs mittels SSL/TLS am Beispiel von OpenSSL abgerundet.

Links

Sourcecodes

Sämtliche Beispielprogramme aus dem Buch: unp-source-1.5.tar.gz (Stand: 19. Februar 2010)

Inhaltliche Korrekturen

Stand: 19. Februar 2010
Fundstelle Korrektur
Seite 73, Beispiel 2.17, Zeile 22: printf( "Fehler: %s.\n", strerror( error ) );
Seite 167, dritter Absatz, erster Satz: Abbildung 4.6 zeigt die generelle Struktur der globalen Unicast-Adressen, bestehend aus m Bit globalem Routing-Präfix, n Bit Subnetz-ID und den verbleibenden 128-m-n Bit für die Interface-ID.
Seite 220, erster Absatz, letzter Satz: Beim Aufruf von select() oder pselect() muß also zunächst der höchste Socketdeskriptor, der in einer der Deskriptormengen enthalten ist, bestimmt werden. Dieser Wert wird um eins inkrementiert und dann im Parameter nfds übergeben.
Seite 222, Beispiel 4.10, Zeile 19: select( MAX( http, https ) + 1, &read, NULL, NULL, &timeout );
Seite 222, erster Absatz, zweiter Satz: Der höchste Socketdeskriptor nfds wird mit dem Makro MAX als Maximum der beiden in read enthaltenen Deskriptoren http und https bestimmt. Da select() lediglich die Deskriptoren 0 bis nfds-1 überwacht, muß das Maximum der beiden Deskriptoren http und https noch um den Wert 1 inkrementiert werden.
Seite 232, Beispiel 4.11, Zeile 48: if( ( sd = socket( aptr->ai_family, SOCK_STREAM, 0 ) ) < 0 )
Seite 232, Beispiel 4.11, Zeile 56: if( connect( sd, aptr->ai_addr, aptr->ai_addrlen ) < 0 )
Seite 344, Beispielfunktion print_all_errors(), Zeile 14: ( flags & ERR_TXT_STRING ) ? data : "---" );
Seite 350, Beispiel 6.3, Zeile 82: openssl_mutex = calloc( max, sizeof( pthread_mutex_t ) );
Seite 392, Abbildung 7.4: korrigierte Abbildung

Kontakt

Markus Zahn, unp-[at]-bit-oase-[dot]-de

Valid XHTML 1.0 TransitionalValid CSS