Ich habe vor kurzem angefangen, zwei Klassen in der Schule zu besuchen, die sich auf Netzwerke konzentrieren, eine auf verteilte Systeme und eine auf Computernetzwerke im Allgemeinen. Nachdem ich die ersten Labs für die beiden Klassen abgeschlossen habe, habe ich ein ziemlich gutes Verständnis von Netzwerkprotokoll- und Socket-Konzepten mit C und Java.
Jetzt versuche ich, über die grundlegenden Konzepte hinauszugehen und bin besser in Kommunikationsklassen- und Objektdesign, Netzwerkdesignmustern, Zwischen-Socket / Stream-Managementkonventionen, wichtigen Bibliotheken und allgemeinen * nix-Netzwerkprogrammierung-Zwischentechniken in C oder OO Sprachen.
Können Sie Ressourcen vorschlagen, mit denen Sie erfolgreich waren?
Steven's Know It all Buch über Netzwerk-Programmierung ist zu detailliert, um damit zu beginnen und enthält eine Bibliothek, um die echte Socket-Programmierung zu kapseln.
Ich würde empfehlen, mit dem Beej-Leitfaden zur Netzwerkprogrammierung zu beginnen und dann zum TCP/IP Sockets in C. Sie geben eine Menge guter Grundlagen über die Netzwerkprogrammierung und bieten eine Plattform, um endlich das Buch von Stevens durchzugehen.
Stevens andere Bücher wie TCP / IP illustrierte Serie deckt alle konzeptionellen Teil von Netzwerken ab.
Unix-Netzwerk-Programmierung von Richard Stevens ist ein Muss-Buch, das viele fortgeschrittene Netzwerk-Programmiertechniken diskutiert. Ich mache seit Jahren Netzwerkprogrammierung, und auch heute vergeht kaum ein Tag, ohne dass ich etwas in dieser großartigen Referenz nachschlagen muss.
BeeJ's Leitfaden für die Netzwerkprogrammierung war, wo ich die grundlegenden API-Aufrufe für POSIX-Systeme gelernt habe. Es gibt sogar einen Abschnitt darüber, wie man das in Windows-Code übersetzt.
Ich bin schon sehr früh auf "gute" Netzwerkkodierung durch Versuch und Irrtum gestoßen. Ich fand was funktionierte und was effizient war und lief damit.
Die klassischen Steven-Texte sind immer ein guter Anfang (z. B. UNIX Network Programming, Advanced Programming in der UNIX-Umgebung). Konzentrieren Sie sich darüber hinaus auf verteilte Programmiertechniken und Message-Passing-Systeme. Die Tatsache, dass Sie Nachrichten über einen Socket weiterleiten, ist nicht so wichtig wie das Verständnis, wie eine asynchrone verteilte Architektur entworfen wird.
Ich würde mir auch eine Kopie von TCP / IP Illustrated holen, da ich Dinge wie die Funktionsweise von IP-Routing, die Funktionsweise von TCP und UDP (sowie deren Unterschiede) als die wichtigsten praktischen Dinge verstehe Netzwerke. Danach gräbt man sich in DNS und HTTP ein. Ich habe keine wirklich guten Texte über diese beiden gefunden ... vielleicht wird jemand etwas vorschlagen. Wenn alles andere fehlschlägt, lesen Sie die RFCs ( RFC1034 / RFC1035 für DNS und RFC2616 für HTTP.
Wenn Sie aus Java kommen und gerade Socket-Programmierung gelernt haben, empfehle ich Elliotte Rusty Harolds Java Network Programming
Ich habe die Netzwerkprogrammierung aus dem Buch Linux Socket Programming By Example von Warren W. Gray gelernt.
Tags und Links linux networking unix