36
2017/11/07 佐々木 健 ネットワークの基本について学ぶ 第5回 RFC

RFC 〜 ネットワーク勉強会

Embed Size (px)

Citation preview

Page 1: RFC 〜 ネットワーク勉強会

2017/11/07

佐々木 健

ネットワークの基本について学ぶ第5回RFC

Page 2: RFC 〜 ネットワーク勉強会

この文書について

毎度おなじみ、日々のお菓子をめぐんでもらうための勉強会です。いつもありがとうございます。

前回までは昔話が多かったのですが、今回は今の話、ネットワーク関連機器界隈で今起きているイノベーションの話、なんかができれば良いかな、と思っています。

Page 3: RFC 〜 ネットワーク勉強会

お願い

定時後の勉強会なので気楽に行きましょう。

飲食、雑談は自由にしてください。

みんなであれこれ雑談してくれるほうが私もおやつを食べやすいです。

わからないことがあったら遠慮せずに聞いてね。

#beginner-net-study というSlackチャンネルを作ったので雑談に使ってくださいませ。

Page 4: RFC 〜 ネットワーク勉強会

本日のタイムスケジュール(予定)● 参加者の自己紹介(5分)

– 人数が少なかったら全員– 人数が多かったら近くにいる5人に自己紹介

● 前回までのおさらい(5分)● 本編(15分)● 質疑(5分)

Page 5: RFC 〜 ネットワーク勉強会

自己紹介● 名前● 所属● 趣味● 意気込み● ネタ

Page 6: RFC 〜 ネットワーク勉強会

前回までのおさらい

Page 7: RFC 〜 ネットワーク勉強会

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

差出元

宛先

Page 8: RFC 〜 ネットワーク勉強会

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 +

| |

+ +

| |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

差出元

宛先

Page 9: RFC 〜 ネットワーク勉強会

こんなヘッダとして実装されている 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

Page 10: RFC 〜 ネットワーク勉強会

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.

己のなすことには慎重たれ、 他人のなすことには寛容たれ

Page 11: RFC 〜 ネットワーク勉強会

こんなヘッダとして実装されている 0 7 8 15 16 23 24 31

+--------+--------+--------+--------+

| Source | Destination |

| Port | Port |

+--------+--------+--------+--------+

| | |

| Length | Checksum |

+--------+--------+--------+--------+

|

| data octets ...

+---------------- ...

User Datagram Header Format

RFC768

3ページ!!

Page 12: RFC 〜 ネットワーク勉強会

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 (セキュアなウェブアクセス)

Page 13: RFC 〜 ネットワーク勉強会

本日の内容● RFC って何?● RFC の調べ方● RFC の読み方● RFC の作り方● RFC は絶対的なものか?● 標準化の価値● Joke RFC

Page 14: RFC 〜 ネットワーク勉強会

RFC って何?● インターネットで用いられるさまざまな技術の標準化

や運用に関する事項など幅広い情報共有を行うために公開される文書シリーズ。

● 50年近く(1969年〜)維持され続けている歴史書● 書かれていること

– インターネットの様々な技術的仕様– インターネットに係わるルール– 良い知識、良い方法– 遊び心に溢れるジョーク

Page 15: RFC 〜 ネットワーク勉強会

RFC は何の略?● Request for Comments(リクエスト フォー コメンツ、略称:

RFC)– 直訳すると「求むコメント」– インターネット技術の研究開発は、 米国国防総省のARPA/DARPAが資金援助を行い研究開発活動が推進されたために、 研究開発の結果は、広く公開できないことになっていた。

– しかし、研究結果を公開し、インターネットに関わる人々に広くその仕様を流布し 普及させることが重要。

– 「コメントを広く募集する」ための、ドキュメント であって、研究成果を公開しているのではない、むしろ、研究成果をより良いもの にするために、外部からのコメントを募集するためのドキュメントである、というトリック。

Page 16: RFC 〜 ネットワーク勉強会

とりあえず読んでみるhttps://tools.ietf.org/html/rfc1149

Page 17: RFC 〜 ネットワーク勉強会

Google翻訳!!

Page 18: RFC 〜 ネットワーク勉強会

Google翻訳は使えない??● 概要、単語を知ることはできる。● 母国語のほうが斜め読みの速度はあきらかに速

いはず。● 昔のRFCは翻訳しにくい。● 最近のRFCはわりと良い翻訳をしてくれる。● とはいえ、ちゃんと理解するには英語で読む必要

がある。

Page 19: RFC 〜 ネットワーク勉強会

RFC1149って何?● 1990年のエイプリルフールに発表されたジョーク

