Old-School Networking / 2026 ・ No.02

いにしえのネットワーク入門

第2回 物理層 ── 0 と 1 が、電気と光と電波になる

公開

青い LAN ケーブルの先の、透明な RJ45 プラグを横から写した写真。プラグの中に、橙・緑・青・茶とその白の縞の8本の線が並び、先の金色の端子につながっている
LAN ケーブルの先の RJ45 プラグ。透明なプラグの中に、色の違う8本の線が並んでいます写真:Leon Brooks / Wikimedia Commons(Public domain、トリミング・縮小)

第1回では、1回の申請が 266 バイトのパケットになって運ばれるところを見ました。
今回はいちばん下の物理層です。あの 266 バイトが、ケーブルの上ではどんな姿をしているのか。
ビットを信号に変えるしくみ、LAN ケーブルと光ファイバーと Wi-Fi、ハブとスイッチ、そして「回線の速さ」の本当の意味を、計算と実測で確かめます。

一

266 バイトの、その下

新井物理層って、ケーブルの話ですよね。挿せば光るし、光れば動く。それ以上、何かあります?

古井では聞く。うちの回線は 1 ギガだ。申請ボタンは、10 メガの回線のときより何倍速い?

新井100倍……ですよね?

古井それを今日、測る。

全12回の路線図(いまここ:第2回)

1 全体図 2 物理層 3 データリンク層 4 IP アドレス 5 ルーター 6 TCP 7 UDP・ソケット 8 TLS 9 DNS 10 HTTP 11 開発者の網 12 切り分け いまここ 全体図 第1層 第2層 第3層 第4層 第5・6層 第7層 実践
  • ケーブルの上の姿 ── Wireshark に見えない前後のバイト、検査用の FCS を計算で確かめる
  • ビットを信号に ── 1 バイトの中のビットの送る順、10BASE-T・100BASE-TX・1000BASE-T の違い
  • 3つの通り道 ── LAN ケーブル(銅線)、光ファイバー(光)、Wi-Fi(電波)
  • 速さの本当の意味 ── 練習用ネットワークの「ケーブル」を 10 M・100 M・1 G に変えて測る
二

物理層の仕事

物理層の仕事は、ひとことで言えば0 と 1 を、相手に届く形の信号にすることです。銅線なら電圧、光ファイバーなら光の明るさ、Wi-Fi なら電波の変化。受け手は、その信号を決まった間隔で読み取って、0 と 1 に戻します。

そのために、物理層の規格は細かいところまで決めています。コネクターの形とピンの並び、ケーブルの種類と長さ、電圧や光の波長、1 ビットに何秒使うか、そして受け手がどうやって送り手と時計を合わせるか。逆に、物理層は中身を知りません。ビットが IP なのか JSON なのか、気にしないのです。

ここで単位を1つ。回線の速さは bps(bits per second、1秒に何ビット)で数えます。ファイルの大きさはバイトで数えるので、8 で割るのを忘れずに。1 Gbps の回線でも、1秒に運べるのは最大 125,000,000 バイト(約 125 MB)です。

POINT

物理層=ビットを信号に変えて運ぶ層。形・材料・電気や光の決まりを受け持ち、中身は見ない。速さは bps(ビット)で数え、バイトにするには 8 で割る。

三

ケーブルの上の1フレーム

第1回で Wireshark に見えた申請は 266 バイトでした。でもケーブルの上では、その前後にもう少し付いています。

第1回の 266 バイトは、ケーブルの上ではこうなる

プリアンブル 55 × 7 SFD d5 Wireshark に見える部分 02 00 00 00 01 01 … FCS ea 56 71 a2 休み (無信号) 第1回の 266 バイト フレーム(第2層)= 266 + FCS 4 = 270 バイト ケーブルの上では 7+1+266+4+12 = 290 バイトぶんの時間 合図と休みは、受け手が時計を合わせ、次と区切るためのもの 単位:バイト(図の幅は実際の比ではない)

先頭のプリアンブルは、0 と 1 が交互に並んだ 7 バイト(16 進数で 55)です。受け手はこれを聞いて、送り手の時計に合わせます。続く SFD(d5)が「ここからフレーム」の合図。最後の FCS は、途中で壊れていないかを確かめる 4 バイトの検査用の数で、CRC-32 という計算で作ります。フレームのあとには、最低 12 バイトぶんの休みを入れる決まりです。

