76
詳解 TCP/IP Vol.1 プロトコル 1章 イントロダクション pasora

Arch TCP/IP Introduction

Embed Size (px)

Citation preview

詳解 TCP/IP  Vol.1 プロトコル  第1章 イントロダクション

pasora

輪講について

•  範囲はみんな読んでくる  – わからないところを把握しておくと🙆  

•  みんなわからないから参加してる  – わからない時はその場できく  

•  スライド作りは勉強になる  – そのうち慣れます  

1.1 イントロダクション

イントロダクション

•  TCP/IPプロトコル群は  あらゆるコンピュータ間で相互通信可能  

•  「まさかここまで普及するとは」  •  オープンシステム  

1.2 階層化

TCP/IPの4階層システム

•  各階層は通信の異なる  相に対して責任を持つ(?)

アプリケーション層

トランスポート層

ネットワーク層

リンク層

リンク層  (データリンク層・ネットワークインタフェース層) •  デバイスドライバと  

インタフェースカード  

アプリケーション層

トランスポート層

ネットワーク層

リンク層

ネットワーク層(インターネット層) •  パケットの移動を制御  – ルーティングもここ  

•  IP  •  ICMP  •  IGMP  

アプリケーション層

トランスポート層

リンク層

ネットワーク層

トランスポート層

•  アプリケーション層に対し  2台のホスト間通信を提供  

•  TCP  •  UDP

アプリケーション層

ネットワーク層

リンク層

トランスポート層

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プロトコル

トークンリング  プロトコル

1.3  TCP/IPの階層化(省略)

1.4  INTERNET  アドレス

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万  

•  非効率なので現在は使われていない方式  – クラスレスアドレッシングへ

1.5  DNS:ドメインネームシステム

Domain  Name  System

•  IPアドレス、覚えられない(IPv6よりはいいけど)  –  SFCのページは133.27.4.220  

•  名前があれば覚えやすくなる  –  SFCのページは www.sfc.keio.ac.jp にしよう  

•  DNSはアドレスと名前の情報を格納する  分散データベース

1.6  カプセル化

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のフレームタイプフィールド  – どのネットワーク層プロトコルが生成したフレームか  

1.7  デマルチプレクス

デマルチプレクス

•  Ethernetフレームが受信されると  プロトコル・スタックを上昇し  ヘッダが順に取り除かれていく  

•  取り除く際に読み込んだヘッダによって  上位プロトコルを決定

1.8 クライアント/サーバ・モデル

クライアント/サーバ・モデル  反復サーバ

1.  クライアントからの要求を待つ  2.  クライアントの要求を処理する  3.  要求を送信してきたクライアントに応答する  4.  1に戻る

クライアント/サーバ・モデル  並列サーバ

1.  クライアントからの要求を待つ  2.  要求を処理するためのサーバを起動  –  プロセス、タスク、スレッド  –  全要求を処理終了後、修了  

3.  1に戻る

1.9  ポート番号

ポート番号

•  TCPとUDPはアプリケーション識別に  16bitのポート番号を使用する  

•  サーバはウェルノウンポート(1〜1023)を使用  –  TCPでは80(HTTP),  22(SSH),  23(Telnet)など  

•  クライアントはエフェメラル(短命)ポート(1024〜)  – ユーザがサービスを必要としている間のみ存在  

1.10 標準化プロセス

Internet  Society •  h^p://www.internetsociety.org/  •  全世界レベルでの研究通信  

インフラストラクチャとしてのInternetの  改革と成長をサポート、促進

Internet  Architecture  Board

•  h^p://www.iab.org/  •  技術面について管理・調整  •  Internetの標準仕様について責任

Internet  Engineering  Task  Force •  h^ps://www.iea.org/  •  短期的な標準策定グループ

Internet  Research  Task  Force •  h^ps://ira.org/  •  長期研究プロジェクトを推進  

1.11  RFC

Request  For  Comment •  インターネットに関する  

全公式標準はRFC書式で発行されている  •  h^p://tools.iea.org/rfc/  

割り当て番号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  はアプリケーション層  •  現在多数の補足が別ドキュメントにある  •  プロトコルの詳細な情報を  

探すときのスタートポイント

ルータ要求RFC

•  ルータ特有の要求を定義

1.12 標準的な単純サービス

標準的な単純サービス 名前 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)

1.13 インターネット

インターネット

•  「インターネット」は共通プロトコル群による  複数ネットワークの接続  

•  “Internet”はTCP/IPで相互接続可能な  ホストによる大規模インターネット

1.14 実装

実装 •  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.15  アプリケーション・     プログラミング・インタフェース

アプリケーション・プログラミング・インタフェース

•  ソケット(バークレーソケット)  •  Transport  Layer  Interface(XTI)  

1.16 テストネットワーク

テストネットワーク

(裏表紙の図)

1.17 まとめ

まとめ

•  今後議論される用語などを説明した  •  TCP/IPプロトコル群は4層  – ネットワーク層とトランスポート層の区別は重要  

練習問題

練習問題1.1 •  クラスAは7bit→最大数は128  •  クラスBは14bit→最大数は16384  •  クラスCは21bit→最大数は2097152

練習問題1.2 •  h^p://www.cc.gatech.edu/fac/Mostafa.Ammar/7260/history.netcount  

練習問題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.2 •  限界を超える時期ねぇ…(もう超えてるじゃん)

練習問題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.”  

練習問題1.7

練習問題1.8 •  無い

ありがとうございました