2009-06-05 10 views
20

私はネットワークについてすべてを学びたいと思っています。ソケットの下には、生のソケットやものまであります。そして、私はハブ、ルータ、アクセスポイントなどを理解したいと思っています。例えば、私はこのようなことをする独自のソフトウェアを書くことができます。どのように低レベルのネットワークプログラミングを_できますか?

私はここで多くを求めていることを知っています。それを完全に説明するには、高レベルから低レベルまでのすべてが必要です。私はApplied Cryptographyの範囲と深さに似たソースを探していますが、ネットワークについては探しています。

私(そして私のような人)を正しい方向に向けるのを手助けできる人に感謝します。

*はい、私は巨大なセキュリティ上の問題になり、私の手作りのネットワークスタックコードのいずれかを使用して実現する、とだけ:)

同様の質問を学ぶためにそれを行うには探しています:hereを。しかし、私はTCP/UDPソケット以下のものを探しています。 "

解説のために編集:私が話している深さは、ドライバーレベルを上回っています。だからビットがワイヤーの他端との間でそれを作ることができると仮定すると、次は何ですか?

+3

低レベルに行きたい方法。 * rawソケットのみを使用してTCP実装を記述しますか? *ご使用のOSまたは組み込みシステム向けに新しいTCP/IPスタックを作成しますか? *フレームカプセル化も実行しますか? (イーサネット有線ネットワーク、Gig-E、ダイヤルアップ、ATM、トークンリング、無線LAN、ブルートゥースなどに接続する場合は異なります) フレームを取得してNICに送信するネットワークカードドライバを作成しますか? – Stobor

答えて

18

私はTCP/IP IllustratedからIPネットワークを学びました。強くお勧めします。

+1

私はUnixネットワークプログラミングもお勧めします 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

これは学習に役立ちませんが、のようなパケットスニファは、かなり低レベルのプロトコル(TCP/IP)でデータがどのように見えるかについていくつかの洞察を与えます。

2

あなたはCコンパイラとあなたのOSのために必要なLIBSとヘッダを自分で装備して遊んでなければなりません。あなたは、たとえば読むことをお勧めします:

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

私は私のおいしいアカウント内のいくつかのより多くのリンクを持っていましたが、あなたは明らかに認識しているとして、彼らはすべてのデジタルドレイン;-)

8

を下って行き、宇宙IPプロトコルで開始して終了しません。 OSI 7 Layer Modelを見てください.IPはレイヤ3(ネットワーク)プロトコルです。 Common IP Routerはこのレベルで動作しますが、独自のネットワークスタックのコーディングを開始する前に、データリンクと物理レイヤで理解しておくべきより複雑なものがあります。

データ通信の基本をすべての無数のフォームで始め、停止する必要があるところまで手を伸ばしてください。 Data Communications, Computer Networking and Open Systemsは良い基礎テキストであり、次に焦点を絞る必要がある各領域の詳細を探します。以前の回答には、IPとTCP/IPの良好なリンクが含まれています。前述のように、Wiresharkはいくつかの層を見下ろすようにします。

6

CISCO CCNAの素材には、ネットワークの基本はありますが、私は公式の無料のリンクがあるかどうかはわかりませんが、あなたはそれらを見つけようとすることができます。

4

エンベデッドプログラミングの経験はありますか?その場合はthese development boardsのいずれかを購入することをお勧めします。これらは安価で、ネットワーキングスタックのあらゆる部分に加えて、必要なすべてのソフトウェアツールを無料で利用できます。

これを行うことは容易ではないことに注意してください。私はCS8900 ICのデータシートを読んで、ARM7ベースのプロセッサと通信する方法を学びました。しかし、あなたがそのようなことを(私がしているように)楽しむなら、彼らはすばらしい楽しみです。

3

うん...あなたはTanenbaumによってComputer Networksを調べましたか?

+0

この本はすごく面白くて、「低レベル」のC++コードを書くことができます! –

2

"Linuxカーネルを理解する"と "Linuxネットワークの内部を理解する"というネットワーキングの章は、oreillyから非常に役立つことがわかりました。

TCP/IPスタックは非常に良いスタートですが、イーサネットの仕組みやethernet!= IP!= inter-webの仕組みについては、より多くのことを理解しています。

ネットワークセキュリティに関する書籍は、ネットワークが簡潔なコンテキストでどのように動作するかを説明するgoosジョブではありません。本当にやった私のためのトリックはNATを実装する仕事を取っていたものを

:)

1

このコースは私の仕事:COS 461 at Princeton。 Cでのシステムレベルのプログラミング経験があることに注意してください。

「シラバス」の下では、ほとんど全ての読み上げと講義がオンラインで利用可能です。また、割り当てを試すこともできます(残念ながら、仮想ネットワークシステムにアクセスすることはできません)。

+0

これはプリンストンの学部コースのどこにあるのですか? –

+0

これは一般的に3年目または4年目にCSメジャーが取っていますが、興味を持っている人もいるので、それを取る人もいます。 – weiyin

1

チェックこの..それは情報の優れたコレクションです: ​​

関連する問題