【ネットワーク基礎】NICの基本
はじめに
少し前にOSI参照モデルとEthernetの基本的な解説を行ないましたが、物理層の部分はどうも感覚的に馴染みがなく理解がしづらい印象を個人的に持ってしまいます。
しかし、実際の通信においてはデータを物理的に届けるための重要な役割を担っているため、通信の流れを理解する上で大切な要素です。
今回の記事では、もう少しだけ踏み込んで、物理層で重要な役割を持っているNICについてざっくり解説していきます。
NICとは
NIC(Network Interface Card)は、パソコンやサーバーの中に物理的に存在する部品のことで、ネットワークと通信するための入り口・出口になります。最近のPCだとLANケーブルを挿す穴(LANポート)と一体になっているものが多いようです。
Ethernet(プロトコル)で定められたルールを実際にハードウェアとして実行しています。
具体的には、OSから渡されたデータを、Ethernetの規格通りに加工・送信・受信する役割を担ってます。
PC
※https://www.miraiserver.ne.jp/column/about_nic/ より
マザーボードについているNIC
※https://www.miraiserver.ne.jp/column/about_nic/ より
NICはネットワークとの“窓口”みたいなものとイメージできます。
NICの主な役割
・IPパケットにMACアドレスなどのEthernetヘッダをつけてフレーム化
・フレームを電気信号に変換してLANケーブルに流す
・ケーブルから流れてきた信号を受信してフレームに復元
・CRCチェックでフレームの破損確認
・フレームの宛先MACが自分宛てか確認
・自分宛てなら、フレームの中身をOSに渡す
※ChatGPTまとめより引用
※IPパケットはOSが作っています。
アプリから送信要求(送信先IPやデータ内容など)を受け付けると、OSがTCPヘッダ・IPヘッダをつけてIPパケットを作ります。そして、つくったIPパケットをNICに渡し、NICがEthernetヘッダをつけてフレームにし、ケーブルに送信している流れです。そのため、フレームの中身をOSに渡すのです。
NICはネットワーク通信の最も入口・出口に近い部分で、
・通信の送受信: データをネットワークに「送る・受け取る」
・MACアドレスの保持: 機器ごとに割り当てられた一意のIDを持つ
・フレームの処理:「Ethernetフレーム」と呼ばれるデータ単位の処理
を行なっています。
通信の流れ と NICの動作を整理
① アプリケーションがデータを送信
アプリケーションが「送信先IP」「ポート番号」「送信データ」をOSに渡します。
(例)WebアプリケーションがHTTPリクエストを送る など
② OSがTCP/IPでパケット化
OS(LinuxやWindowsのカーネル内)がTCPヘッダを追加(ポート番号、シーケンス番号など)し、IPヘッダを追加(送信元IP、宛先IPなど)します。これにより、IPパケット(中にTCP)が完成します。
③ NICがEthernetフレームを作成
NICは、OSから受け取ったIPパケットの前にMACアドレスなどのEthernetヘッダを付加し、末尾にFCS(CRCチェック用)を追加することで、Ethernetフレームを作成します。
④ フレームを電気信号に変換してLANケーブルへ
NIC(物理的な送信回路)が作成したEthernetフレームを0と1のビット列として変換し、それを電圧の変化に変換します。これにより、LANケーブルへ電気信号として送り出します。
⑤ スイッチが受信 → 次の宛先へ中継
スイッチ(L2スイッチ)がフレームを受信し、MACアドレステーブルを使って転送先ポートを判断します。そして、フレームを次のケーブル(宛先NICへつながるポート)に転送します。
※あれ?スイッチって電気信号を受け取るんじゃないの?
A. スイッチは電気信号を受け取り、中身はEthernetフレームとして扱います。(後続の解説につながります)
→ レイヤーによって違う役割を果たしているということです。電気的には物理層で信号を扱っていますが、論理的にはデータリンク層でフレームを解釈して動いています。
・物理層において(Layer 1)
スイッチのポートにはLANケーブルが繋がっていて、最初に届くのは「電気信号(アナログ)」です。
この信号は0と1のビット列を表しているので、スイッチ内部でデジタルデータに変換されます。
・データリンク層の話(Layer 2)
電気信号から復元されたビット列は、Ethernetフレームとして認識されます。
スイッチはこのEthernetフレームを読み取り、宛先MACアドレスをチェックして、フレームをどのポートに転送すべきか判断します。
⑥ 宛先のNICが電気信号を受信
LANケーブルを通じて届いた信号をキャッチし、NICは信号をデジタルデータ(0と1)に変換します。
⑦ Ethernetフレームとして復元し、MACアドレスを確認
NICはフレームを再構築し、「宛先MACアドレス」をチェックします。非カプセル化し、自分(受信側)のMACアドレスと一致すれば受信対象と判断します。
⑧ エラーチェック(CRC)
フレーム末尾にあるFCS(Frame Check Sequence)を使って破損がないか確認し、問題なければ中身(IPパケット)をOSへ渡します。
⑨ OSがIPパケットを受け取り、TCPなど上位プロトコルで処理
IPヘッダを確認し、宛先ポート番号を見て適切なアプリへ振り分けます。TCPならパケット順の整合性チェックや再送制御なども行ないます。
⑩ アプリケーションがデータを受け取る
最終的に、Webアプリケーションがデータを取得して処理します。
NICとスイッチのやりとり
NICは直接相手のNICにフレームを送ることはありません。この役割はスイッチが担っています。
スイッチは、ケーブルとケーブルの間に“物理的に”挟まっており、ケーブルを直接相手につなぐのではなく、スイッチがハブとして間に入って通信を中継しているのです。
スイッチはEthernetフレームのMACアドレスを見て、「どのポートに流すべきか」を判断して転送してくれます。
まとめ
NICはネットワーク通信の物理的な出入口として、Ethernetフレームを送受信する重要な役割を担っています。この役割があることで、ケーブルを伝ってデータが送受信できるようになることがわかったと思います。NICって名前だけは聞いたことあるけどいまいちよくわからない、そんな点が少しでもクリアになればOKです!
最後までお読みいただき、ありがとうございました。
参考・画像引用元URL
Discussion