RFC。● 伝書鳩を使ったIPのデータ転送を行なう方法● 教養として知っておいて欲しいRFC● Wikipediaの解説がわかりやすい。

Wikimedia:Junge_Frau_mit_Taubenpost.jpg

Page 20: RFC 〜 ネットワーク勉強会

Errata(修正)があるRFCもある

Page 21: RFC 〜 ネットワーク勉強会

RFC1149のErrata

特別な考慮事項:ミラーとの1回の衝突でそのキャリアが100%損失するため、ポートミラーを鳥類キャリアと一緒に使用しないでください。- 研修員のメモ -Windowsとの1回の衝突も同様です。

Page 22: RFC 〜 ネットワーク勉強会

UpdateがあるRFCもある

Page 23: RFC 〜 ネットワーク勉強会

RFC2549

Page 24: RFC 〜 ネットワーク勉強会

RFC6214

Page 25: RFC 〜 ネットワーク勉強会

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るかもしれないよ。

Page 26: RFC 〜 ネットワーク勉強会

嘘が本当になった例もあるEvil Bit

● 2003年のRFC3514– IPv4ヘッダに使われていない領域が1ビットある– このビットに1がセットされていれば、パケットは悪意を持っていると

する。– 攻撃者がこの悪意のビットを立ててくれれば、安全なシステムは防衛

が可能になる。これで世界に平和が訪れる。すばらしい、実装しなければいけない。

● RFC発表とほぼ同じぐらいのタイミングで、FreeBSDに実装される– 他のソフトウェアにも続々と実装されてる

● もちろん実際には無意味な仕様と実装なんだけどね

Page 27: RFC 〜 ネットワーク勉強会

そろそろ役に立つ話も● RFC って何?● RFC の調べ方● RFC の読み方● RFC の作り方● RFC は絶対的なものか?● 標準化の価値● Joke RFC

Page 28: 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

Page 29: RFC 〜 ネットワーク勉強会

ISOC-JP● https://www.isoc.jp● ISOC-JP は,ISOC の日本支部です.ISOC の理念

に従い,日本国内におけるインターネットの普及啓蒙,日本の状況の海外発信といったアクティビティを中心に,ボランティアベースで活動を実施しています.

ここで2015年に開催された

IETF勉強会の資料がとても良い!!

Page 30: RFC 〜 ネットワーク勉強会

第1回IETF勉強会● https://www.isoc.jp/wiki.cgi?page=PreIETF

93● 2015/11の横浜でのIETF開催に向けた第1回勉

強会● 西塚さん、林さん、の「RFC/Internet-Draftの読み方」の資料を見れば、RFCの読み方はざっくりわかる。

調べ方、読み方の説明は以上!!

Page 31: RFC 〜 ネットワーク勉強会

IETF報告会● IETF開催後に、IETFの動向を報告する回が開か

れている。● 最新のは→IETF99報告会

– IPv6の標準化の話等はチェックしておきましょう。

Page 32: RFC 〜 ネットワーク勉強会

標準化は何のため?● ネットワークはお互いが繋がらないと成りたたな

い。どうやって繋ぐかを決めておいて、みんなでそれを守るほうが良さそう。

● 良さげなことは共有したい。● 機器を導入する側の視点に立つと、標準化され

ているものを選択したい。中身もわかるし、なにかあったときに交換可能だから。– 標準化された製品のほうが競争力が高くなる。

Page 33: RFC 〜 ネットワーク勉強会

微妙な標準化もある● MessagePackの標準化

– 元々の作者じゃない人が標準化提案をしちゃったという事案

● OpenBSDのTheo de RaadtがIETFに対して激怒– OpenSSLの脆弱性「Heartbreed」– 誰からも必要とされない仕様がセキュリティホールの

元になった

Page 34: RFC 〜 ネットワーク勉強会

The Internet is for Everyone● RFC3217

– https://tools.ietf.org/html/rfc3271● 2002年にInternet Societyから出された文書● インターネットに関わる人が増えてきて、お金も沢山動くようになって、インターネットは誰の物か?、という議論が盛んになったころに出された声明。

● RFCを正しく理解するにはContext(文脈)を知っておくほうが良いことが多い。歴史と一緒。

● 新し目のRFCではContextが省かれていることが多いので行間を想像しつつ読むほうがより面白いよ。

Page 35: RFC 〜 ネットワーク勉強会

質疑応答

Page 36: RFC 〜 ネットワーク勉強会

次回予告● 次に聞きたいネタはあるかしら?

– Ethernet– ルーティング– ネットワークプログラミング– サーバハードウェア– ネットワーク仮想化– 機器管理– 監視– ICN(Information Centric Networking)– IPv6