rfc 〜 ネットワーク勉強会
TRANSCRIPT
2017/11/07
佐々木 健
ネットワークの基本について学ぶ第5回RFC
この文書について
毎度おなじみ、日々のお菓子をめぐんでもらうための勉強会です。いつもありがとうございます。
前回までは昔話が多かったのですが、今回は今の話、ネットワーク関連機器界隈で今起きているイノベーションの話、なんかができれば良いかな、と思っています。
お願い
定時後の勉強会なので気楽に行きましょう。
飲食、雑談は自由にしてください。
みんなであれこれ雑談してくれるほうが私もおやつを食べやすいです。
わからないことがあったら遠慮せずに聞いてね。
#beginner-net-study というSlackチャンネルを作ったので雑談に使ってくださいませ。
本日のタイムスケジュール(予定)● 参加者の自己紹介(5分)
– 人数が少なかったら全員– 人数が多かったら近くにいる5人に自己紹介
● 前回までのおさらい(5分)● 本編(15分)● 質疑(5分)
自己紹介● 名前● 所属● 趣味● 意気込み● ネタ
前回までのおさらい
RFC:791INTERNET 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:8200Internet 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