FCS は、送る側の NIC(ネットワークの部品)が付け、受け取る側の NIC が確かめてから外すので、ふつう Wireshark には見えません。そこで、第1回の 266 バイトから実際に計算してみました。

# 第1回の 266 バイト(8番の申請)から、ケーブルの最後に付く FCS を計算する
>>> import zlib
>>> frame = bytes.fromhex('020000000101 0200000001100800 4500 …')  # 266 バイト
>>> hex(zlib.crc32(frame))
'0xa27156ea'
>>> fcs = zlib.crc32(frame).to_bytes(4, 'little')   # ケーブルには ea 56 71 a2 の順で付く
>>> hex(zlib.crc32(frame + fcs))
'0x2144df1c'   # 受け取った側の検算。壊れていなければ、いつもこの値
# 途中で 1 ビットだけ化けて、46851 が 56851 になったら……
>>> broken = frame.replace(b'46851', b'56851')
>>> hex(zlib.crc32(broken + fcs))
'0xce86b422'   # 値が合わない → このフレームは捨てられる(上の層には渡らない)

1 ビットでも化けると、検算の値が合わなくなり、そのフレームは黙って捨てられます。物理層とデータリンク層は「壊れたものを届けない」ところまでで、送り直しはしません。送り直すのは、第6回の TCP の仕事です。

第1回の14個のパケットバイト数
Wireshark に見えた合計1,333
短すぎる ARP 2個を最低の 60 バイトまで埋めた分+36
FCS(4 × 14)+56
プリアンブルと SFD(8 × 14)+112
休み(12 × 14)+168
ケーブルを使った時間(バイトぶん)1,705(見えた分の約 1.28 倍)
四

ビットを信号にする

ビットを信号にするとき、まず気をつけたいのが送る順です。Ethernet は、バイトは先頭から順に送りますが、1 バイトの中では小さい位のビットから送ります。SFD の d5 は 2 進数で 11010101 ですが、ケーブルには 1,0,1,0,1,0,1,1 の順で出ていきます。

SFD(d5)と宛先 MAC の 1 バイト目(02)の16ビット

d5(SFD) 02(宛先 MAC の先頭) 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 送る順 そのまま 1=高 0=低 マンチェスター 10BASE-T 1 バイトの中は小さい位から送る。マンチェスターは毎ビット真ん中で向きが変わる

1 を高、0 を低にするだけの「そのまま」の形だと、0 が長く続いたところで、受け手は何ビットぶん続いたのか数えにくくなります(時計がずれていく)。そこで 10BASE-T はマンチェスター符号を使い、毎ビットの真ん中で必ず向きを変えます。受け手はその変わり目で時計を合わせ直せます。そのかわり、信号は2倍の速さで変わることになります。

速い規格ほど、この工夫は凝っています。

規格速さ使う線信号の作り方
10BASE-T10 Mbps2ペア(送り・受け)マンチェスター符号
100BASE-TX(1995年)100 Mbps2ペア4ビットを5ビットに置きかえ(4B5B)、3段階の電圧(MLT-3)。125 M 回/秒
1000BASE-T(1999年)1 Gbps4ペアすべて、両方向に同時5段階の電圧(PAM-5)。1ペアあたり 125 M 回/秒
10GBASE-T(2006年)10 Gbps4ペアすべて16段階の電圧(PAM-16)。800 M 回/秒、誤り訂正つき

1000BASE-T が 100BASE-TX と同じ「1秒に1億2500万回」の変化で10倍速いのは、線を2倍(4ペア)にし、1回に運ぶ情報を増やし(5段階)、さらに同じペアで送りと受けを同時に行っているからです。自分の送った信号の跳ね返りを差し引く「エコー消去」という技で、これを可能にしています。

五

銅線:LAN ケーブル

いちばん身近な通り道は、LAN ケーブル(より対線)です。中には8本の銅線が入っていて、2本ずつより合わされた4つのペアになっています。

RJ45 の8本(T568B の色)と、規格ごとに使うペア

1 2 3 4 5 6 7 8 100BASE-TX 送る 受け取る 1000BASE-T ⇄ ⇄ ⇄ ⇄ 2本ずつよってある。同じ雑音が2本に乗り、差をとると消える 1000BASE-T は4ペア全部で、送りと受けを同時に(エコー消去) 1本でも切れると、100 Mbps に落ちることがある

なぜよるのか。2本の線に「プラス」と「マイナス」の逆向きの信号を流し、受け手は2本の差を読みます。外から雑音が来ると、よってある2本には同じように乗るので、差をとると消えます。よりの細かさ(とシールド)の違いが、ケーブルの「カテゴリ」の違いです。

