回 4-1 道 4 ネットワークと暗号
OSI参照モデルは、
読み終えたら通信の
この頁の流れ
通信の
どの 層の 話か、 なぜ分けて 考えるのか
通信の
たとえば、
全部を
OSI参照モデルは どう 分かれているのか
OSI参照モデルは、
なぜ層に 分けるのか
層に
Oracle の
7 つの 層と、 それぞれの役割
7 つの層は、
| 番号 | 層 | 役割 | 例 |
|---|---|---|---|
| 7 | アプリケーション | 利用者が | HTTP、DNS |
| 6 | プレゼンテーション | データの表し方 | 文字コード |
| 5 | セッション | やり取りの | 接続の手順 |
| 4 | トランスポート | どの | TCP、UDP |
| 3 | ネットワーク | 別の | IP |
| 2 | データリンク | 直に | Ethernet |
| 1 | 物理 | 信号とケーブル | ケーブル、電波 |
4 層の
OSI参照モデルは、
下の
TCP/IP の 4 層とは どう 対応するのか
今のインターネットで使われているのは、TCP/IP の
| TCP/IP の層 | OSI の層 | 運ぶ単位 |
|---|---|---|
| アプリケーション | 5〜7 | メッセージ |
| トランスポート | 4 | セグメント |
| インターネット | 3 | パケット |
| リンク | 1〜2 | フレーム |
RFC 1122 は、
同じ
頭を 足して 包む、 カプセル化
送る
| 層 | 頭 | 大きさ |
|---|---|---|
| 4 | UDP | 8 バイト |
| 3 | IPv4 | 最小 20 バイト |
| 2 | Ethernet | 14 バイト |
UDP の
パケットとは何か
パケットは、ネットワークの上を
フレームは、
動かして確かめる
Python の struct は、! はネットワークの並び (ビッグエンディアン)、H はB は6s はhello を、
IP アドレスは、
動かす 頭を足して包む
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
データ 5
UDP 13
IP 33
Ethernet 47
00 00 5e 00 53 025 バイトの
IPv4 の0x45 は、17 は0x0800 は
次は
動かす 外側から剥がす
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
2層 00-00-5e-00-53-02
type 0800
3層 198.51.100.7
頭 20
proto 17
4層 port 9999
中身 b'hello'種類が
層の 前提が 崩れるとき
頭の
頭の 長さは 決まっていない
IPv4 の
動かす 頭の長さを決め打ちする
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
決め打ち (257, 256)
IHL 24 (50000, 9999)決め打ちの
1 枚に 入る 大きさには 上限がある
RFC 894 は、
動かす 頭の割合と上限
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
5 33 89.4% 入る
100 128 29.6% 入る
1472 1500 2.8% 入る
1473 1501 2.8% 入らない左から、
5 バイトの
崩れる
- 頭の
大きさは いつも 同じ。 IPv4 は オプションで伸びる - どんな
大きさでも 1 枚で送れる。 IP の 長さは 1500 バイトまで - 届いた
バイトは 全部が 中身。 短い フレームには 埋め草が付く
仕事で どう 切り分けるか
「つながらない」と
| 確かめる事 | 道具の例 | 主に見る層 |
|---|---|---|
| 相手の | ping | 3 |
| 窓口 (ポート) が | nc -vz 相手 443 | 4 |
| HTTP の | curl -I https://相手 | 7 |
ping は
切り分けの
- ping が
通り、 ポートに つながらない (Connection refused など ) なら、 4 層より 上を 疑う。 プログラムが 止まっているか、 別の ポートで 待っている - ポートには
つながり、HTTP が 500 番台を 返すなら、 7 層の プログラムの中を疑う - 名前で
呼ぶと失敗し、IP アドレスで呼ぶと 通るなら、 名前を引く DNS (7 層の 仕組み) を 疑う。 中身は 4-4 で扱う
この
関わる実例
症状が
Meta (Facebook) の 全面 停止 (2021年10月4日)
Meta の
切り離された DNS のサーバーは、
症状は
よくある問い
OSI参照モデルの 覚え方は ありますか
上の
OSI参照モデルと TCP/IP は、 どちらを 覚えれば よいですか
両方の
MAC アドレスと IP アドレスは 何が 違いますか
MAC アドレスは 2 層の
確認クイズ
答えだと
1 問目
OSI参照モデルの
2 問目
この
IPv4 の頭の形の大きさ
import struct
f = "!BBHHHBBH4s4s"
print(struct.calcsize(f))3 問目
あるサーバーに ping はnc -vz で 443 番につなぐと
4 問目
TCP/IP の
説明課題
次の
- データが
送られる とき、 層ごとに 何が 足され、 受ける 側で 何が起きるか - 「Web の
画面が 開かない」と 言われた とき、 どの 順で、 何を 確かめるか
自分の
この回の 先の一歩
サーバーや
もっと深く
この
一次資料
どれも 2026年10月27日に開いて、
- ISO/IEC 7498-1 1994 Information technology, Open Systems Interconnection, Basic Reference Model (ISO、英語)。1984 年の初版を
置き換えた 1994 年の版で、 実装の 仕様書ではないこと - X.200 Information technology, Open Systems Interconnection, Basic Reference Model (ITU-T、英語)。OSI の
基本参照モデルの勧告で、1994年7月1日に承認されたこと - OSI (開放型システム間相互接続) 参照モデル (Oracle、日本語)。7 つの層の
名前と 役割、 各層が 上の 層に サービスを行うこと - RFC 1122 Requirements for Internet Hosts, Communication Layers (IETF、英語)。4 つの層、
アプリケーション層が OSI の 上の 2 層を まとめる こと、 層の 分け方が 完全で ないこと、パケットとフレームの 呼び名、 ICMP が IP の 一部であること - RFC 791 Internet Protocol (IETF、英語)。IHL の
最小が 5 語である こと、 オプションの 1 と 0 - RFC 768 User Datagram Protocol (IETF、英語)。頭が
2 バイトの欄 4 つで、 IP の上で 17 番であること - RFC 894 A Standard for the Transmission of IP Datagrams over Ethernet Networks (IETF、英語)。種類の
値 0800、 データの 欄の 最小 46 バイトと 0 の 埋め草、 IP の 最大 1500 バイト - RFC 9542 IANA Considerations and IETF Protocol and Documentation Usage for IEEE 802 Parameters (IETF、英語)。MAC アドレスが 48 ビットで、
16 ビットの EtherType が その後に 来る こと、 説明用の MAC アドレス - EtherType (IEEE Registration Authority、英語)。EtherType が
中身の 読み方を 示し、 IEEE Std 802.3 の 3 章で定められていること - RFC 5737 IPv4 Address Blocks Reserved for Documentation (IETF、英語)。192.0.2.0/24 と
198.51.100.0/24 が 説明用であること - RFC 792 Internet Control Message Protocol (IETF、英語)。echo が 8 番、echo reply が 0 番であること
- More details about the October 4 outage (Meta Engineering、英語、2021年10月5日)。保守の
命令が 基幹の 網を 落としたこと、DNS のサーバーが BGP の 広告を 取り下げ、 動いていたのに 届かなくなったこと
