2017/11/07
佐々木 健
ネットワークの基本について学ぶ
第5回
RFC
この文書について
毎度おなじみ、日々のお菓子をめぐんでもらうた
めの勉強会です。いつもありがとうございます。
前回までは昔話が多かったのですが、今回は今の
話、ネットワーク関連機器界隈で今起きているイノ
ベーションの話、なんかができれば良いかな、と
思っています。
お願い
定時後の勉強会なので気楽に行きましょう。
飲食、雑談は自由にしてください。
みんなであれこれ雑談してくれるほうが私もおやつ
を食べやすいです。
わからないことがあったら遠慮せずに聞いてね。
#beginner-net-study というSlackチャンネルを
作ったので雑談に使ってくださいませ。
本日のタイムスケジュール(予定)
●
参加者の自己紹介(5分)
– 人数が少なかったら全員
– 人数が多かったら近くにいる5人に自己紹介
●
前回までのおさらい(5分)
●
本編(15分)
●
質疑(5分)
自己紹介
●
名前
●
所属
●
趣味
●
意気込み
●
ネタ
前回までのおさらい
RFC:791
INTERNET PROTOCOL
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Example Internet Datagram Header
差出元
宛先
RFC:8200
Internet Protocol, Version 6 (IPv6) Specifcation
3. IPv6 Header Format
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Traffic Class | Flow Label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Length | Next Header | Hop Limit |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Source Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Destination Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
差出元
宛先
こんなヘッダとして実装されている
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
TCP Header Format
RFC793
RFC 793 に書いてあること
2.10. Robustness Principle TCP
implementations will follow a general
principle of robustness: be conservative in
what you do, be liberal in what you accept
from others.
己のなすことには慎重たれ、 他人のなすことに
は寛容たれ
こんなヘッダとして実装されている
0 7 8 15 16 23 24 31
+--------+--------+--------+--------+
| Source | Destination |
| Port | Port |
+--------+--------+--------+--------+
| | |
| Length | Checksum |
+--------+--------+--------+--------+
|
| data octets ...
+---------------- ...
User Datagram Header Format
RFC768
3ページ!!
WELL KNOWN PORT NUNBERS
●
IANA(Internet Assigned Numbers Authority)が管理してい
る。
●
UNIX系OSでは /etc/services というファイルに記述されてい
る。
●
一般的に良く使われるポート番号
– TCP/22: SSH (リモート接続)
– TCP/25: SMTP (メール送信)
– TCP/80: HTTP (ウェブアクセス)
– UDP/123: NTP (時刻同期)
– TCP/443: HTTPS (セキュアなウェブアクセス)
本日の内容
●
RFC って何?
●
RFC の調べ方
●
RFC の読み方
●
RFC の作り方
●
RFC は絶対的なものか?
●
標準化の価値
●
Joke RFC
RFC って何?
●
インターネットで用いられるさまざまな技術の標準化
や運用に関する事項など幅広い情報共有を行うため
に公開される文書シリーズ。
●
50年近く(1969年〜)維持され続けている歴史書
●
書かれていること
– インターネットの様々な技術的仕様
– インターネットに係わるルール
– 良い知識、良い方法
– 遊び心に溢れるジョーク
RFC は何の略?
●
Request for Comments(リクエスト フォー コメンツ、略称:
RFC)
– 直訳すると「求むコメント」
– インターネット技術の研究開発は、 米国国防総省のARPA/DARPAが
資金援助を行い研究開発活動が推進されたために、 研究開発の結
果は、広く公開できないことになっていた。
– しかし、研究結果を公開し、インターネットに関わる人々に広くその
仕様を流布し 普及させることが重要。
– 「コメントを広く募集する」ための、ドキュメント であって、研究成果
を公開しているのではない、むしろ、研究成果をより良いもの にす
るために、外部からのコメントを募集するためのドキュメントであ
る、というトリック。
とりあえず読んでみる
https://tools.ietf.org/html/rfc1149
Google翻訳!!
Google翻訳は使えない??
●
概要、単語を知ることはできる。
●
母国語のほうが斜め読みの速度はあきらかに速
いはず。
●
昔のRFCは翻訳しにくい。
●
最近のRFCはわりと良い翻訳をしてくれる。
●
とはいえ、ちゃんと理解するには英語で読む必要
がある。
RFC1149って何?
●
1990年のエイプリルフールに発表されたジョーク
RFC。
●
伝書鳩を使ったIPのデータ転送を行なう方法
●
教養として知っておいて欲しいRFC
●
Wikipediaの解説がわかりやすい。
Wikimedia:Junge_Frau_mit_Taubenpost.jpg
Errata(修正)があるRFCもある
RFC1149のErrata
特別な考慮事項:
ミラーとの1回の衝突でそのキャリアが
100%損失するため、ポートミラーを鳥類
キャリアと一緒に使用しないでください。
- 研修員のメモ -
Windowsとの1回の衝突も同様です。
UpdateがあるRFCもある
RFC2549
RFC6214
Joke RFC 一覧
●
英語版のWikipediaを参照するのが一番楽
– https://en.wikipedia.org/wiki/April_Fools%27_
Day_Request_for_Comments
●
日本語版はない
●
Joke RFCはたいてい誰かが日本語訳をしてる。
– http://www.kt.rim.or.jp/~ksk/joke-RFC/index.ht
ml
– http://naglly.com/archives/2009/04/rfc.php
●
でも意外と新しいのはないのでうまく翻訳すれば
buzzるかもしれないよ。
嘘が本当になった例もある
Evil Bit
●
2003年のRFC3514
– IPv4ヘッダに使われていない領域が1ビットある
– このビットに1がセットされていれば、パケットは悪意を持っていると
する。
– 攻撃者がこの悪意のビットを立ててくれれば、安全なシステムは防衛
が可能になる。これで世界に平和が訪れる。すばらしい、実装しな
ければいけない。
●
RFC発表とほぼ同じぐらいのタイミングで、FreeBSDに実装さ
れる
– 他のソフトウェアにも続々と実装されてる
●
もちろん実際には無意味な仕様と実装なんだけどね
そろそろ役に立つ話も
●
RFC って何?
●
RFC の調べ方
●
RFC の読み方
●
RFC の作り方
●
RFC は絶対的なものか?
●
標準化の価値
●
Joke RFC
RFCの目次みたいなもの
●
STD-1
– 仕様
– https://tools.ietf.org/html/std1
●
FYI-1
– 標準化が目的でない情報提供が目的の文章。公式度が低い前提。
– https://tools.ietf.org/html/fyi1
●
BCP-1
– Best Current Practice。現時点での最良の実践
– https://tools.ietf.org/html/bcp1
ISOC-JP
●
https://www.isoc.jp
●
ISOC-JP は,ISOC の日本支部です.ISOC の理念
に従い,日本国内におけるインターネットの普及啓
蒙,日本の状況の海外発信といったアクティビティ
を中心に,ボランティアベースで活動を実施してい
ます.
ここで2015年に開催された
IETF勉強会の資料がとても良い!!
第1回IETF勉強会
●
https://www.isoc.jp/wiki.cgi?page=PreIETF
93
●
2015/11の横浜でのIETF開催に向けた第1回勉
強会
●
西塚さん、林さん、の「RFC/Internet-Draftの
読み方」の資料を見れば、RFCの読み方はざっく
りわかる。
調べ方、読み方の説明は以上!!
IETF報告会
●
IETF開催後に、IETFの動向を報告する回が開か
れている。
●
最新のは→IETF99報告会
– IPv6の標準化の話等はチェックしておきましょう。
標準化は何のため?
●
ネットワークはお互いが繋がらないと成りたたな
い。どうやって繋ぐかを決めておいて、みんなで
それを守るほうが良さそう。
●
良さげなことは共有したい。
●
機器を導入する側の視点に立つと、標準化され
ているものを選択したい。中身もわかるし、なに
かあったときに交換可能だから。
– 標準化された製品のほうが競争力が高くなる。
微妙な標準化もある
●
MessagePackの標準化
– 元々の作者じゃない人が標準化提案をしちゃったとい
う事案
●
OpenBSDのTheo de RaadtがIETFに対して激怒
– OpenSSLの脆弱性「Heartbreed」
– 誰からも必要とされない仕様がセキュリティホールの
元になった
The Internet is for Everyone
●
RFC3217
– https://tools.ietf.org/html/rfc3271
●
2002年にInternet Societyから出された文書
●
インターネットに関わる人が増えてきて、お金も沢山動く
ようになって、インターネットは誰の物か?、という議論
が盛んになったころに出された声明。
●
RFCを正しく理解するにはContext(文脈)を知っておくほう
が良いことが多い。歴史と一緒。
●
新し目のRFCではContextが省かれていることが多いので
行間を想像しつつ読むほうがより面白いよ。
質疑応答
次回予告
●
次に聞きたいネタはあるかしら?
– Ethernet
– ルーティング
– ネットワークプログラミング
– サーバハードウェア
– ネットワーク仮想化
– 機器管理
– 監視
– ICN(Information Centric Networking)
– IPv6

RFC 〜 ネットワーク勉強会