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

Arch TCP/IP Introduction

Aug 08, 2015

Download

Technology

Masahiko Hara
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Arch TCP/IP Introduction

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

pasora

Page 2: Arch TCP/IP Introduction

輪講について

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

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

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

Page 3: Arch TCP/IP Introduction

1.1 イントロダクション

Page 4: Arch TCP/IP Introduction

イントロダクション

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

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

Page 5: Arch TCP/IP Introduction

1.2 階層化

Page 6: Arch TCP/IP Introduction

TCP/IPの4階層システム

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

アプリケーション層

トランスポート層

ネットワーク層

リンク層

Page 7: Arch TCP/IP Introduction

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

インタフェースカード  

アプリケーション層

トランスポート層

ネットワーク層

リンク層

Page 8: Arch TCP/IP Introduction

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

•  IP  •  ICMP  •  IGMP  

アプリケーション層

トランスポート層

リンク層

ネットワーク層

Page 9: Arch TCP/IP Introduction

トランスポート層

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

•  TCP  •  UDP

アプリケーション層

ネットワーク層

リンク層

トランスポート層

Page 10: Arch TCP/IP Introduction

Transmission  Control  Protocol •  2台のホスト間で高信頼な  

データの流れを提供  •  アプリケーション層から  

受け取ったデータを適切に  分割・転送・受信・識別

アプリケーション層

ネットワーク層

リンク層

トランスポート層

Page 11: Arch TCP/IP Introduction

User  Datagram  Protocol •  極めて単純  •  「データグラム」という  

パケットを転送する  – 到達保証はない  

•  信頼性を保証するのは  アプリケーション層

アプリケーション層

ネットワーク層

リンク層

トランスポート層

Page 12: Arch TCP/IP Introduction

アプリケーション層

•  特定アプリケーションの  詳細な動作を処理  

•  DHCP,  DNS,  FTP,  HTTP,  NTP,  IMAP,  POP,  SMTP,  SSH,  SSL,  LDAP,  Telnet,  etc...

トランスポート層

ネットワーク層

リンク層

アプリケーション層

Page 13: Arch TCP/IP Introduction

図1.2:LAN上の2台のホストが  FTPを実行している場合

FTP  クライアント

TCP

IP

Ethernet  ドライバ

FTP  サーバ

TCP

IP

Ethernet  ドライバ

Ethernet

Page 14: Arch TCP/IP Introduction

同一層の相対プロトコル間通信を処理する  1つ以上のプロトコルを持つ

FTP  クライアント

TCP

IP

Ethernet  ドライバ

FTP  サーバ

TCP

IP

Ethernet  ドライバ

FTPプロトコル

TCPプロトコル

IPプロトコル

Ethernetプロトコル

Ethernet

Page 15: Arch TCP/IP Introduction

FTP  クライアント

TCP

IP

Ethernet  ドライバ

FTP  サーバ

TCP

IP

Ethernet  ドライバ

FTPプロトコル

TCPプロトコル

IPプロトコル

Ethernetプロトコル

Ethernet

ユーザプロセス  アプリケーションを処理

カーネル  通信を処理

一般的にアプリケーション層はユーザプロセス、  以下3つの層はカーネルに実装される

Page 16: Arch TCP/IP Introduction

FTP  クライアント

TCP

IP

Ethernet  ドライバ

FTP  サーバ

TCP

IP

Ethernet  ドライバ

FTPプロトコル

TCPプロトコル

IPプロトコル

Ethernetプロトコル

Ethernet

データ移動には  関知しない

アプリケーションには  一切認識しない  

 

一般的にアプリケーション層はユーザプロセス、  以下3つの層はカーネルに実装される

Page 17: Arch TCP/IP Introduction

FTP  クライアント

TCP

IP

Ethernet  ドライバ

FTP  サーバ

TCP

IP

Ethernet  ドライバ

FTPプロトコル

TCPプロトコル

IPプロトコル

Ethernetプロトコル

Ethernet

ユーザプロセス  アプリケーションを処理

カーネル  通信を処理

これがTCP/IPプロトコル群

Page 18: Arch TCP/IP Introduction

図1.3:ルータで接続された  2つのネットワーク

FTP  クライアント

TCP

IP

Ethernet  ドライバ

FTP  サーバ

TCP

IP

トークンリング  ドライバ

FTPプロトコル

TCPプロトコル

IPプロトコル

Ethernet  プロトコル

Ethernet

IP

Ethernet  ドライバ

トークンリング

トークンリング  ドライバ

