詳解 TCP/IP Vol.1 プロトコル 第1章 イントロダクション pasora
輪講について
• 範囲はみんな読んでくる – わからないところを把握しておくと🙆
• みんなわからないから参加してる – わからない時はその場できく
• スライド作りは勉強になる – そのうち慣れます
Transmission Control Protocol • 2台のホスト間で高信頼な
データの流れを提供 • アプリケーション層から
受け取ったデータを適切に 分割・転送・受信・識別
アプリケーション層
ネットワーク層
リンク層
トランスポート層
User Datagram Protocol • 極めて単純 • 「データグラム」という
パケットを転送する – 到達保証はない
• 信頼性を保証するのは アプリケーション層
アプリケーション層
ネットワーク層
リンク層
トランスポート層
アプリケーション層
• 特定アプリケーションの 詳細な動作を処理
• DHCP, DNS, FTP, HTTP, NTP, IMAP, POP, SMTP, SSH, SSL, LDAP, Telnet, etc...
トランスポート層
ネットワーク層
リンク層
アプリケーション層
図1.2:LAN上の2台のホストが FTPを実行している場合
FTP クライアント
TCP
IP
Ethernet ドライバ
FTP サーバ
TCP
IP
Ethernet ドライバ
Ethernet
同一層の相対プロトコル間通信を処理する 1つ以上のプロトコルを持つ
FTP クライアント
TCP
IP
Ethernet ドライバ
FTP サーバ
TCP
IP
Ethernet ドライバ
FTPプロトコル
TCPプロトコル
IPプロトコル
Ethernetプロトコル
Ethernet
FTP クライアント
TCP
IP
Ethernet ドライバ
FTP サーバ
TCP
IP
Ethernet ドライバ
FTPプロトコル
TCPプロトコル
IPプロトコル
Ethernetプロトコル
Ethernet
ユーザプロセス アプリケーションを処理
カーネル 通信を処理
一般的にアプリケーション層はユーザプロセス、 以下3つの層はカーネルに実装される
FTP クライアント
TCP
IP
Ethernet ドライバ
FTP サーバ
TCP
IP
Ethernet ドライバ
FTPプロトコル
TCPプロトコル
IPプロトコル
Ethernetプロトコル
Ethernet
データ移動には 関知しない
アプリケーションには 一切認識しない
一般的にアプリケーション層はユーザプロセス、 以下3つの層はカーネルに実装される
FTP クライアント
TCP
IP
Ethernet ドライバ
FTP サーバ
TCP
IP
Ethernet ドライバ
FTPプロトコル
TCPプロトコル
IPプロトコル
Ethernetプロトコル
Ethernet
ユーザプロセス アプリケーションを処理
カーネル 通信を処理
これがTCP/IPプロトコル群
図1.3:ルータで接続された 2つのネットワーク
FTP クライアント
TCP
IP
Ethernet ドライバ
FTP サーバ
TCP
IP
トークンリング ドライバ
FTPプロトコル
TCPプロトコル
IPプロトコル
Ethernet プロトコル
Ethernet
IP
Ethernet ドライバ
トークンリング
トークンリング ドライバ
IPプロトコル
トークンリング プロトコル
これがエンドシステム
FTP クライアント
TCP
IP
Ethernet ドライバ
FTP サーバ
TCP
IP
トークンリング ドライバ
FTPプロトコル
TCPプロトコル
IPプロトコル
Ethernet プロトコル
Ethernet
IP
Ethernet ドライバ
トークンリング
トークンリング ドライバ
IPプロトコル
トークンリング プロトコル
こいつが中継システム(ルータ)
FTP クライアント
TCP
IP
Ethernet ドライバ
FTP サーバ
TCP
IP
トークンリング ドライバ
FTPプロトコル
TCPプロトコル
IPプロトコル
Ethernet プロトコル
Ethernet
IP
Ethernet ドライバ
トークンリング
トークンリング ドライバ
IPプロトコル
トークンリング プロトコル
アプリケーション層とトランスポート層は エンドツーエンド型プロトコル
FTP クライアント
TCP
IP
Ethernet ドライバ
FTP サーバ
TCP
IP
トークンリング ドライバ
FTPプロトコル
TCPプロトコル
IPプロトコル
Ethernet プロトコル
Ethernet
IP
Ethernet ドライバ
トークンリング
トークンリング ドライバ
IPプロトコル
トークンリング プロトコル
ネットワーク層はホップバイホップ型プロトコル
FTP クライアント
TCP
IP
Ethernet ドライバ
FTP サーバ
TCP
IP
トークンリング ドライバ
FTPプロトコル
TCPプロトコル
IPプロトコル
Ethernet プロトコル
Ethernet
IP
Ethernet ドライバ
トークンリング
トークンリング ドライバ
IPプロトコル
トークンリング プロトコル
ルータの役割
• 異なるネットワークを接続する – 同一ネットワーク間でも(Ethernet <-‐> Ethernet とか) – 異なるネットワーク間でも(Ethernet <-‐> AppleTalk とか)
Ethernet上のあらゆるホストは トークンリング上のあらゆるホストと通信可能
FTP クライアント
TCP
IP
Ethernet ドライバ
FTP サーバ
TCP
IP
トークンリング ドライバ
FTPプロトコル
TCPプロトコル
IPプロトコル
Ethernet プロトコル
Ethernet
IP
Ethernet ドライバ
トークンリング
トークンリング ドライバ
IPプロトコル
トークンリング プロトコル
アプリケーションからネットワーク間接続の 物理的レイアウトは見えない(インターネットの一目的)
→ネットワーク層とトランスポート層の分離 FTP
クライアント
TCP
IP
Ethernet ドライバ
FTP サーバ
TCP
IP
トークンリング ドライバ
FTPプロトコル
TCPプロトコル
IPプロトコル
Ethernet プロトコル
Ethernet
IP
Ethernet ドライバ
トークンリング
トークンリング ドライバ
IPプロトコル
トークンリング プロトコル
IPアドレス-‐クラスフルアドレッシング
• 32bitのIPv4アドレスを上位4bitで区別 クラスA
0.0.0.0-‐127.255.255.255 0
7bit ネットID
24bit ホストID
クラスB 128.0.0.0-‐191.255.255.255
1 014bit
ネットID 16bit
ホストID
クラスC 192.0.0.0-‐223.255.255.255
1 1 021bit
ネットID 8bit
ホストID
クラスD 224.0.0.0-‐239.255.255.255
1 1 1 028bit
マルチキャスト・グループID
クラスE 240.0.0.0-‐247.255.255.255
1 1 1 1 将来のために予約(研究用)
IPアドレス-‐クラスフルアドレッシング
• IPアドレスはInterNICが一元管理 – 全てのインタフェースが固有のアドレス
• ネットIDを割り当てられた者はホストID数分の アドレスを自由に使用できる – クラスAなら24bit 約1670万
• 非効率なので現在は使われていない方式 – クラスレスアドレッシングへ
Domain Name System
• IPアドレス、覚えられない(IPv6よりはいいけど) – SFCのページは133.27.4.220
• 名前があれば覚えやすくなる – SFCのページは www.sfc.keio.ac.jp にしよう
• DNSはアドレスと名前の情報を格納する 分散データベース
TCPにおけるカプセル化 ユーザデータ アプリケーション
+アプリケーションヘッダ アプリケーションデータ
アプリケーションデータ TCP +TCPヘッダ
TCPセグメント
TCPセグメント IP +IPヘッダ
IPデータグラム
Ethernetドライバ +Ethernetヘッダ、トレーラ
IPデータグラム Ethernetフレーム
Ethernetフレームは46〜1500バイト ジャンボフレームはそれ以上
ヘッダの識別子
• IPヘッダはプロトコルフィールドに8bit値を格納 – 1(ICMP), 2(IGMP), 6(TCP), 17(UDP)
• TCPとUDPはアプリケーション識別にポート番号 – 発信元と送信先のポート番号をヘッダに格納
• Ethernetヘッダには 16bitのフレームタイプフィールド – どのネットワーク層プロトコルが生成したフレームか
ポート番号
• TCPとUDPはアプリケーション識別に 16bitのポート番号を使用する
• サーバはウェルノウンポート(1〜1023)を使用 – TCPでは80(HTTP), 22(SSH), 23(Telnet)など
• クライアントはエフェメラル(短命)ポート(1024〜) – ユーザがサービスを必要としている間のみ存在
Internet Society • h^p://www.internetsociety.org/ • 全世界レベルでの研究通信
インフラストラクチャとしてのInternetの 改革と成長をサポート、促進
割り当て番号RFC
• Internetプロトコルで用いられる マジックナンバーや定数が定義
• 本では RFC 1700 と書いてあるが 現在は RFC 3232 – We expect this series to be revived in the future by the new IANA organiza;on. として中身は記述なし
Internet Official Protocol Standards • 様々なInternetプロトコルの標準化の
進捗状況を示す • 本では RFC 1920 だが現在は RFC 7100 – タイトル Re;rement of the “Internet Official Protocol Standards” Summary Document
ホスト要求RFC
• RFC 1122 は リンク層、ネットワーク層、トランスポート層
• RFC 1123 はアプリケーション層 • 現在多数の補足が別ドキュメントにある • プロトコルの詳細な情報を
探すときのスタートポイント
標準的な単純サービス 名前 TCPポート UDPポート RFC 適用
echo 7 7 862 クライアントからの全送信データを返す
discard 9 9 863 クライアントからの全送信データを破棄
dayeme 13 13 867 時間と日付を人間がわかるように返す
chargen 19 19 864 コネクションが切れるまでchar列を送信
eme 37 37 868 32bitバイナリ数で時間を返す(UNIX eme)
実装 • 4.1aBSD(1981) • 4.2BSD(1983) • 4.3BSD(1986) • 4.3BSD Tahoe(1988)→Net/1(1989) • 4.3BSD Reno(1990)→Net/2(1990) • 4.4BSD(-‐Encumbered)(1993)→Net/3(1994) • 4.4BSD-‐Lite Release 2(1995)
練習問題1.2
1 10
100 1000 10000
100000
Jul-‐8
8
Dec-‐88
May-‐89
Oct-‐89
Mar-‐90
Aug-‐90
Jan-‐91
Jun-‐91
Nov-‐91
Apr-‐92
Sep-‐92
Feb-‐93
Jul-‐9
3
Dec-‐93
May-‐94
Oct-‐94
Mar-‐95
Nets
Nets
練習問題1.3 RFC1122
1.2.2 Robustness Principle
Be liberal in what you accept, and conserva;ve in what you send
練習問題1.4 • Quote of the Day プロトコルのポート番号は17 • RFC 865 で定義 • “A useful debugging and measurement tool is a quote of the day service. A quote of the day service simply sends a short message without regard to the input.”
練習問題1.5 • TCP/IPインターネットに接続されている – www.sfc.wide.ad.jp?
• 主IPアドレス – 203.178.142.131
• ワールドワイドInternetに接続 • マルチホーム? – Ethernetだけ?
練習問題1.6 RFC1000 THE ORIGINS OF RFCS The basic ground rules were that anyone could say anything and that nothing was official. And to emphasize the point, I labeled the notes “Request for Comments.”