初級ではNICを「信号の翻訳係」と捉えました。中級では、MACアドレスによる住所付け・フレーム化・リンクの取り決めを見ます。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
これは何をする係?
NICは、デジタルと物理信号の境目であると同時に、L2(データリンク層)の住所付けを担います。0と1のデータを電気や電波の信号に変えるだけでなく、「近くの機器の中でどれに届けるか」を決めるのがMACアドレスです。
- 信号変換 — データ↔電気/電波の信号
- 住所付け — 送信元と宛先をMACアドレスで示す
- フレーム化 — データを送受信できる単位にまとめる
アニメーション『NIC(デジタル↔信号の変換)』を開く
登場人物メモ:
- ※1 MACアドレス — NICごとに割り当てられた48ビットの固有番号。同じネットワーク内で機器を見分ける
- ※2 フレーム — 宛先MAC・送信元MACとデータをまとめたL2の送受信単位
この部分をもっと深く(上級)
中級の「宛先MAC・送信元MAC+データ」を、上級ではフレームの構造と末尾の誤り検出まで下ろします。
- 送信するデータの前にヘッダ(宛先MAC※1・送信元MAC・種別)を、後ろにFCS※2 を付けてフレームの形にする
- 宛先MACには、その回線に1台へ届けるユニキャストのほか、全員宛のブロードキャスト、特定グループ宛のマルチキャストがある
- 受信側NICは、まず宛先MACが自分宛(またはブロードキャスト等)かを見て、無関係なフレームはMAC層で捨てる
- 自分宛ならFCSを再計算して照合し、壊れていれば黙って破棄する。訂正はせず、再送は上位(TCP)に委ねる
登場人物メモ(※の説明):
- ※1 宛先MAC — 48ビットの機器固有番号。先頭側にベンダー識別子(OUI)を含み、同じ回線内で「どれに渡すか」を一意に指す
- ※2 FCS — Frame Check Sequence。フレーム全体から計算したCRC値。受信側で再計算して一致を見る、誤り検出専用の番人(訂正はしない)
⚠️ イレギュラー(正常系との違いが学びどころ):
- 無差別モード(プロミスキャス) — 通常は自分宛以外を捨てるが、この設定にすると全フレームを取り込む。パケットキャプチャはこれを使う
- 壊れたフレーム — FCS不一致は破棄されるだけで、送信元は「届かなかった」ことをここでは知らない。気づくのは上位の再送タイマ
やさしく言うと(初級)
コンピュータが扱うのは0と1のデータ。でも、ケーブルや電波を流れるのは電気や電波の信号です。この間を変換するのがNICの仕事。
- 送るとき — データを、ケーブルや電波に乗る信号に変える
- 受けるとき — 届いた信号を、データに戻す
いわば、通信の出入口の翻訳係です。