カテゴリ主な用途長さの目安
Cat5e1000BASE-T、2.5G・5GBASE-T(2016年)100 m
Cat6上と同じ。10GBASE-T は短ければ100 m(10G は 55 m まで)
Cat6A10GBASE-T100 m
Cat825G・40GBASE-T(データセンターの中)30 m

家やオフィスなら、いま買うなら Cat6A を選んでおけば困りません。どのカテゴリも、つなげる長さは100 m までが基本です。それより遠くへは、次の光ファイバーを使います。

六

光:光ファイバー

光ファイバーは、髪の毛ほどのガラスの中に光を閉じこめて運びます。電気を使わないので雑音に強く、遠くまで届きます。建物と建物、データセンターの中、海の底のケーブルまで、長い距離はほとんど光です。

黒い背景の上に、黄色と橙色の光ファイバーのケーブルが丸めて置かれている。どちらも両端に青やベージュの小さな四角い LC コネクターが2つずつ付いている
光ファイバーのケーブル。黄色がシングルモード、橙色がマルチモード。端の小さな四角いものが LC コネクター写真:Christophe Finot / Wikimedia Commons(CC BY-SA 3.0、トリミング・縮小)
種類ケーブルの色(よくある例)届く距離(1 Gbps の例)
マルチモード(光の通り道が太い)橙(OM1・OM2)、水色(OM3・OM4)1000BASE-SX で 220〜550 m
シングルモード(光の通り道が細い)黄色1000BASE-LX で 5 km

スイッチの側では、SFP という差しかえ式の部品で光と電気を変換します。同じスイッチでも、挿す SFP を変えれば、マルチモードにもシングルモードにも、銅線にもつなげます。

銀色の細長い金属の部品(SFP+ モジュール)。ラベルに LR-LINK、10G/850nm/MM/300M と書かれ、手前の黒い口に光ファイバーを2本挿す
スイッチの口に挿して光ファイバーをつなぐ SFP+ モジュール。ラベルの 10G/850nm/MM/300M は「10 Gbps・波長 850 nm・マルチモード・300 m まで」写真:Dmitry Nosachev / Wikimedia Commons(CC BY-SA 4.0、トリミング・縮小)

ガラスの中の光は、真空の約3分の2の速さで進みます。1 km 進むのに約 5 マイクロ秒。この数字は、九でもう一度使います。

七

電波:Wi-Fi

Wi-Fi は、電波でビットを運ぶ物理層です(データリンク層の決まりも一緒に IEEE 802.11 で決めています)。世代ごとに、こう速くなってきました。

呼び名規格周波数規格上の最大
Wi-Fi 4802.11n2.4・5 GHz600 Mbps
Wi-Fi 5802.11ac5 GHz6.9 Gbps
Wi-Fi 6/6E802.11ax2.4・5 GHz(6E は 6 GHz も)9.6 Gbps
Wi-Fi 7802.11be2.4・5・6 GHz約 23 Gbps

日本では 2022年9月2日から、6 GHz 帯のうち 5925〜6425 MHz が無線 LAN に使えるようになりました。Wi-Fi 7 の認証は 2024年1月に始まっています。

ただし、表の数字は「条件がすべてそろったときの理論上の最大」です。電波は空中をみんなで分け合うので、同時には1台しか話せません(半二重)。壁や距離で弱まり、隣の家の Wi-Fi ともぶつかります。速さが大事な機械や、デスクに据えた PC は、ケーブルでつなぐのがいちばん確実です。

八

ハブとスイッチ

ケーブルを何本もまとめる箱には、2種類あります。古いハブは、ある口に来た信号を、ほかの全部の口にそのまま流す、物理層の機械です。

クリーム色の古いハブを前後から写した2枚の写真。左は RJ45 の口が8つ並んだ面、右は 10BASE2 の丸い同軸の口と 10BASE5 の台形の口がある面で、BUFFALO SPORTS HUB LHB-8L と書かれている
1994年ごろの8口のハブ(メルコの LHB-8L)。左が 10BASE-T の口、右が同軸ケーブル用の 10BASE2 と 10BASE5 の口。2枚の写真を左右に並べました写真:Asanagi / Wikimedia Commons(CC0、トリミング・縮小)

