class: title, smokescreen, shelf, no-footer # コンピュータネットワークの基本用語 <div class=footnote> スライドには出てこない(発展)用語も含まれています </div> --- class: col-2,compact # 基本用語 - Packet (パケット) - データのかたまり - headerとpayloadからなる - header (制御情報) - payload (データ本体) - Protocol (プロトコル) - 通信の約束事、取り決め - Server Client Model - IP (IPアドレス) - 32bit(IPv4), 128bit(IPv6) - PORT (ポート番号) - 16bit - SRC = 送信元(SOURCE) - DST = 送信先(DESTINATION) <wbr> - サーバ - サービスを提供するPC - サービスを提供するソフトウエア - クライアント - サービスを受けるPC - サービスを受けるソフトウエア - [備考]通信の必須事項 - 最低でも5つの情報が必要, 手段および送信元(住所,相手),送信先(住所,相手)の情報; TCP/IPの場合Protocol, SRC_IP,SRC_PORT, DST_IP,DST_PORT - 例: TCP,192.168.0.10,1025,10.0.0.1,25 --- class: col-2,compact # 階層モデル - TCP/IP - アプリケーション - トランスポート - インターネット - ネットワークインターフェイス <wbr> - OSI 7 layer model - L7 application - L6 presentation - L5 session - L4 transport - L3 network - L2 data link - L1 phyisical --- class: col-2,compact # パケット ![TCP](/images/network/tcp-all-layers.png) データにTCPヘッダがついてTCPパケットになり、 さらに、その前にIPヘッダがつけたされてIPパケットになる。 さらに、IPパケットの前後にイーサネットフレームのヘッダとトレイラがつき、 イーサネットフレームとなる ![UDP](/images/network/udp-all-layers.png) UDPパケットも同様 --- class: col-2,compact # 組織と規格文書 - IETF - インターネットの規格を決める組織 - 誰でも参加できる敷居の低さが特徴 - 草の根 - OSI - 規格を決める組織 - 大企業や国などのあつまり - IETFの反政治勢力:-) - W3C - WWWの規格を決める組織 - 敷居の低さはIETFに準拠 <wbr> - RFC - IETFの発行する文書 (正式な規格文書からメモ、April Foolまで多種多様) - JPRS - JPドメインを管理する民間企業 - JPNIC - IPアドレスの割当を行う組織 --- class: col-2,compact # アプリケーション層 - 俗に、レイヤー7とも言うが、OSIのlayer 7とは厳密には一致していない - OSI layer 5 〜 7 に相当する図を書く説明が多いが... - アプリケーションの区別はポート番号 - アプリケーション(のサーバ側が利用する)ポート番号が決められている - このポート番号はIANAが管理 - ポート/プロトコルという表記をする - 例: HTTP は 80/tcp を使う - 右表を参照 - ポート番号の1024未満は特別あつかい - 重要なサーバのみが利用 - 管理者権限が必要 | アプリケーション | プロトコル | ポート番号 | | -------------------- | ----------------- | ------------- | | ワールドワイドウェブ | HTTP | 80/tcp | | | HTTPS | 443/tcp | | メール | SMTP | 25/tcp | | | SMTP (submission) | 587/tcp | | | POP3 | 110/tcp | | | IMAP4 | 143/tcp | | リモートログイン | SSH | 22/tcp | | | TELNET | 23/tcp | | DNS | DNS | 53/udp 53/tcp | --- class: col-2,compact # アプリケーション層: HTTP関連 - HTTP - WWWのデータ転送プロトコル - HyperText Transport Protocol - 1.0 1.1 2.0 3.0(近々リリース) - HTTPS - 元々は HTTP over SSL の略 - HTTPに暗号と認証の機能を追加 - HTTP/3ではHTTPSのみ ![height120px](../tcpip/app_www/images/http-overview.gif) <wbr> - SSL - Secure Socket Layer - Netscape社が提案したHTTPに暗号と認証の機能を追加するしくみ - HTTP と TCP の間に SSL の層を追加 - TLS - Transport Layer Security - SSL 3.1を元にIETFが規格化 - 現在のHTTPSの実態はHTTP over TLS --- class: col-2,compact # アプリケーション層: メール関連 - SMTP - メール転送プロトコル - Simple Mail Transport Protocol - SMTPは概念的に3つに分かれる - MTA ... mail transfer - MSA ... mail submission - LDA ... local delivery - MTAがSMTPを使う(25/tcp) - MSAのmail submissionが587/tcp - LDAは直接プログラムを呼ぶかLMTP経由でプログラムを呼び出し、 ローカル配送を行う - LMTP ... Local Mail Transfer Protocol <wbr> - POP3 - メールを受信するプロトコル - Post Office Protocol - IMAP4 - メールを受信するプロトコル - Internet Message Access Protocol ![width320px](../tcpip/app_mail/images/smtp_overview.gif) --- class: col-2,compact # アプリケーション層: DNS - Domain Name System (Service) - 53/udp - クエリのデフォルトで用いるポート - 53/tcp - DNSサーバ間でデータをコピーする際に用いる (クエリで用いることも) - ドメイン名 - ノードにつける.(dot)つなぎの文字列 - ドメインは、たぶん同義語 - 木構造 - DNSの名前空間は木構造 (木といっても木の根に見えるが、 植物ではなく数学のグラフ理論に由来している) - ノード(接点) リーフ(葉) エッジ(枝) <wbr> - ゾーン - 上位組織から委任された管理範囲 - 木構造はゾーンに分割される - ルート - 木構造の一番上のノード - ルートサーバ - ルートノードにあるDNSサーバ群 - クエリの出発点 - TLD (Top Level Domain) - (ルート直下の)最上位ドメイン - JP など国レベルの大きな単位 --- class: col-2,compact # アプリケーション層: DNS - リソースレコード(RR) - 各ノードに紐づくデータ - 単にレコードとも言う - クエリ - リソースレコードを検索すること - 木構造を上から下っていくこと - 基本戦略は、たらいまわし - 正引き - IPアドレスからドメイン名を検索 - 逆引き - ドメイン名からIPアドレスを検索 <wbr> - Aレコード - ドメイン名とIPアドレスの対応を定義するレコード - 正引きで利用する - PTRレコード - ドメイン名とIPアドレスの対応(Aと逆方向の関係)を定義するレコード - 逆引きで利用する - NSレコード - そのドメインのDNSサーバの情報 - このサーバに問い合わせると該当するレコードを教えてもらえる - たらいまわしの際に教えてくれる - MXレコード - ドメインのメールサーバの情報 --- class: img-right,compact # トランスポート層 ![](../tcpip/tpt_tcp/images/tcp-reliable.png) - ポート番号 - 16bit - アプリを区別 - TCPとUDPが代表的プロトコル - OSIのlayer 4相当 --- class: col-2,compact # トランスポート層: TCP - Transmission Control Protocol - 特徴(重要キーワード) - 信頼性 - コネクション指向 - データストリーム - ホスト間に仮想の通信路(Virtual Circuit)を確立 - コネクション指向 - 通信路の確立 (3-way handshake) - 通信をおこなう(インタラクティブ) - 通信路の切断 <wbr> - ホスト間で確実に転送する責任はTCPが負う( 再送制御など複雑な処理は全てTCPが担当し、 ホスト間の確実な転送を保証する。 ホスト間の実際の転送はIPだが、IPは転送の保証をしない ) - ユーザにとっては簡単で使いやすい - TCPとIPはセットで動作 - END TO ENDで信頼性のある転送 - 役割分担 - IPはホスト(IPアドレス)間の転送 - TCPはアプリケーション(ポート)間の転送 --- class: col-2,compact # トランスポート層: TCP - sequence number - acknowldge number - コントロールビット - 3-way handshake --- class: col-2,compact # トランスポート層: UDP - User Datagram Protocol - UDPとIPはセットで動作する - 役割分担 - IPはホスト(IPアドレス)間の転送 - UDPはアプリケーション(ポート)間の転送 - アプリケーションの例 - DNS - TFTP - DHCP <wbr> - 最低限のトランスポート層の機能を提供 - 動作が軽い - ユーザ(プログラマ)がアプリケーション側で転送動作について自由に設計できる - UDP自体に信頼性はないため、 再送なども必要であれば、 アプリケーションが独自に実装する必要がある --- class: img-right,compact # インターネット層 ![](../tcpip/inet_intro/images/ip-unreliable.png) - OSI layer 3相当 - ホスト(IPアドレス)間のデータ転送 - IPアドレスはネットワークインターフェイスにつける識別子 --- class: col-2,compact # インターネット層: IPとICMP - IP - Internet Protocol - ホスト間のデータ転送 - エラー対応をしない - IPとICMPはセットで実装する <wbr> - ICMP - Internet Control Message Protocol - メッセージを伝える - エラー、デバッグ、良い提案など - 悪用できるため拒否する設定が多い - アプリケーション例 - ping - traceroute --- class: img-right,compact # ネットワーク設計 ![](../tcpip/inet_intro/images/intranet.png) - ルータ(図(1)) - 異なるセグメント間のパケットのやりとりを担当する機器 - 右図ではISPとの接続を担当 - L3スイッチも同様の役割 - ファイアウォール(図(2)) - 異なるセグメント間におき、セキュリティに特化した処理を行う機器 - 詳しくは春学期後半 - DMZ - インターネット向けサーバなどを置く特別なセグメント - DMZは非武装地帯の頭文字 - 一種の緩衝地帯 --- class: img-right,compact # ネットワーク設計 ![](../tcpip/inet_intro/images/term-intranet-segment.png) - WAN (図の編みがけ部分) - インターネット側のネットワーク - (このへん曖昧ながら)大学敷地内のインターネット側はWAN - LAN (図の(2)より下, DMZも含む) - 社内/学内ネットワーク - (このへん曖昧ながら)大学敷地内もLocalですが、 ふつうLANは社内/学内ネットワークのことをさす - イントラネット - LANと同義語 --- class: img-right,compact # ネットワーク設計 ![](../tcpip/inet_intro/images/term-intranet-segment.png) - セグメント - network segment - netoworkも同義語 - PCやネットワーク機器が接続しているネットワークのこと、 目的や所属、組織ごとに別々のセグメント - ブロードキャストが届く範囲が一つのセグメント - VLAN - 建物を越えてネットワークを構築できる**論理的なセグメント** - ルータは異なるセグメント間をつなぐ - スイッチは同一セグメント間の機器(PCなど)をつなぐ --- class: col-2,compact # インターネット層: IPアドレス v4とv6 - IPv4 (IP version 4) - 大きさは**32ビット** - 表記法:**8ビット**ずつ**.(dot)**で区切り**10進数表記**(詳しくは後述) - 210.128.52.45 - 192.168.10.1 - グローバルアドレスは[**JPNIC**](https://www.nic.ad.jp/) に申請し割り当ててもらう - プライベートアドレスの利用は自由 <wbr> - IPv6 (IP version 6) - 大きさは**128ビット** - 表記法:**16ビット**ごとに**:**で区切り**16進数表記** - 2403:3a00:202:1209:49:212:144:112 - 2001:240::105 <br> 0000を0、さらに連続した0を::で省略可 (::は一ヶ所限定) - 申請手続きはv4と同様 --- class: col-2,compact # IPv4の表記法 - クラス (classfull) - 旧表現 (1993年以前?) - IPアドレスを二つに分けて考えます - **ネットワーク部(network part)** - **ホスト部(host part)** - 分け方は**サブネットマスク**(subnetmask)で指定します - 分け方は3種類のみで、それぞれ**クラスA,B,C**に対応します(後述) - **IPアドレス/サブネットマスク**という表記をすることもあります - 例: 192.168.10.1/255.255.255.0 - IPアドレスが192.168.10.1 - サブネットマスクが255.255.255.0 <wbr> - CIDR (Classless Inter Domain Routing) - 新表現(1993〜) - 分け方は可変長で、分け方(ネットワーク側の大きさ)を/数字 (network prefixもしくは単にprefix)で表現しています。 (network prefix, host prefixという表現もあるそうです) - **VLSM(Variable Length Subnet Mask)** つまり可変長のサブネットマスクと呼んでいます - **IPアドレス/prefix**と表記します - 例: 192.168.10.1/24 - **IPアドレスが192.168.10.1** - **network prefixが24** --- class: compact # IPv4の分類(クラス) | クラス | 役割 |ネットマスク(/prefix)| IPアドレスの範囲 |通信の仕方 | |--------|-------------------------|-------------------|------------------------------|---------------------| | A | 大規模組織用 | 255.0.0.0 (/8) |0.0.0.0 〜 127.255.255.255 |ユニキャスト(1対1) | | B | 中規模組織用 | 255.255.0.0(/16) |128.0.0.0 〜 192.255.255.255 |ユニキャスト(1対1) | | C | 小規模組織用 | 255.255.255.0(/24)|192.0.0.0 〜 223.255.255.255 |ユニキャスト(1対1) | | D | マルチキャスト | |224.0.0.0 〜 239.255.255.255 |マルチキャスト(1対多)| | E | 予約済(未使用) | |240.0.0.0 〜 255.255.255.255 |- | - クラス - 1990年代なかばには旧表現となった用語なのですが、 大昔のネットワークがあるかぎり現場では使いますので、 おぼえてください(基本情報でも出ます) - 通信の仕方 - **ユニキャスト**は**1対1**の通信です。 IPアドレスは住所に相当します - **マルチキャスト**の場合、 通信は**1対複数**で、IPアドレスはチャンネルにあたります。 そのチャンネルに参加しているホストに通信が届きます。 <br> 1990年代前半くらいまでなら、 マルチキャストでインターネット中継もありました --- class: col-2,compact # IPv4の使い方 - ネットワークアドレス - 割り当てられたIPアドレスのなかで一番小さいアドレス - ブロードキャストアドレス - 割り当てられたIPアドレスのなかで一番大きなアドレス - そのセグメントに一斉送信が可能(イーサネットの項目も参照) - ホストとして利用可能なIPアドレスの数は、上の2つをのぞくので、 「ホスト部の大きさ - 2」 <wbr> - プライベートアドレス - 自由につかってよい - NATとセットで用いる - 各クラスから一つずつ割いている - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 - 127.0.0.1 (loopback address) - 自分自身を意味します。全コンピュータにあります。 --- class: col-2,compact # IPv6 - 大きさは**128**ビット - **16ビットごと**に**16進数**、**:**つなぎ - 連続した0は省略可 - IPv4と同様に**CIDR表記** - IPv6のユニキャストアドレス(住所の意味合いを持つアドレス)は、 左側64ビットが**サブネットプレフィックス**、 右側64ビットが**インターフェイス識別子** (MACアドレスを元に自動的に生成したホストごとに異なる値) <wbr> - IPv6の必要性 - IPv4ではIPアドレスが足りないため - グローバル**アドレスで**END-TO-END通信**のみ(NATは無い) - あくまでも**IPv4延命策としてプライベートアドレスとNAT**(後述)を導入 - ヘッダの整理など細かな技術的改良 - 新機能 - IPSec (IP Security, VPNなどで利用) - IP Anycast --- class: img-right,compact # インターネット層: NAT ![](../tcpip/inet_nat/images/napt.png) - NAPT - Network Address Port Translation - ふつうNAPTを使う - インターネットに接続している機器でIPヘッダとTCPヘッダを書換え - 機器は書換えたルールを覚えておく - 返りのパケットに対しては、記憶しているルールにしたがい逆の書換え - IPマスカレード - NAPTの同義語 - NAT - ポート変換をしないNAPT - オリジナルのNAT - プライベートアドレスとNATはセットで運用する(せざるをえない)苦肉の策 --- class: img-right,compact # インターネット層: ルーティング ![図](../tcpip/inet_routing/images/routing-overview.png) - **動的経路制御** (**dynamic routing**) - ルータ群が**自律**的に考え経路変更 - 図のインターネット部分 - **大域的な経路制御**はdynamic - **静的経路制御** (**static routing**) - 設定されたとおりに動作 <br> 障害時は人間が対応 - 大学敷地内はstatic - **大学敷地内は学外(インターネット側)も学内もstatic** (注:インターネットへの出口が一つではdynamic routingする理由も手段もない) --- class: col-2,compact # インターネット層: 機器 <div class=footnote> (脚注) L3スイッチもルータですが、 ルーティング機能(頭のよさ)に力点がある機材がルータ、 スイッチング機能(ホスト間のパケット転送能力)に力点がある機材がL3スイッチ (だと思う) </div> |機材|説明| |--------------------------|---------------------------------------| |ルータ | インターネットへの経路制御担当<br>この構成では仕事のしがい無し | |スイッチ(cs) | **core switch**<br>**L3スイッチ**<br>VLAN間ルーティングを行う | |スイッチ(ds) | **distribution switch**<br>建物の出口を担当する**L2スイッチ**<br>建物内のアクセススイッチ(as)群<br>への接続を集約する役目<br>coreまでVLANを中継 | |スイッチ(as) | **access switch (edge switch)**<br>末端に置く**L2スイッチ**<br>PCや無線LAN機器などをつなぐ先 | <wbr> ![図](../tcpip/inet_routing/images/routing-overview.png) --- class: img-right,compact # インターネット層: インターネットの正体, BGP, IX ![](../tcpip/inet_routing/images/routing-architecture.png) $$インターネット = \sum_{AS} プロバイダ(AS)$$ - インターネットは数万のISPの集合体 - ISP = Internet Service Provider - 大手ISPは**AS番号**を持っています - AS番号は**16ビット** - 32ビットAS番号も定義済 - IX = Internet eXchange - 大手ISP同士が各自のルータを持ち寄りBGP4で経路情報を交換 - BGP **peerを張る**(**peering**する) - peeringは179/tcp - **BGP** = Border Gateway Protocol --- class: img-right,compact # インターネット層: ISP内ルーティング ![](../tcpip/inet_routing/images/routing-architecture.png) - **RIP (Routing Information Protocol)** - **ディスタンスベクトル**型 - 複数経路がある場合、目的地までのルータの数が少ない方を選択 - **OSPF (Open Shortest Path First)** - **リンクステート**型 - 参加している全ルータが定期的に情報交換し、 ルータ群の現状や構成について知っています。 そのため障害時には高速な経路変更が可能です - 基本的にfull meshを組んで情報交換するので、 ルータ数が増えると急激に処理が難しくなります。 巨大なネットワークでは使えません --- class: compact # インターネット層: ルーティングまとめ |ケース|ルーティングプロトコル| |----------------------------|----------------------------| |イントラネット|基本的にルーティングしない、まれにRIPやOSPF| |ISP内|OSPFやIS-IS、ある程度大きいとBGP、小規模組織ならRIPもありうる| |ISP間|BGP| - RIPは小規模なネットワークで使用 - 複数経路がある場合、目的地までのルータの数が少ない方を選択 - OSPF(IETF)やIS-IS(OSI) - 賢くて高速な判断が出来るかわりに負荷は高い傾向 - 巨大なネットワークでは使えない - BGP - **パスベクトル型**: - IPアドレスと、そのIPアドレスまでの間にあるAS(群)の情報を情報交換 - 基本戦略は目的地までに通過するASの数が少ない経路を選択 --- class: col-2,compact # ネットワークインターフェイス層 - 接続形態 - バス型 (初期のイーサネット) - 10base5, 10-base2 - スター型 - 10base-T 以降のイーサネット - リング型 - Token RingやFDDIで使われる形 - フレーム - レイヤー2ではデータの塊(他層でのパケット)をフレームと呼ぶ --- class: col-2,compact # ネットワークインターフェイス層: イーサネット - Ethernet - Xerox Paloalto研究所が開発したレイヤー2を代表する規格 - Etherは、もちろんエーテルのこと:-) - MACアドレス - 48ビット - 工場出荷時に一意に設定されている - CSMA/CD - Ethernetの基本動作で、誰が通信するかを調停するプロトコル - CSMA/CA - 無線機器が使っている調停のプロトコル --- class: col-2,compact # ネットワークインターフェイス層: イーサネット - ブロードキャスト - 全ホストにパケットを送信する動作 - 全ホストに尋ねる際に便利 - FF:FF:FF:FF:FF:FF宛への送信 - ブロードキャストで全ホストに尋ねられることを応用(右欄を参照) - ブロードキャストアドレス - 特殊な役割を持つIPアドレス - IP層でIPパケットにブロードキャストを設定して送信すれば、 イーサネットではFF:FF:FF:FF:FF:FF宛への送信となる <wbr> - ARP (Address Resolution Protocol) - IPアドレスからMACアドレスを割り出すプロトコル - 初回の通信(イーサネットフレームの送信)の前に、この動作は必須 - RARP (Reverse Address Resolution Protocol) - MACアドレスからIPアドレスを割り出すプロトコル - DHCP (Dynamic Host Configuration Protocol) - OSのネットワーク設定を自動で行うプロトコル --- class: col-2,compact # ネットワークインターフェイス層: イーサネット - DIX - Ethernetの最初の規格 - DIX = DEC, Intel, Xerox - 802.3 - Ethernetの規格シリーズは 802.3 という名称ではじまる。 これは単に1982年3月に議論が始まったことに由来 - 10-Baseほにゃらら - 速度の規格,例: 10Base-2,10Base-5,10Base-T,100Base,1000Base - STP - Ethernetで使う冗長化プロトコル <wbr> - アロハネット - ハワイの無線ベースのネットワーク。Ethernetを設計する際に参考にしたと言う