2.3K Views
September 30, 22
スライド概要
2006年に行なわれたエンジニア向け勉強会資料
SlideShareが使いにくくなってしまったのでこちらに全部移してみた。 - 勉強会で使った資料 - イベントでの登壇資料 等を中心に上げてあります。
ネットワークって、、、、、、 ◼ ◼ ◼ ◼ 良くわかんないよ 泥臭くて嫌ー 運用ってつまんないよね 夜、寝られないんでしょ? ◼ 2022/9/30 そこまで言わんでも、、、、、 by [email protected] 1
ネットワークって、、、、、、 ◼ たしかに大変な部分もあるけど、、、、、 ◼ ◼ 2022/9/30 好きでやってるんだよ!!! 悪かったな!!! by [email protected] 2
ネットワークを、、、、、、 ◼ なんで好きなのか???? ◼ 変態だから! ◼ 面白いから!! 2022/9/30 by [email protected] 3
というわけで ◼ みんなで変態になろう! ◼ 面白さを共有しよう!!! 2022/9/30 by [email protected] 4
30分でわかるインターネットの基礎 & 30分でわかる最近のインターネットの話題 2006年5月度 MCEA技術者交流会資料 by 佐々木 健 2022/9/30 by [email protected] 5
自己紹介 ◼ ◼ ◼ ◼ ◼ ◼ 1988年からインターネットユーザ 1994年頃からUNIXの管理者 1996年頃からネットワークの仕事開始 職場を転々として、、、、 様々なネットワークを作り歩いて、、、、 MCEAに来たところを補足される! 2022/9/30 by [email protected] 6
今日のアジェンダ ◼ ◼ ◼ TCP/IPによる通信の概要 インターネットを支える技術 インターネットの最近のトピックス 2022/9/30 by [email protected] 8
そもそも通信って何? ◼ ◼ ◼ オブジェクトとオブジェクトが協調動作を行 なう手段。 情報を交換する。 なんらかの目的を持っている。 2022/9/30 by [email protected] 10
プロトコルとは? ◼ ◼ 通信に関する約束事 扱う情報や手続きを規定 2022/9/30 by [email protected] 11
実社会での例「宴会プロトコル」 ◼ 交換する情報: ◼ ◼ 伝える相手: ◼ ◼ 幹事、場所、面子、時間、主旨、出欠 参加者全員 行なうこと: ◼ ◼ 2022/9/30 情報を伝える 出欠を取る by [email protected] 12
「宴会プロトコル」を支えるプロト コル等(例1) ◼ ◼ ◼ ◼ ◼ 実際に会って話をする場合は、、、、 会話の手順(「来週だけど、参加するー?」 とか) 日本人なら日本語で話すよね 言葉は音で伝わる 音は空気がないと 2022/9/30 by [email protected] 13
「宴会プロトコル」を支えるプロト コル等(例2) ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ 電話を使う場合は、、、、 会話の手順(「来週だけど、参加するー?」とか) イタリア人ならイタリア語を使う。 電話とかを使ってみる 電話は電気信号を使う 電気信号は電気を使う 電気はケーブルを流れる 電気っていうのはそもそも電子の流れか 交換機なんかも流れる 2022/9/30 by [email protected] 14
「宴会プロトコル」を支えるプロト コル等(例3) ◼ ◼ ◼ ◼ 広報で伝える場合、、、、 広報用の定型フォーマット 地図記号等の共通ルール 目で見えるのは光があるから 2022/9/30 by [email protected] 15
「宴会プロトコロル」から考察 ◼ ◼ ◼ ◼ 真面目にプロトコルを解析すると大変。 良く見ると支えるものは階層構造を持って いる。 階層構造の一つ一つぐらいなら比較的楽 に定義できる。 階層構造を組み合わせることにより柔軟な 運用が可能。 2022/9/30 by [email protected] 16
インターネットプロトコルの場合 (メール送信) ◼ ◼ ◼ ◼ ◼ SMTP TCP IP Ethenet, PPP Cat5, 電話線等 2022/9/30 by [email protected] 18
インターネットプロトコルの場合 (Web 閲覧) ◼ ◼ ◼ ◼ ◼ HTTP TCP IP Ethenet, PPP Cat5, 電話線等 2022/9/30 by [email protected] 19
インターネットプロトコルの場合 (ファイル転送) ◼ ◼ ◼ ftp TCP IP 2022/9/30 by [email protected] 20
インターネットプロトコルの場合 (ファイル共有) ◼ ◼ ◼ CIFS TCP IP 2022/9/30 by [email protected] 21
インターネットプロトコル (HOGEHOGE) ◼ ◼ ◼ HOGEHOGE TCP IP ◼ ◼ 一緒じゃん!!! TCP/IP の上に何が載るか、だけが違う!! 2022/9/30 by [email protected] 22
TCP/IPはなぜ流行ったか? ◼ ◼ ◼ ◼ ◼ ◼ 柔軟性が高い(独自プロトコルより有利) オープンな規格(独自プロトコルより有利) ちゃんと動く(OSI との違い) スケーラビリティがあった(IPX,NetBEUI に 勝った理由) プログラムがそこそこ書きやすい いろいろなものが動く 2022/9/30 by [email protected] 23
Break! ◼ ここまで質問あるかしら? 2022/9/30 by [email protected] 24
TCP/IPって何? ◼ こういう根本的な疑問を解決するには、 ◼ ◼ ◼ 2022/9/30 本を読む 人に聞く 原典にあたる --> RFC by [email protected] 25
RFCって? ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ インターネットでの通信の規約。 約束事にすぎない。 紳士協定。 拘束力なし。 IETFのサイト(http://www.ietf.org/)が原典 普通は Ring サーバから拾う RSS で最新情報も拾える → http://x42.com/rss/rfc.rss http://en.wikipedia.org/wiki/Request_for_Comments 2022/9/30 by [email protected] 26
RFCから情報を探す ◼ まずは rfc**00.txt を見る ◼ ◼ ◼ ◼ ◼ ◼ ◼ Internet Official Protocol Standards」 今だったら rfc3700 IP --> rfc791 TCP --> rfc793 UDP --> rfc768 ICMP --> rfc792,919,922,950 最新のRFCの動向を知りたければMLに入ろう。 2022/9/30 by [email protected] 27
RFCの問題点 ◼ ◼ ◼ ◼ ◼ あいまいな内容がものも多い。 古いRFCには現状と合っていないものもあ る RFCではない標準もある(W3C、ITU、IEEE とか)。 そもそも量が多すぎる。 最新情報はdraftを追いかけるしかない。 2022/9/30 by [email protected] 28
余談(インターネットの標準化団体) ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ISO / International Organization for Standardization ISOC / Internet Society IAB / Internet Architecture Board IANA / Internet Assigned Numbers Authority ICANN / Internet Corporation for Assigned Names and Numbers APNIC / Asia Pacific Network Information Center JPNIC / Japan Network Information Center JPRS / Japan Registry Service IETF / Internet Engineering Task Force ITU / International Telecommunication Union IEEE / Institute of Electrical and Electronics Engineers ANSI / American National Standards Institute ETSI / European Telecommunication Standards Institute FSAN / Full Service Access Network Initiative ATMフォーラム / The ATM Forum W3C / World Wide Web Consortium FCC / Federal Communications Commission VCCI / Voluntary Control Counsil for Interference by Information Technology Equipment JPCERT/CC / Japan Computer Emergency Response Team/ Coordination Center IPA / Information-Technology Promotion Agency, Japan 2022/9/30 by [email protected] 29
TCP/IPの位置付け アプリケーション TCP/UDP IP/ICMP 下層プロトコル 2022/9/30 by [email protected] 30
従来までの通信の考え方 ◼ ◼ ◼ ◼ 通信を直感的に実装すると電話のような 実装になる。 まずは通信経路を確保。 その上にデータを流す。 途中経路の一部が故障した際に通信不能 になってしまう。 2022/9/30 by [email protected] 31
IPの考え方 従来までの通信の考え方から発想を転換 ◼ ハガキを使った通信を考える。 ◼ 通信内容をハガキに書く ◼ ポストに投函! ◼ 途中はいろいろな経路を通るけど宛先が書いてあるから 多分届く。 ◼ 途中経路が故障しても適当に迂回して相手に届く。 ◼ 相手に届かなかったら、再送すれば良い。 ◼ 大きなデータは分割すればOK。 2022/9/30 by [email protected] 32
IPパケットの構造 A s u mmary o f t he c ontents o f t he i nternet h eader f ollows: 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 2022/9/30 by [email protected] 33
UDPとは? ◼ ◼ ◼ IPに、宛先ポート番号を付けてみた。 用途ごとに通信の種別を分けられるように なった。 UDP --> rfc768 2022/9/30 by [email protected] 34
UDPパケットの構造 0 7 8 15 16 23 24 31 +--------+--------+--------+--------+ | Source | Destination | | Port | Port | +--------+--------+--------+--------+ | | | | Length | Checksum | +--------+--------+--------+--------+ | | data octets ... +---------------- ... 2022/9/30 by [email protected] 35
TCPとは? ◼ ◼ ◼ ◼ ◼ 通信を直感的に実装すると電話のような実装に なる。やっぱりこういう直感的な実装も欲しい。 まずコネクションを張って、その上でデータのやり とりをする。 大きな長文の分割や再構成や再送を TCP が行 なう。 TCP --> rfc793 src address,port が一緒でも dist address,port が異なれば、異なる接続路。 2022/9/30 by [email protected] 36
TCPパケットの構造 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 2022/9/30 by [email protected] 37
データのカプセル化 ◼ イーサネットを流れるデータは以下のよう にカプセル化される。 Ether IP 2022/9/30 TCP データ by [email protected] 38
ICMPは何? ◼ TCP/IPの制御用プロトコル IPと組み合わせて用いられる ◼ ICMP --> rfc792,919,922,950 ◼ 2022/9/30 by [email protected] 39
良くわからない... ◼ ◼ まずは使ってみましょう。 いろいろ試してみましょう。 2022/9/30 by [email protected] 40
Break! ◼ ◼ ◼ これから数枚は参考までに、、、、 過去の勉強会で使った資料 ちゃんと説明しないので後で見てね♪ 2022/9/30 by [email protected] 41
今回はTCP/IPというお題目なの で... ◼ ◼ UDPは無視 面倒なのでキャラクタ型の通信のみ扱う 2022/9/30 by [email protected] 42
シェル(bash)でTCP/IPを使う bash$ echo hoge > /dev/tcp/127.0.0.1/** 2022/9/30 by [email protected] 43
プログラムからTCP/IPで通信 #!/usr/local/bin/ruby require "socket" s = TCPSocket.open("localhost", 13) print(s.gets) s.close 2022/9/30 by [email protected] 44
受信できるように見張る require "socket" gs = TCPServer.open(11111) while true Thread.start(gs.accept) do |s| while s.gets s.write($_) end s.close end end 2022/9/30 by [email protected] 45
スーパーデーモン「inetd」 ◼ ◼ 簡単にデーモンを作れる 標準入出力がそのままソケットの入出力に なる 2022/9/30 by [email protected] 46
Inetdの使い方 ◼ ◼ ◼ ◼ man inetd /etc/services にサービス名を書く /etc/inetd.conf に起動するプログラムを 書く inetd に SIGHUP を送る 2022/9/30 by [email protected] 47
inetdの利用例 その1 #!/bin/sh echo hoge date 2022/9/30 by [email protected] 48
inetdの利用例 その2
#!/usr/bin/perl
open(F,">/home/pochi/20020628/tmpfile");
while(<>){
print F $_;
}
2022/9/30
by [email protected]
49
inetdの利用例 その3 while(<>){ system “/usr/local/sbin/apachectl start” if (/start/); system “/usr/local/sbin/apachectl stop” if (/stop/); system “/usr/local/sbin/apachectl restart” if (/restart/); last; } 2022/9/30 by [email protected] 50
inetdの限界 ◼ ◼ ◼ ◼ 単純なデーモンしか書けない。 複数のコネクションを開くことはできない。 UDPでも使用した場合に同時に複数の接 続を使用できない。 DoS攻撃に弱い 2022/9/30 by [email protected] 51
スーパーデーモンの別種 ◼ ◼ Xinetd tcpserver 2022/9/30 by [email protected] 52
Break! ◼ ◼ ◼ ◼ 過去の勉強会で使った資料、おしまい。 興味がある人はいじってみてくださいませ。 ネットワークを素のまま使うのはそんなに 難しくない 便利なライブラリとかも沢山あるしね 2022/9/30 by [email protected] 53
TCP/IPにおける実装の基本的 な考え方(原典) ◼ ◼ ◼ 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. 2022/9/30 by [email protected] 54
TCP/IPにおける実装の基本的 な考え方(超訳) ◼ ◼ ◼ ◼ とりあえず相手にリクエストを投げちゃえ! 投げるリクエストは相手が良くわかるように リクエスト先が、うまく動かなくても、ちゃん と機能するように考えよう! 再送するとか、別な相手に投げるとか 2022/9/30 by [email protected] 55
ルーティングの場合 ◼ ◼ ◼ ◼ IPでの通信の基本 自分の経路情報を見て、投げるパケットの送付 先がわからなければ、default route のルータ宛 に、「投げといて!」とリクエスト ルータも、自分の経路情報を見て、投げるパケッ トの送付先がわからなければ、default route の ルータ宛に、「投げといて!」とリクエスト うまくいけば最終的に相手に届くさ! 2022/9/30 by [email protected] 56
DNSの場合 ◼ ◼ ◼ ◼ 名前を IP アドレスに変換する(名前解決する)プ ロトコル。 自分で名前解決ができなかったら、登録されてい る DNS サーバに、教えてー、と聞いてみる。 DNSサーバがもし知ってたら答えてあげる。でも 自分で名前解決ができなかったら、登録されてい る DNS サーバに聞きに行く。 再帰的に名前を解決! 2022/9/30 by [email protected] 57
SMTPの場合 ◼ ◼ ◼ ◼ 配送先アドレスを見て自分のところだったら、自 力で配送。 他のところだったら、DNS等を引いて、配送先と 思われるメールサーバに転送。 受けとったメールサーバが配送先アドレスを見て 自分のところだったら、自力で配送。他のところ だったらさらに他のメールサーバに転送。 最終的にはきっと届くよ! 2022/9/30 by [email protected] 58
Webの場合 ◼ ◼ ◼ ウェブサーバに、この情報見せて、と依頼 ウェブサーバが自分だけで情報を表示で きるなら自力で見せてあげる。 でもCGIやアプリケーションサーバみたい に自分の力だけでできなければ、できると ころに処理をお願いする 2022/9/30 by [email protected] 59
参考(TCPフロー制御アルゴリズムは人のマネージ メントに応用できるか ) ◼ ◼ http://dev.arielnetworks.com/modules/xfsection/article .php?articleid=12 これ読むと、TCP/IP の考え方が感覚的に 理解できるかも 2022/9/30 by [email protected] 60
参考(TCP/IPの歴史) ◼ TCP の概要公表は 1974 年 5 月 バークレイで UNIX 上に TCP が実装され たのvは 1976 年 TCP が TCP と IP に分割して今のような 形になったのは 1978 年 3 月 TCP/IP を全面的に公開したのは 1981 年 ◼ なんと25年前のプロトコルがまだ現役! ◼ ◼ ◼ 2022/9/30 by [email protected] 61
余談 ◼ ◼ ◼ ◼ ◼ TCP/IPの考え方に慣れると、仕事上も便 利よ。 自分で仕事をかかえこまなくなる 他人に寛容になれる 心にゆとりができて、とっても幸せ! 他人が幸せかどうかはわかんないけど ね ;-p 2022/9/30 by [email protected] 62
各プロトコルの詳細を説明 ◼ ◼ ◼ ◼ と、思ったけど、、、、 時間がないのでパス 資料は腐るほどあるので興味がある人は 自分で調べてくださいな。 DNSぐらいは後で説明するかも 2022/9/30 by [email protected] 63
ということで、基礎編終了 ◼ ここまでで質問あるかしら? 2022/9/30 by [email protected] 64
さて、インターネットの最近の動 向について ◼ 時間あるかしら? 真面目に話をするとキリがないのでさわり だけ。 興味があることはその都度聞いてね。 ◼ 以下について、つらつらと ◼ ◼ ◼ 2022/9/30 IPv6、ウイルス、DDoS、SPAM、P2P、DNS、ガ バナンス、サーバ周辺、ウェブ周辺 by [email protected] 65
最近の動向を押さえる上での注 意点 ◼ ◼ ◼ ◼ インターネットはベストプラクティスの集合 で成りたっている。 今の常識は将来の非常識かもしれない。 支えるエンジニアが頑張って運用している ので成立している。 本当に知りたければ、その場に飛びこむし かない ◼ 2022/9/30 JANOGとかいいぞ! by [email protected] 66
参考) JANOG とは? ◼ ◼ ◼ ◼ JApan Network Operators Group http://www.janog.gr.jp インターネットのオペレーションに関する話 題をメーリングリスト上で相談。 年に2~3回、集まってミーティング ◼ 2022/9/30 次は2006年7月13日(木)-14日(金)、お台場 にて by [email protected] 67
トラフィック増加への対応 ◼ すごく伸びてる ◼ ◼ ◼ 動画コンテンツ、GyaO、YouTube P2Pファイル共有等によるアップストリームの 増加 でも意外となんとかなってる! 2022/9/30 by [email protected] 68
IPv6の話 ◼ ◼ ◼ ◼ ◼ トラフィックの量としては全然たいしたこと はない IPv4枯渇も見えてきたけど、まだ平気っぽ い じわじわ増加中 Windows Vista では IPv6 が標準。 いろいろ問題はおきるかもしれないけど、 すぐに普通に使えるようになるはず 2022/9/30 by [email protected] 69
ウィルス対策、DDoS対策 ◼ ◼ ◼ ◼ 良くないウイルスが沢山ある ゾンビPCの増加 一斉に攻撃 ISPレベルでかなり頑張って遮断している ◼ 2022/9/30 涙ぐましい努力は意外と知られていない by [email protected] 70
SPAMの話 ◼ ◼ ◼ ウイルスの話とも共通する。 ゾンビPCからの発信が多い。 SPAM防御の手法もようやく RFC になった ◼ ◼ ◼ SPF、SenderID port 25 をブロック サブミッションを推奨 2022/9/30 by [email protected] 71
P2Pの話 ◼ ◼ ◼ ◼ Winny とかで脚光を浴びて一躍悪者に。 ちゃんと使えばすごく役に立つ Skype の成功 Microsoft も P2P に注目 2022/9/30 by [email protected] 72
DNSの話 ◼ ◼ ◼ ◼ DNSを利用するアプリケーションが沢山出 てきた インターネット電話、SPAM対策、認証、 IPv6 トラフィックが爆発的に増加する可能性 DDoS 攻撃の問題 2022/9/30 by [email protected] 73
インターネットガバナンス ◼ ◼ ◼ ◼ ステイクホルダーが増えてきた 国の問題もある 資源配分問題 国連で議題に 2022/9/30 by [email protected] 74
サーバ周辺技術 ◼ ◼ ◼ 高信頼性 仮想化 様々な箱、サービスの利用 2022/9/30 by [email protected] 75
ウェブ周辺技術 ◼ ◼ ◼ ◼ Web 2.0 Google、Google! 今、一番熱い? お金になるぞ! 2022/9/30 by [email protected] 76
break! ◼ ◼ 最近の動向で詳しく知りたいことある? なければ、もうちょっと喋らせてね 2022/9/30 by [email protected] 77
ところでインターネットって何? ◼ メール? ウェブ? 検索? ◼ どれも正解なんだけど、、、、 ◼ ◼ 2022/9/30 by [email protected] 78
ところでインターネットって何? (その2) ◼ ◼ ◼ ◼ ◼ もはや社会インフラ ◼ 経済 ◼ 安全 ◼ 教育 止まるとすごく困る 生活に必要不可欠のものになっている。 もはや、おれたちのためのインターネットではなく、 みんなのためのインターネットになってしまった。 インターネットエンジニアは専門家として責任がある。 2022/9/30 by [email protected] 79
インターネットって何?(その3) ◼ ◼ ◼ Art and Intelligence の基盤。 New Intelligence を産み出すもの Digital Communication Media 2022/9/30 by [email protected] 80
インターネットを流れるデータ ◼ ◼ ◼ ◼ もはや何でもあり ハードディスクへ書きこむ命令(iSCSI)がイ ンターネットに流れるなんて普通 地球上のコンピュータがすべて繋っている。 地球上にパーツが分散しているようなもの 2022/9/30 by [email protected] 81
これから我々はどうしなければ いけないのか ◼ やらなければいけないことはすごく多い どんどん使わなければ!! 技術の方向性をきちんと知らなければいけない。 そうしないとイカレポンチな技術が産まれてしまう ◼ 一緒に頑張りましょう! ◼ ◼ ◼ ◼ ◼ ◼ 2022/9/30 インターネットのため 社会のため 将来のため by [email protected] 82
おしまい ◼ ご静聴ありがとうございました。 資料は後でウェブに上げときます。 ◼ さて、雑談タイム!? ◼ 2022/9/30 by [email protected] 83