ハブにつながった機械は、1本の線を全員で分け合っているのと同じです。2台が同時に送ると信号がぶつかる(衝突)ので、送る前に線が空いているか聞き、ぶつかったら少し待って送り直す、という決まり(CSMA/CD)で譲り合っていました。

ハブは全員で分け合う、スイッチは口ごとに専用の道

ハブ 全員に流す A B C D ✕ 同時に送るとぶつかる(半二重) スイッチ 宛先の口だけ A B C D 口ごとに、送りと受けが同時(全二重)

いまのスイッチは、宛先の MAC アドレスを見て、その相手がいる口にだけ流します(第3回でくわしく)。口ごとに道が分かれているので、ぶつかりません。送りと受けを同時に行う全二重が当たり前になり、衝突の心配はほぼ過去のものになりました。

青い金属の箱の5口のスイッチ(Netgear のギガビットスイッチ)。黄色と赤のケーブルが挿さり、赤のケーブルの口の上のランプが緑に光っている
5口のスイッチ。赤いケーブルの上のランプが、つながっている(リンクしている)しるし。黄色のケーブルの先は何にもつながっていないので、ランプは消えています写真:Simon A. Eugster / Wikimedia Commons(CC BY-SA 3.0、トリミング・縮小)

口の上のランプは、物理層の「つながっている」のしるしです(リンク)。ケーブルを挿すと、両端の機械は自分の使える速さと方式を教え合い(オートネゴシエーション)、いちばん速い組み合わせを選びます。だから、ランプが点くのに少し時間がかかります。

新井ハブって、聞いたことはあるけど見たことないです。

古井わたしの若いころは、どこの事務所にもあった。誰かが大きなファイルを送ると、フロア全体が遅くなる。いにしえの「みんなのケーブル」だ。

九

太さと長さ

冒頭の問いに戻ります。1 Gbps の回線は、10 Mbps より何倍速いのか。第1回の練習用ネットワークで、ルーターの両側に「1秒に何ビットまで」の栓をして、ケーブルの速さを 10 M・100 M・1 G に変えて測りました(Linux の tc という機能です)。

# ルーターの両側の口に「1秒に 10 メガビットまで」の栓をする(tbf)
$ tc qdisc add dev lan0 root tbf rate 10mbit burst 15kb latency 100ms
$ tc qdisc add dev wan0 root tbf rate 10mbit burst 15kb latency 100ms
# 100 Mbps、1 Gbps も同じように。外せば元に戻る

測ったのは2つ。500 万バイトのファイルのダウンロードと、第1回と同じ1回の申請(POST)です。

実測:ケーブルの速さを変えたとき

500 万バイトのダウンロード(3回の中央値) 10 Mbps 4.175 秒 100 Mbps 0.416 秒 1 Gbps 0.042 秒 1回の申請 POST(31回の中央値) 10 Mbps 1.21 ミリ秒 100 Mbps 1.07 ミリ秒 1 Gbps 1.03 ミリ秒 100倍にすると、大きな転送は100倍速い。小さな申請はほとんど変わらない

大きなダウンロードは、速さに比例して 4.175 秒 → 0.416 秒 → 0.042 秒と、ちょうど100倍速くなりました(実際に出た速さは 9.6・96.3・951.2 Mbps。見出しの分だけ、回線の速さより少し下がります)。ところが申請のほうは 1.21 → 1.07 → 1.03 ミリ秒で、1.2倍にしかなりません。266 バイトは、10 Mbps でも 0.2 ミリ秒ほどで流れ切ってしまうからです。

回線の「速さ」には2つの意味がある

太さ=帯域 長さ=遅延 1秒に何ビット流せるか(bps) 大きなファイルの時間を決める 最初のビットが着くまでの時間 光ファイバーで 1 km ≈ 5 マイクロ秒 帯域はお金で太くできるが、光の速さは変えられない 小さな API 呼び出しの速さは、たいてい「長さ」で決まる

回線の速さには、太さ(帯域)と長さ(遅延)の2つがあります。この練習用ネットワークは1台の機械の中なので「長さ」がほぼ 0 ですが、本物のネットワークでは、光が進む時間だけでもこれだけかかります(光ファイバーで 1 km あたり約 5 マイクロ秒として計算した、理論上の下限)。

東京から(直線距離)片道1往復申請に要る3往復(DNS・TCP・HTTP)
大阪(約 400 km)2 ms4 ms12 ms
シンガポール(約 5,300 km)27 ms53 ms159 ms
ニューヨーク(約 10,800 km)54 ms108 ms324 ms