IPプロトコル

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

Page 19: Arch TCP/IP Introduction

これがエンドシステム

FTP  クライアント

TCP

IP

Ethernet  ドライバ

FTP  サーバ

TCP

IP

トークンリング  ドライバ

FTPプロトコル

TCPプロトコル

IPプロトコル

Ethernet  プロトコル

Ethernet

IP

Ethernet  ドライバ

トークンリング

トークンリング  ドライバ

IPプロトコル

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

Page 20: Arch TCP/IP Introduction

こいつが中継システム(ルータ)

FTP  クライアント

TCP

IP

Ethernet  ドライバ

FTP  サーバ

TCP

IP

トークンリング  ドライバ

FTPプロトコル

TCPプロトコル

IPプロトコル

Ethernet  プロトコル

Ethernet

IP

Ethernet  ドライバ

トークンリング

トークンリング  ドライバ

IPプロトコル

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

Page 21: Arch TCP/IP Introduction

アプリケーション層とトランスポート層は  エンドツーエンド型プロトコル

FTP  クライアント

TCP

IP

Ethernet  ドライバ

FTP  サーバ

TCP

IP

トークンリング  ドライバ

FTPプロトコル

TCPプロトコル

IPプロトコル

Ethernet  プロトコル

Ethernet

IP

Ethernet  ドライバ

トークンリング

トークンリング  ドライバ

IPプロトコル

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

Page 22: Arch TCP/IP Introduction

ネットワーク層はホップバイホップ型プロトコル

FTP  クライアント

TCP

IP

Ethernet  ドライバ

FTP  サーバ

TCP

IP

トークンリング  ドライバ

FTPプロトコル

TCPプロトコル

IPプロトコル

Ethernet  プロトコル

Ethernet

IP

Ethernet  ドライバ

トークンリング

トークンリング  ドライバ

IPプロトコル

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

Page 23: Arch TCP/IP Introduction

ルータの役割

•  異なるネットワークを接続する  –  同一ネットワーク間でも(Ethernet  <-­‐>  Ethernet とか)  –  異なるネットワーク間でも(Ethernet  <-­‐>  AppleTalk とか)  

Page 24: Arch TCP/IP Introduction

Ethernet上のあらゆるホストは  トークンリング上のあらゆるホストと通信可能

FTP  クライアント

TCP

IP

Ethernet  ドライバ

FTP  サーバ

TCP

IP

トークンリング  ドライバ

FTPプロトコル

TCPプロトコル

IPプロトコル

Ethernet  プロトコル

Ethernet

IP

Ethernet  ドライバ

トークンリング

トークンリング  ドライバ

IPプロトコル

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

Page 25: Arch TCP/IP Introduction

アプリケーションからネットワーク間接続の  物理的レイアウトは見えない(インターネットの一目的)  

→ネットワーク層とトランスポート層の分離 FTP  

クライアント

TCP

IP

Ethernet  ドライバ

FTP  サーバ

TCP

IP

トークンリング  ドライバ

FTPプロトコル

TCPプロトコル

IPプロトコル

Ethernet  プロトコル

Ethernet

IP

Ethernet  ドライバ

トークンリング

トークンリング  ドライバ

IPプロトコル

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

Page 26: Arch TCP/IP Introduction

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

Page 27: Arch TCP/IP Introduction

1.4  INTERNET  アドレス

Page 28: Arch TCP/IP Introduction

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 将来のために予約(研究用)

Page 29: Arch TCP/IP Introduction

IPアドレス-­‐クラスフルアドレッシング

•  IPアドレスはInterNICが一元管理  – 全てのインタフェースが固有のアドレス  

•  ネットIDを割り当てられた者はホストID数分の  アドレスを自由に使用できる  – クラスAなら24bit 約1670万  

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

Page 30: Arch TCP/IP Introduction

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

Page 31: Arch TCP/IP Introduction

Domain  Name  System

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

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

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

Page 32: Arch TCP/IP Introduction

1.6  カプセル化

Page 33: Arch TCP/IP Introduction

TCPにおけるカプセル化 ユーザデータ アプリケーション  

+アプリケーションヘッダ アプリケーションデータ

アプリケーションデータ TCP  +TCPヘッダ

TCPセグメント

TCPセグメント IP  +IPヘッダ

IPデータグラム

Ethernetドライバ  +Ethernetヘッダ、トレーラ

IPデータグラム Ethernetフレーム

Ethernetフレームは46〜1500バイト  ジャンボフレームはそれ以上

