用語辞典・ネットワーク機器

NIC

NICとは

NICは、端末を有線または無線ネットワークへ接続するためのネットワークインターフェースです。正式名称はNetwork Interface Controller(ネットワーク・インターフェース・コントローラー)またはNetwork Interface Card(ネットワーク・インターフェース・カード)で、エヌアイシー、またはニックと読みます。

アプリからOSへ渡されたデータをドライバー経由で受け、リンク用フレームを作り、電気・光・無線信号へ変換して送ります。受信時は逆に信号からフレームを取り出し、検査したデータをOSのプロトコルスタックへ渡します。

NICは端子だけではなく、OSと通信媒体の間でキュー管理、フレーム処理、信号変換を受け持つハードウェアとドライバーの境界です。ケーブルが刺さっていても、ドライバーやリンク交渉が成立しなければ通信できません。

OSの送受信キューから、NICコントローラー、MAC、PHY、媒体へ渡す内蔵、PCIe、USB、無線でも、OSへネットワークインターフェースを提供する
アプリとOSから送受信キュー、ドライバー境界、NICコントローラー、フレーム処理、PHY信号変換を通ってケーブルへ至る経路と、マザーボード内蔵、PCIeカード、USB変換、無線モジュールの四形態、スイッチとのリンク交渉を示した図解
図1MACとPHYが一つのICに統合される場合も、別チップの場合もあります。無線NICでは無線用MAC/PHY、RF回路、アンテナが加わります。

送信では、OSのバッファーをキューに載せ、NICが媒体へ出す

CPUが一ビットずつ端子へ書くのではないキュー、割り込み、DMA、オフロードで大量のフレームを効率よく処理する
  1. Stack
    OSが通信単位を作る

    ソケットのデータへTCP/UDP、IPなどのヘッダーを付け、出力インターフェースを選ぶ

  2. Driver
    送信キューへ登録

    NICが読める記述子へバッファー位置や処理条件を設定する

  3. DMA
    メモリーから直接転送

    CPUによる全データコピーを減らし、NICが主記憶の内容を読み取る

  4. MAC
    フレームを組み立てる

    宛先・送信元、FCS、必要なタグなどリンク層の形式を処理する

  5. PHY
    媒体の信号へ変換

    銅線・光・無線の方式に従い、相手と同期してビットを送受信する

図2受信は逆方向です。NICはフレームを検査して受信キューへ置き、OSへ処理を通知します。

カード型でなくても、OSから見える接続口ならNICになり得る

マザーボード内蔵Ethernet、PCIe拡張カード、USB‑Ethernetアダプター、Wi‑FiモジュールはいずれもNICです。仮想マシン、VPN、コンテナー、ループバックには物理端子を持たないvirtual NIC(バーチャル・ニック/仮想NIC)も作られます。

一台のPCが有線、Wi‑Fi、VPNを同時に持てば、OSには複数のインターフェースとIPアドレス、経路が存在します。どのNICから出るかは経路表とメトリック、接続状態で決まります。

MACアドレスはインターフェースの識別値で、利用者の身元ではない

EthernetやWi‑FiのNICは通常MACアドレスを持ちます。製造時に割り当てた値のほか、OSがプライバシー保護のため無線ネットワークごとに変えるランダムMAC、仮想NICへ割り当てるローカル管理値があります。

交換、仮想化、設定変更でMACは変わり、複製も技術的には可能です。端末や人を恒久的に認証する秘密情報として扱えません。スイッチのMAC表は到達方向を学ぶために使い、本人確認は別の認証で行います。

自動交渉では、速度だけでなく全二重やフロー制御能力も扱う

有線NICとスイッチはリンクパルスなどを使い、双方が対応する速度と動作条件を合意します。高速方式ではケーブル対の品質を検査し、リンクを訓練します。相手、ケーブル、設定の一つが対応しなければ低い速度へなるか、リンクが上がりません。

OSの「リンク速度」は交渉結果です。ファイル転送速度はプロトコル、ディスク、CPU、混雑などの影響を受けます。速度低下の切り分けでは、まずNICのリンク速度、エラー、再交渉履歴を確認します。

オフロードはCPU負荷を減らすが、キャプチャーの見え方を変える

NICはチェックサム計算、大きなTCPデータの分割、受信フローの複数CPUへの振り分けなどを代行できます。代表例はTSO(TCP Segmentation Offload/ティーシーピー・セグメンテーション・オフロード)、チェックサムoffload、RSSです。

送信前の大きなバッファーをOS上でキャプチャーすると、実際の線上より大きなパケットや未計算チェックサムに見えることがあります。解析時はキャプチャー位置とオフロード設定を考慮し、必要な場合だけ一時的に無効化します。

認識、リンク、IP設定の三段階で診断する

最初にOSがNICを認識し、ドライバーが正常かを確認します。次にリンクランプと交渉速度を見て、ケーブル・スイッチ・無線接続を確認します。最後にDHCPでIP、プレフィックス、ゲートウェイ、DNSを得ているかを見ます。

リンクはあるが通信できない場合、VLAN、認証、IP重複、ファイアウォール、経路へ進みます。NICを無効・有効にする操作は状態を再初期化しますが、配線不良やドライバー欠陥を直すものではありません。

仕様・実装の確認資料:IEEE 802.3‑2022「Ethernet」Microsoft「NDIS Network Interface Architecture」Linux Kernel Documentation「Scaling in the Linux Networking Stack」

関連用語