実際のケーブルはまっすぐではなく、途中のルーターでも待つので、本当の値はこれより大きくなります。どれだけ回線を太くしても、光の速さは変わりません。小さな API 呼び出しを速くしたければ、往復の回数を減らすか、サーバーを近くに置く。バックエンドを作るときに効いてくる考え方です。

ちなみに、第1回からの練習用ネットワークの「ケーブル」を調べると、こう名乗りました。

# 第1回の練習用ネットワークの PC 側の「ケーブル」を ethtool で見る
$ ethtool eth0
    Speed: 10000Mb/s
    Duplex: Full
    Auto-negotiation: off
    Port: Twisted Pair
    Link detected: yes
$ ethtool -i eth0
    driver: veth
# veth=ソフトウェアの中だけの仮想のケーブル。速さも「より対線」も名目

新井「より対線、10 ギガ」って言ってますけど……。

古井ソフトウェアの中だけの、仮想のケーブルだ。銅も光もない。だから今回は、栓をして本物らしくした。測るときは、測っているものが本物かどうかも確かめる。

十

自分の PC で確かめる

自分の PC がどの速さでつながっているかは、こうして見られます。

有線(LAN ケーブル)Wi-Fi
Macifconfig の media: の行option キーを押しながらメニューバーの Wi-Fi のアイコン(Tx Rate)
WindowsPowerShell の Get-NetAdapter(LinkSpeed)netsh wlan show interfaces
Linuxethtool eth0(Speed・Duplex)iw dev wlan0 link

物理層の故障は、ほかの層からは「なんとなく遅い」「ときどき切れる」に見えます。よくあるものを並べておきます。

症状よくある原因確かめ方
ランプが点かないケーブルの断線、挿し込みが浅い、相手の電源別のケーブル・別の口で試す
1 Gbps のはずが 100 Mbps8本のうちどれかが切れている、古い Cat5 のケーブル上の表でリンクの速さを見る。ケーブルを替える
ときどき遅い・切れるケーブルの傷みや雑音で FCS の合わないフレームが捨てられているethtool -S や netstat -i のエラーの数
Wi-Fi だけ遅い距離・壁・混雑(周りの Wi-Fi)近くで測る、5 GHz・6 GHz に変える、有線と比べる
POINT

「つながらない」ときは、まずランプとリンクの速さ。物理層が怪しいかどうかは、ケーブルを1本替えるだけで分かることが多い(第12回でまとめます)。

結 — 一枚まとめと、次回

  1. 物理層はビットを信号にして運ぶ。中身は見ない。速さは bps、バイトにするには 8 で割る。
  2. ケーブルの上では、266 バイトの前にプリアンブルと SFD、後に FCS と休みが付き、290 バイトぶんの時間を使う。
  3. FCS(CRC-32)が合わないフレームは黙って捨てられる。送り直しは TCP の仕事。
  4. 1 バイトの中は小さい位から送る。速い規格ほど、線を増やし、段階を増やし、同時に送り受けする。
  5. LAN ケーブルはより対線で 100 m まで、遠くは光ファイバー、Wi-Fi は分け合う電波。
  6. ハブは全員で分け合い、スイッチは口ごとに全二重。
  7. 回線を100倍にすると、大きな転送は100倍速く、小さな申請は1.2倍。小さな通信の速さは「長さ(遅延)」で決まる。

新井1.2倍……。ギガの回線にしたら、全部100倍速くなるんだと思ってました。

古井太い道でも、遠ければ時間はかかる。次はそのフレームの宛名、MAC アドレスとスイッチの話だ。第1回で、PC が最初に「全員に」尋ねていたのを覚えているか?

参考

FCS は第1回の記録(申請のパケット 266 バイト)から Python の zlib.crc32 で計算した値です。速さの実測は、第1回と同じクラウド上の練習用ネットワーク(Linux のネットワーク名前空間)で、ルーターの両側の口に tc の tbf で上限を掛けて、2026年10月24日に curl で行いました(ダウンロードは3回、申請は31回の中央値)。仮想のケーブルの上での測定なので、本物のケーブルの信号は通っていません。距離ごとの遅延は、光ファイバーの中の光の速さから計算した理論上の下限です。写真は Wikimedia Commons のもので、作者とライセンスを各写真の下に記しました。登場人物は架空の人物です。

いにしえのネットワーク入門 第2回 — 物理層 / 2026.10

← 記事一覧へ