NICとは
NICは、端末を有線または無線ネットワークへ接続するためのネットワークインターフェースです。正式名称はNetwork Interface Controller(ネットワーク・インターフェース・コントローラー)またはNetwork Interface Card(ネットワーク・インターフェース・カード)で、エヌアイシー、またはニックと読みます。
アプリからOSへ渡されたデータをドライバー経由で受け、リンク用フレームを作り、電気・光・無線信号へ変換して送ります。受信時は逆に信号からフレームを取り出し、検査したデータをOSのプロトコルスタックへ渡します。
NICは端子だけではなく、OSと通信媒体の間でキュー管理、フレーム処理、信号変換を受け持つハードウェアとドライバーの境界です。ケーブルが刺さっていても、ドライバーやリンク交渉が成立しなければ通信できません。

送信では、OSのバッファーをキューに載せ、NICが媒体へ出す
- StackOSが通信単位を作る
ソケットのデータへTCP/UDP、IPなどのヘッダーを付け、出力インターフェースを選ぶ
- Driver送信キューへ登録
NICが読める記述子へバッファー位置や処理条件を設定する
- DMAメモリーから直接転送
CPUによる全データコピーを減らし、NICが主記憶の内容を読み取る
- MACフレームを組み立てる
宛先・送信元、FCS、必要なタグなどリンク層の形式を処理する
- PHY媒体の信号へ変換
銅線・光・無線の方式に従い、相手と同期してビットを送受信する
カード型でなくても、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」