概要
ネットワークスタック(Network Stack)は、OSI 参照モデルや TCP/IP モデルの階層を実装したソフトウェア群を指す。物理層(イーサネット)→ データリンク層(MAC)→ ネットワーク層(IP)→ トランスポート層(TCP/UDP)→ アプリケーション層(HTTP/DNS)まで、各層が連携してパケットを処理する。OS カーネルの中核機能で、Linux / Windows / macOS / BSD 各々が独自実装を持つ。2026 年現在、Linux は eBPF / XDP(Express Data Path)でカーネルバイパス高速化が主流、Windows 11 24H2+ は IPv6 ファースト + Wi-Fi 7 対応、macOS は Network Framework + privacy 強化が進行中。
OSI 参照モデル(7 層)
| 層 | 名前 | プロトコル例 |
|---|
| 7 | アプリケーション層 | HTTP / DNS / SMTP / SSH |
| 6 | プレゼンテーション層 | TLS / SSL / 文字コード変換 |
| 5 | セッション層 | NetBIOS / RPC / Sockets |
| 4 | トランスポート層 | TCP / UDP / QUIC / SCTP |
| 3 | ネットワーク層 | IP / ICMP / OSPF / BGP |
| 2 | データリンク層 | Ethernet / Wi-Fi / PPP |
| 1 | 物理層 | RJ45 / 光ファイバー / 電波 |
TCP/IP モデル(4 層、実装的)
| 層 | 名前 | OSI 対応 |
|---|
| 4 | アプリケーション層 | OSI 5-7 |
| 3 | トランスポート層 | OSI 4 |
| 2 | インターネット層 | OSI 3 |
| 1 | リンク層 | OSI 1-2 |
OS 別ネットワークスタック実装
Linux
| コンポーネント | 用途 |
|---|
| systemd-networkd | 設定管理、Ubuntu Server / Fedora 標準 |
| NetworkManager | デスクトップ Linux 向け、Wi-Fi GUI |
| nftables | パケットフィルタ(iptables 後継) |
| iproute2 | IP アドレス / ルーティング操作 |
| wpa_supplicant | Wi-Fi 認証 |
| eBPF / XDP | カーネルバイパス高速化 |
| Cilium | Kubernetes ネットワーキング、eBPF ベース |
| Calico | Kubernetes ネットワーキング |
| WireGuard | 次世代 VPN、カーネル統合 |
Windows
| コンポーネント | 用途 |
|---|
| Windows TCP/IP Stack | カーネルレベル、tcpip.sys |
| Windows Filtering Platform(WFP) | ファイアウォール基盤 |
| Wi-Fi Direct | P2P 通信 |
| Hyper-V Virtual Switch | 仮想ネットワーキング |
| WSL2 ネットワーク | Linux 互換(Hyper-V 経由) |
macOS
| コンポーネント | 用途 |
|---|
| Network Framework | Swift API、最新推奨 |
| BSD Sockets | 古い C API、互換性 |
| pf(packet filter) | ファイアウォール、BSD 由来 |
| Bonjour | ローカル mDNS / 自動検出 |
| iCloud Private Relay | Apple のプライバシー VPN |
Linux ネットワークスタックの主要操作
# IP アドレス確認
ip addr show
# ルーティング確認
ip route show
# ファイアウォール(nftables)
sudo nft list ruleset
sudo nft add rule inet filter input tcp dport 22 accept
# 接続状況確認
ss -tunap
# 経路追跡
mtr google.com
# パケットキャプチャ
sudo tcpdump -i eth0 port 443
eBPF / XDP(高速化技術)
// XDP プログラム例(C 言語、簡略版)
int xdp_drop_icmp(struct xdp_md *ctx) {
void *data = (void *)(long)ctx->data;
void *data_end = (void *)(long)ctx->data_end;
struct ethhdr *eth = data;
if (eth + 1 > data_end) return XDP_PASS;
struct iphdr *ip = (void *)(eth + 1);
if (ip + 1 > data_end) return XDP_PASS;
if (ip->protocol == IPPROTO_ICMP) return XDP_DROP;
return XDP_PASS;
}
XDP は NIC ドライバレベルでパケット処理、レイテンシ最小化(DDoS 対策 / Load Balancer)。
主要プロトコル(2026 年動向)
| プロトコル | 状況 |
|---|
| HTTP/3(QUIC) | 全主要ブラウザ対応、サイト 25%+ |
| TCP BBR3 | Linux Kernel 6.x、輻輳制御改善 |
| WireGuard | VPN 業界標準化、OS カーネル統合 |
| Wi-Fi 7(802.11be) | 商用展開、9.6 Gbps |
| Wi-Fi 8(802.11bn) | 規格策定中、2028-2030 |
| IPv6 | 普及率 50%+、米国 / 日本主導 |
| MPTCP | iOS / Android 対応、複数経路活用 |
| RDMA over Ethernet | データセンター高速化 |
PC 自作 / ホームネットワーク
- Wi-Fi 7 ルーター: ASUS ROG Rapture GT-BE98 / TP-Link Archer BE800
- 2.5GbE NIC: Intel I226-V 標準搭載マザボ多数
- 10GbE NAS: Synology DS923+ + 10GbE モジュール
- OPNsense / pfSense: 自作ファイアウォールルーター
- Tailscale / Headscale: 個人 WireGuard VPN メッシュ
関連用語との違い
| 用語 | 違い |
|---|
| プロトコル | 個別規約、ネットワークスタックは実装階層全体 |
| ネットワークドライバ | 物理 / リンク層、ネットワークスタックの最下層 |
| ソケット API | アプリ層インターフェース、ネットワークスタックの一部 |
| Service Mesh | Istio / Linkerd 等、ネットワークスタック上の抽象化 |
よくある質問
Q1: Linux で systemd-networkd と NetworkManager、どちらを使う?
A: サーバ / クラウド → systemd-networkd(軽量、宣言的)。デスクトップ → NetworkManager(GUI、Wi-Fi 自動切替)。Ubuntu Server 24.04+ は systemd-networkd 推奨化。
Q2: eBPF はどんな場面で必要?
A: 高負荷 Web サーバ / Kubernetes クラスタ / DDoS 対策 / 観測ツール(Cilium / Falco)。一般デスクトップでは不要、サーバ運用エンジニアの必須スキル。
Q3: WireGuard は OpenVPN を置き換える?
A: 部分的に。WireGuard は速度 + シンプルさで圧勝、OpenVPN は機能 + 既存資産で残存。新規構築は WireGuard 一択、既存運用は段階移行が王道。
まとめ
- OSI / TCP/IP の 階層を実装するソフトウェア群
- 2026 年は Linux が eBPF / XDP / WireGuard 統合 で高速化
- Wi-Fi 7 / HTTP/3 / IPv6 の 次世代プロトコル が普及加速