Page 34: Arch TCP/IP Introduction

ヘッダの識別子

•  IPヘッダはプロトコルフィールドに8bit値を格納  –  1(ICMP),  2(IGMP),  6(TCP),  17(UDP)  

•  TCPとUDPはアプリケーション識別にポート番号  – 発信元と送信先のポート番号をヘッダに格納  

•  Ethernetヘッダには  16bitのフレームタイプフィールド  – どのネットワーク層プロトコルが生成したフレームか  

Page 35: Arch TCP/IP Introduction

1.7  デマルチプレクス

Page 36: Arch TCP/IP Introduction

デマルチプレクス

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

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

Page 37: Arch TCP/IP Introduction

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

Page 38: Arch TCP/IP Introduction

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

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

Page 39: Arch TCP/IP Introduction

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

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

3.  1に戻る

Page 40: Arch TCP/IP Introduction

1.9  ポート番号

Page 41: Arch TCP/IP Introduction

ポート番号

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

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

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

Page 42: Arch TCP/IP Introduction

1.10 標準化プロセス

Page 43: Arch TCP/IP Introduction

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

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

Page 44: Arch TCP/IP Introduction

Internet  Architecture  Board

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

Page 45: Arch TCP/IP Introduction

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

Page 46: Arch TCP/IP Introduction

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

Page 47: Arch TCP/IP Introduction

1.11  RFC

Page 48: Arch TCP/IP Introduction

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

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

Page 49: Arch TCP/IP Introduction

割り当て番号RFC

•  Internetプロトコルで用いられる  マジックナンバーや定数が定義  

•  本では  RFC  1700  と書いてあるが  現在は  RFC  3232  – We  expect  this  series  to  be  revived  in  the  future  by  the  new  IANA  organiza;on.  として中身は記述なし  

Page 50: Arch TCP/IP Introduction

Internet  Official  Protocol  Standards •  様々なInternetプロトコルの標準化の  

進捗状況を示す  •  本では RFC  1920  だが現在は  RFC  7100  –   タイトル Re;rement  of  the  “Internet  Official  Protocol  Standards”  Summary  Document

Page 51: Arch TCP/IP Introduction

ホスト要求RFC

•  RFC  1122  は  リンク層、ネットワーク層、トランスポート層  

•  RFC  1123  はアプリケーション層  •  現在多数の補足が別ドキュメントにある  •  プロトコルの詳細な情報を  

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

Page 52: Arch TCP/IP Introduction

ルータ要求RFC

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

Page 53: Arch TCP/IP Introduction

1.12 標準的な単純サービス

Page 54: Arch TCP/IP Introduction

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

Page 55: Arch TCP/IP Introduction

1.13 インターネット

Page 56: Arch TCP/IP Introduction

インターネット

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

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

Page 57: Arch TCP/IP Introduction

1.14 実装

Page 58: Arch TCP/IP Introduction

実装 •  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)  

Page 59: Arch TCP/IP Introduction

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

Page 60: Arch TCP/IP Introduction

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

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

Page 61: Arch TCP/IP Introduction

1.16 テストネットワーク

Page 62: Arch TCP/IP Introduction

テストネットワーク

(裏表紙の図)

Page 63: Arch TCP/IP Introduction

1.17 まとめ

Page 64: Arch TCP/IP Introduction

まとめ

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

Page 65: Arch TCP/IP Introduction

練習問題

Page 66: Arch TCP/IP Introduction

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

Page 67: Arch TCP/IP Introduction

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

Page 68: Arch TCP/IP Introduction

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

Page 69: Arch TCP/IP Introduction

練習問題1.2 •  限界を超える時期ねぇ…(もう超えてるじゃん)

Page 70: Arch TCP/IP Introduction

練習問題1.3 RFC1122  

1.2.2  Robustness  Principle    

Be  liberal  in  what  you  accept,    and  conserva;ve  in  what  you  send  

Page 71: Arch TCP/IP Introduction

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

Page 72: Arch TCP/IP Introduction

練習問題1.5 •  TCP/IPインターネットに接続されている  – www.sfc.wide.ad.jp?  

•  主IPアドレス  –  203.178.142.131  

•  ワールドワイドInternetに接続  •  マルチホーム?  –  Ethernetだけ?

Page 73: Arch TCP/IP Introduction

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

Page 74: Arch TCP/IP Introduction

練習問題1.7

Page 75: Arch TCP/IP Introduction

練習問題1.8 •  無い

Page 76: Arch TCP/IP Introduction

ありがとうございました