0

ネットワーク カードが Windows でどのように機能し、データがどのように中継されているかを理解しようとしています。

私には2つの仮説があります。

1.

  1. データはネットワーク カードによって受信されます。
  2. 次に、カードはデータを内部バッファー (おそらくダブル バッファーまたはリング バッファー) に入れます。
  3. カードは、ある量に達するまでデータを蓄積し、その時点で割り込みを送信します。
  4. Windows はカードから RAM にデータをコピーし、適切なハンドラーに通知します。

2.

  1. データが受信されます。
  2. カードは DMA を使用してデータを RAM に格納します。( DMA はデータが失われないことを保証しますか、それともカードにはまだ独自のバッファが必要ですか? )
  3. カードは、RAM に十分なデータを入れると割り込みを発生させます。
  4. Windows は割り込みを受け取り、データを適切なハンドラーにコピーまたは公開します。

私の仮説のどちらかが正しいですか?

バッファがいっぱいの場合、カードまたは Windows から何かメッセージはありますか?

イーサネット コントローラーの Windows システム プロパティで、"Receive buffers" と "Transmit buffers" というプロパティを確認できます。どちらも 256 に設定されて います。これはどういう意味ですか?

このテーマに関する優れた文献はありますか? (私は Tanenbaum の最新のオペレーティング システムを持っていますが、特に Windows とは関係ありません。)

4

1 に答える 1

1

あなたの質問には、(少なくとも!)3つの非常に幅広いトピックが含まれています。

1)レイヤ 2 (データ リンク)ハードウェア デバイスはどのように機能しますか?

2) オペレーティング システムのネットワーク スタックとの関係

... と ...

3) オペレーティング システムのカーネル レベルのデバイス ドライバーとどのように関係していますか?

次のリンクは、実際には元の質問とは 180 度反対です (API は比較的高レベルであり、質問は最も低いソフトウェア レベルに関連しています)。

「それが役立つことを願っています...少なくとも少し...

PS:

Linux には、ネットワーク スタックの実装に関する豊富な情報があります。すべてのカーネル ソースとすべてのデバイス ドライバーが完全に入手可能で、ドキュメントも充実しています。

于 2012-06-19T18:29:58.760 に答える