アニメーション『NIC(デジタル↔信号の変換)』を開く
登場人物メモ:
- ※1 MACアドレス — NICが持つ機器固有の番号。近くの機器の中で「どれか」を見分ける
有線用と無線用
- 有線NIC — LANケーブルの口を持ち、Ethernet(イーサネット)の規格で電気信号をやり取り
- 無線NIC(Wi-Fi) — アンテナを持ち、電波でやり取り
- フレームを組む — データに宛先MACと送信元MACを付け、送信できる形にする
- リンクを合わせる — オートネゴシエーションで速度(1Gbpsなど)と全二重かを相手とすり合わせる
送信時はデータをフレームに包み、受信時は宛先MACが自分宛かを見て、自分宛だけを取り込みます。
この部分をもっと深く(上級)
届いたフレームをどうやってCPUのメモリに載せ、CPUへ知らせるか。ここが受信性能の心臓部です。
- NICは受信フレームを、DMA※1 でCPUを介さず直接メインメモリへ書き込む。書き込む先はあらかじめOSが用意したリングバッファ※2 の空きスロット
- 置き終えたらNICは割り込み※3 でCPUに「届いた」と知らせる
- CPUは割り込みハンドラで、リングバッファに溜まったフレームを取り出し、上位(IPスタック)へ渡す
- 取り出して空いたスロットは、次の受信のためにNICへ返却(補充)する。リングは使い回される輪
登場人物メモ(※の説明):
- ※1 DMA — Direct Memory Access。周辺機器がCPUを介さずメモリを読み書きする仕組み。CPUはコピー作業から解放される
- ※2 リングバッファ — 受信用スロットを環状に並べた領域(ディスクリプタの列)。先頭と末尾を追いかけっこさせて、コピーなしで受け渡す
- ※3 割り込み — 機器がCPUの今の処理に割り込んで通知するハードの仕組み。応答は速いが、出入りに段取りコストがかかる
⚠️ イレギュラー(速さが仇になる):
- 割り込みライブロック — 高速回線で毎パケット割り込むと、割り込み処理の段取りだけでCPUが埋まり、実処理が進まない
- ポーリングへの切替(NAPI) — 最初の1回を割り込みのきっかけにし、以降は割り込みを止めてまとめて刈り取る折衷。低負荷では割り込みの速さ、高負荷ではポーリングの効率を取る
- リング溢れ — 取り出しが追いつかないとスロットが尽き、以降のフレームはNICで取りこぼす(ドロップカウンタが増える)
やさしく言うと(初級)
- 有線NIC — LANケーブルを挿す口を持ち、電気信号でやり取り
- 無線NIC(Wi-Fi) — アンテナを持ち、電波(電磁波)でやり取り
スマホやノートPCは、無線NICを内蔵しています。
MACアドレスとIPアドレス
住所が2種類あるように見えて、役割が違います。
- MACアドレス — 機器そのものに付いた固有の番号(近所での見分け・L2)
- IPアドレス — ネット上の住所(遠くまで届けるための宛先・L3)
- 全二重 — 送信と受信を同時に行える方式。今の有線Ethernetでは標準
- オフロード — チェックサム計算などをNIC側で肩代わりし、CPUの負担を減らす機能
- ドライバ — NICをOSから使えるようにする橋渡しのソフト
近くではMAC、遠くへはIP、と使い分けられます。IPで最終目的地を、MACで次に渡す隣の機器を示す、という重ね方です。
この部分をもっと深く(上級)
CPUの負担を下げるため、定型作業をNIC側の回路に肩代わりさせます。これがオフロードです。
- チェックサムオフロード — IP/TCPのチェックサム計算・検証をNICが行う。CPUは全バイトを舐めずに済む
- TSO/LRO — 送信時、大きな塊をNICがMTU※1 サイズのフレーム群へ分割するのがTSO。受信時、細切れフレームをNICが1つの大きな塊へ束ねて渡すのがLRO。どちらも1パケットあたりのCPU手間を減らす
- 受信側スケーリング(RSS) — 複数のリングバッファを用意し、フローごとに別々のCPUコアへ割り当てて並列に処理する。1コアが受信で飽和するのを防ぐ
登場人物メモ(※の説明):
- ※1 MTU — Maximum Transmission Unit。1フレームに載せられる最大サイズ。イーサネットは標準1500バイト。これを超えるデータは複数フレームに刻む必要がある
⚠️ イレギュラー(肩代わりの副作用):
- キャプチャが嘘をつく — チェックサムはNICが送出直前に埋めるため、手前で覗くツールには「未計算=不正」に見える。実回線上は正しい
- LROとルーティングの相性 — 受信で束ねてしまうと、そのまま転送する機器では都合が悪いことがある(束ねた塊をまた刻み直す羽目になる)
- オフロードのバグ — 特定のNIC・ドライバでオフロードが誤動作すると、原因が上位ソフトに見えて切り分けが難しい。疑うときは一時的に無効化して比較する
やさしく言うと(初級)
住所が2種類あるように見えて、役割が違います。
- MACアドレス — 機器そのものに付いた固有の番号(近所での見分け)
- IPアドレス — ネット上の住所(遠くまで届けるための宛先)
近くではMAC、遠くへはIP、と使い分けられます。
⚠️ うまくいかないとき
- ドライバの不調 — NICを動かすソフト(ドライバ)が古い・壊れている
- オートネゴシエーションの失敗 — 速度や全二重が合わず、遅い・不安定になる
- 無効化されている — 設定でNICがオフ
- 相性・故障 — 有線が挿さっているのに認識しない、など
この部分をもっと深く(上級)
受信の内部が見えると、次のような詰まりどころが同じ絵の上で読めます。
- 割り込み過多を見落とす — 高速回線ほど毎パケット割り込みが害になる。NAPI/割り込み合体(interrupt coalescing)で通知をまとめるのが定石
- コピーコストの軽視 — DMAでメモリには載っても、そこから上位へ何度もコピーするとCPUを食う。ゼロコピー系の工夫はこの重複コピーを削る
- オフロード副作用の誤診 — チェックサム不正表示やLROの束ねを「異常」と早合点しない。切り分けは一時無効化して比較する
- リングサイズの当てずっぽう — 溢れて取りこぼすなら増やす、というだけでなく、大きすぎれば遅延(バッファ膨張)を招く。捨てている数(ドロップ)を見て釣り合わせる
- 「NICは速いから大丈夫」という過信 — 物理速度が出ても、割り込み・コピー・1コア集中がボトルネックになれば実効速度は伸びない。速さは回線だけでなく受け渡しの設計で決まる
まとめ——NICの中では、フレーム(宛先判定とFCS)/DMAとリングバッファ(どうメモリへ載せCPUへ渡すか)/割り込みとポーリング(いつ知らせるか)/オフロード(何を肩代わりさせるか)/PHYとMAC(信号とフレームの分業)という何段もの受け渡しが連なっています。速さも、CPU負荷も、そして調査時の勘違いも、すべてこの受け渡しの上で起きている——ここまで見えれば、スイッチ・ルータ・高速サーバの通信設計は、同じ受け渡しをどこで束ね、どこへ分散するかの応用として読めるようになります。
やさしく言うと(初級)
- ドライバの不調 — NICを動かすソフト(ドライバ)の問題
- 無効化されている — 設定でNICがオフ
- 相性・故障 — 有線が挿さっているのに認識しない、など
関連する知識
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. 送信と受信を同時に行える通信方式を何と呼ぶ?
問2. NICとリンク相手が速度や全二重かを自動ですり合わせる仕組みは?
問3. NICが送信時にデータを包む「宛先MAC・送信元MAC+データ」の単位を何という?
問4. MACアドレスは何ビットの番号?
問5. MACアドレスとIPアドレスの役割の違いとして正しいのは?
問6. 受信したフレームのうち「自分宛だけを取り込む」ために、NICが照合するのは?
問7. NICをOSから使えるようにする橋渡しのソフトを何と呼ぶ?(カタカナ)
問8. チェックサム計算などをNIC側で肩代わりし、CPUの負担を減らす機能を何と呼ぶ?(カタカナ)