2009-06-05 5 views
20

Also möchte ich alles über Netzwerke lernen. Gut unter dem Sockel, runter zu rohen Sockeln und so. Und ich möchte Hubs, Router, Access Points usw. verstehen. Zum Beispiel würde ich gerne in der Lage sein, meine eigene Software zu schreiben, um so etwas zu tun. * Gibt es eine großartige Quelle für diese Art von Informationen?Wie kann ich _really_ Low-Level-Netzwerkprogrammierung lernen?

Ich weiß, dass ich hier viel frage, und dass, um alles vollständig zu erklären erfordert von hohen bis zu niedrigen Ebene. Ich denke, ich suche nach einer Quelle ähnlich in Umfang und Tiefe zu Applied Cryptography, aber über Netzwerke.

Danke an jeden, der mir helfen kann (und andere wie mich?) In die richtige Richtung.

* Ja, ich merke, eine große Sicherheitslücke wäre jede meines handgefertigter Netzwerk-Stack-Code, und bin auf der Suche nur, es zu tun :)

ähnliche Frage zu lernen: here. Ich suche jedoch mehr als nur "Was ist unter TCP/UDP-Sockets?".

Zur Klärung bearbeitet: Die Tiefe, über die ich spreche, liegt über der Treiberebene. Also angenommen, dass die Bits es zum und vom anderen Ende des Drahts schaffen können, was als nächstes?

+3

Wie Low-Level Sie gehen wollen; Möchten Sie Folgendes lernen: * eine TCP-Implementierung schreiben, die nur rohe Sockets verwendet? * Schreiben Sie einen neuen TCP/IP-Stack für Ihr Betriebssystem oder für ein eingebettetes System? * Ist die Rahmenverkapselung auch? (die für die Verbindung zu jedem von Ethernet verdrahteten Netzwerken, Gig-E, Einwahl, ATM, Token Ring, Wifi, Bluetooth usw. unterschiedlich sein wird) * einen Netzwerkkartentreiber schreiben, um Rahmen zu nehmen und sie an die NIC zu senden? – Stobor

Antwort

18

Ich lernte IP-Vernetzung von TCP/IP Illustrated. Sehr empfehlenswert.

+1

Ich würde auch empfehlen Unix-Netzwerk-Programmierung http://www.amazon.com/Unix-Network-Programming-Addison-wesley-Professional/dp/0131411551/ref=sr_1_1?ie=UTF8&s=books&qid=1244659765&sr=1- 1 – Reginaldo

12

Das hilft vielleicht nicht, es zu lernen, aber ein Paket-Sniffer wie Wireshark wird Ihnen einen Einblick geben, wie die Daten auf einem ziemlich niedrigen Protokoll (TCP/IP) aussehen.

2

Sie sollten sich mit einem C-Compiler ausstatten und die notwendigen Bibliotheken und Header für Ihr Betriebssystem und rumspielen. Sie können zum Beispiel lesen möchten:

http://snap.nlc.dcccd.edu/learn/fuller3/chap13/chap13.html

ich in meinem leckeren Konto noch einige Links hatte, aber sie alle gingen die digitale Drain ;-)

8

Wie man offensichtlich erkannt haben, das Universum startet und endet nicht mit dem IP-Protokoll. Werfen Sie einen Blick auf die OSI 7 Layer Model, wobei IP ein Layer 3 (Network) -Protokoll ist. Gewöhnliche IP-Router funktionieren auf dieser Ebene, aber es gibt mehr Komplexität, die Sie wahrscheinlich in den Schichten Data Link und Physical verstehen sollten, bevor Sie damit beginnen, Ihre eigenen Netzwerk-Stacks zu programmieren.

Beginnen Sie mit den Grundlagen der Datenkommunikation in all ihren unzähligen Formen und arbeiten Sie sich den Stapel hinauf, bis Sie dahin kommen, wo Sie anhalten müssen. Data Communications, Computer Networking and Open Systems ist ein guter Grundlagentext und suchen Sie dann nach weiteren Einzelheiten zu jedem Bereich, auf den Sie sich konzentrieren müssen. Vorherige Antworten enthalten gute Links für IP und TCP/IP, und wie erwähnt Wireshark können Sie durch einige der Schichten nach unten schauen

6

CISCO CCNA-Materialien enthalten eine große Netzwerk-Grundlagen, aber hat keinen Einfluss auf Programmierung Aspekt. Ich bin mir nicht sicher, ob es einen offiziellen kostenlosen Link gibt, aber Sie können versuchen, sie zu finden.

4

Haben Sie Embedded-Programmiererfahrung? Wenn ja, empfehle ich Ihnen, einen von these development boards zu kaufen. Sie sind billig und ermöglichen Ihnen die Arbeit an jedem Teil des Netzwerk-Stacks und alle erforderlichen Software-Tools sind kostenlos.

Beachten Sie, dass es nicht einfach ist, loszulegen, und ich habe das CS8900 IC-Datenblatt gelesen, um zu erfahren, wie es mit dem ARM7-basierten Prozessor kommunizieren kann. Aber wenn Sie so etwas mögen (wie ich), dann machen sie großen Spaß.

3

Hmmm ... haben Sie in Computer Networks von Tanenbaum geschaut?

+0

Dieses Buch ist fantastisch, witzig und lässt Sie "Low Level" C++ Code schreiben! –

2

Ich habe das Networking-Kapitel in "Linux-Kernel verstehen" und "Linux-Netzwerk-Internals verstehen" von oreilly als sehr hilfreich gefunden.

Der TCP/IP-Stack ist ein sehr guter Anfang, aber es gibt viel mehr und ein gutes Verständnis davon, wie Ethernet funktioniert und wie Ethernet! = IP! = The-interweb wird einen langen Weg gehen.

Bücher über Netzwerksicherheit machen oft einen anständigen wenn nicht goos Job zu erklären, wie Netzwerke in einem prägnanten Kontext arbeiten.

, was wirklich der Trick für mich war NAT einen Job unter Umsetzung :)

1

Dieser Kurs für mich gearbeitet: COS 461 at Princeton. Beachten Sie, dass es System-Level-Programmiererfahrung mit C. annimmt.

So ziemlich alle Lesungen und Vorlesungen sind online unter "Syllabus" verfügbar. Und Sie können die Zuweisungen auch versuchen (leider haben Sie keinen Zugriff auf das Virtual Network System).

+0

Nur aus Neugier, wo fällt das unter Princeton's undergrad Kursfolge? –

+0

Es ist in der Regel von CS Majors im 3. oder 4. Jahr genommen, aber einige Leute nehmen sie einfach, weil sie interessiert sind. – weiyin