サンダーボルト

相手モンスターを全て破壊する。

マスタリングTCP/IP 入門編 まとめ

これは何?

後で自分が復習できるように下記の本をまとめたものです。

f:id:nao_666:20200113194847j:plain
マスタリングTCP/IP 入門編

マスタリングTCP/IP 入門編

第1章ネットワーク基礎知識

1.1 コンピュータネットワーク登場の背景

1.2 コンピュータとネットワーク発展の7つの段階

  • 皆でマシン共有→仮想マシン共有→プライベートなネットワーク→インターネットという変遷

1.3 プロトコルとは

1.4 プロトコルは誰が決める?

1.5 プロトコルの階層化とOSI参照モデル

1.6 OSI参照モデルによる通信処理の例

1.7 通信方式の種類

  • 通信方式2種
  • 通信方法2種
    • 回線交換(例:電話)
    • 回線を占有
    • 通信速度は一定
    • パケット交換
    • パケットに分けて送信、回線共有
    • パケットはルーターの記憶領域(バッファ)に蓄積されてキューとして扱われ順に送信される
    • そのため蓄積交換とも呼ばれた
    • 通信速度が遅くなったり、ルーターのバッファを超えるパケットを受け取った場合、パケットが喪失されることがある
  • 通信相手の数による通信方式の分類4つ

1.8 アドレスとは

1.9 ネットワークの構成要素

  • 直接接続された機器間で通信するためのプロトコルやネットワークのことをデータリンクという
  • データリンクには、イーサネット、無線、ISDN等がある
  • イーサネットの通信媒体としては、同軸/ツイストペア/光ファイバーケーブル等があり、無線の通信媒体は電磁波である
  • 通信媒体によって伝送速度が異なる
  • 伝送速度の単位はbps(Bits Per Second)
  • 媒体中を流れる信号の速さは一定で、それでいて伝送速度が大きいというのは、速度が上がったのではなく、一度に送ることができるデータ量が増えたという意味
  • 実際のホスト間での転送速度はスループットと言われ、ホストのCPUのの能力や、混雑度、パケット中のデータが占める割合等も考慮した実効転送速度を意味する
  • リピーターは減衰して変形した信号の波形を増幅・整形する
  • 通信媒体を変換できるリピーターも存在するが、伝送速度の違う媒体間は接続できない(イーサネット10Mbpsと100Mbpsは接続できない)
  • リピーターは多段接続に関する制約がある(10Mbpsでは最大4つ、100Mbpsでは2つ等)
  • ブリッジはフレームを蓄積し、新たなフレームとして送る。多段接続に制限はない。伝送速度の異なるデータリンクを接続できる。
  • フレームとは、OSI参照モデル第二層(データリンク層)におけるパケットの呼び名
  • ラーニングブリッジは通信の送信元情報からどのホストがどのネットワークにあるかの情報を記憶し、無駄な通信を省いてくれる
  • ブリッジの機能を持ったハブを「スイッチングハブ」、リピーターの機能しかないハブを「リピーターハブ」と呼ぶ
  • ブリッジはMACアドレスで宛先を判別するがルーターIPアドレスで判別する
  • レイヤ4-7にはロードバランサーなどがある
  • 電話など即応性の高い通信を優先して扱うといった帯域制御もレイヤ4-7の仕事
  • ゲートウェイはデータを変換する(異なるプロトコルに変換する)
レイヤ
レイヤ4-7 アプリケーション層
プレゼンテーション層
セッション層
トランスポート層
ゲートウェイ
レイヤ3 ネットワーク層 ルーター
レイヤ2 データリンク層 ブリッジ
レイヤ1 物理層 リピーター

1.10 現在のネットワークの姿

  • ネットワークをつなぐ高速で主たるルーターをコア(バックボーン)と呼ぶ
  • また、コアのネットワークから抜ける各地点をエッジという
  • ネットワークには、混み合った経路を迂回して速く通信ができるようにされている工夫もある
  • LTEの規格では電話などの音声データもIPパケットとして転送することになっているが、実際には難しくまだできていない

第2章TCP/IP基礎知識

2.1 TCP/IP登場の背景とその歴史

  • ネットワークは軍事目的で開発が進み、ARPANETと呼ばれる実験で成功した後、TCP/IPが策定され、それがARPANETにも採用された。その後、UNIXにも実装され、流行していった。

2.2 TCP/IPの標準化

  • TCP/IPとは何を指す言葉かというと、TCPやIPを利用する上で必要となる多くのプロトコル群をまとめて指す言葉。例えばUDPTELNETFTP、HTTPなど
  • 標準化しようとする際には、RFC(Request for Comments)として仕様が公開される
  • 仕様策定の流れは Internet Draft → Proposed Draft(RFC) → Draft Standard → Standard
  • Standardになるには、実際に多く利用されていないといけない
  • RFC Editor http://www.rfc-editor.org/rfc/rfc-index.txt rfc/std以下にstandardが入ってるっぽい

2.3 インターネットの基礎知識

  • ネットワークとネットワークはNOC(Network Operation Center)で接続され、また、ネットワークの運用者や利用方針が違う場合、それらをつなぐものはIX(Internet Exchange)と呼ばれる
  • インターネットに接続するにはISP(Internet Service Provider)にお願いすることになる

2.4 TCP/IPプロトコルの階層モデル

2.5 TCP/IPの階層モデルと通信例

  • 各階層では上位層から受け取るものはすべて1つのデータとして認識され、それに自レイヤーでのヘッダを付加し、下位層に送る
用語 意味
パケット オールマイティな用語
フレーム データリンクのパケットを表す
データグラム IPやUDPなどネットワーク層以上でパケット単位のデータ構造をもつプロトコルで利用される
セグメント ストリームベースのTCPに含まれるデータを表す
メッセージ アプリケーションプロトコルのデータ単位を表す

第3章データリンク

3.1 データリンクの役割

  • データリンクという言葉はOSI参照モデルデータリンク層と具体的な通信手段(イーサネット無線LAN等)の2つを意味する言葉として用いられる
  • データリンクの「セグメント」とは、区切られた1つのネットワークを指す言葉だが、その区切りはどの階層の視点で見るかによって変わる。例えば、ネットワーク層から見ると1つのセグメントでも、物理層から見れば2つのセグメントということもありえる。
  • ネットワークの接続/構成形態のことをトポロジーと呼ぶ。バス/リング/スター/メッシュ型等がある

3.2 データリンクの技術

  • MACアドレスはデータリンクに接続しているノードを識別するために用いられる
  • バス/リング型のネットワークにおいては、すべてのステーションが送信されてきたフレームを受け取って、自分宛てじゃなければ破棄する
  • MACアドレスは、XX:XX:XX:XX:XX:XXという形式。Xは0~Fまでの16進数。合計6バイトのデータ
  • 通信媒体という観点からネットワークを分けると媒体共有型と媒体非共有型に分けられる
  • 媒体共有型にはコンテンション方式とトークンパッシング方式がある
    • コンテンション方式:データ送信権を競争にて取得し送信する方法。同時に復数が送信権を取得してしまった場合はデータが衝突し、壊れる(コリジョン(。ネットワークが混雑すると急激に性能が低下する。
    • トークンパッシング方式:トークンがネットワークを巡回し、これを持っているステーションだけがデータを送信できる。平等に送信権が配分され、混雑時にも性能が低下しにくいが、ネットワークが混雑していないと性能を発揮しにくい。
  • 媒体非共有型は今のイーサーネットでは基本になっていて、ハブとホストが1対1で結ばれていて、他のホストの回線を占有しない方式。また、この場合ツイストペアケーブルや光ファイバーケーブルを使えば、ケーブル内の2本の線を使い同時に送受信を行える(全二重通信)。これに対してトランシーバーのようなものは半二重通信と呼ばれる。
  • イーサネットスイッチは、復数のポートを持ったブリッジで、転送表(フォワーディングテーブル)でMACアドレスを管理し、学習しながら効率的に通信を行う
  • ブリッジの接続を間違うとループが起きる。これを解決するのがスパニングツリーとソースルーティングという方式
    • スパニングツリー:BPUDというパケットを交換し、ループが起きていないかを検知し、問題があれば一部ポートを閉じる。障害時にはそのポートを開放することもある
    • ソースルーティング:送信側が送信経路を指定する方式
    • VLAN(Virtual Lan)機能を使い、VLAN IDを発行すれば同じスイッチにつながったネットワークでもセグメントを分けることができる

3.3 イーサネット

  • イーサネットには様々な規格があり、通信速度の違うものどうしを接続する場合はルーター等が必要になる
  • 当初イーサネットは半二重通信が前提だったが、改良が行われ全二重通信となった
  • オクテット:8ビットが1オクテット。8ビットであることを特に強調したい場合に、バイトよりオクテットを使う
  • イーサネットフレームの先頭にはプリアンブルと呼ばれる8オクテットのフィールド(101010…11)がつけられる。これは今からイーサネットフレームが始まるということを伝える
  • プリアンブルの後にはフレーム本体が付き、本体は宛先MAC(6)+送信元MAC(6)+タイプ(2)+データ(46~1500)+FCS(4) となっている
    • FCSはFrame Check Sequenceといって、データが壊れていないかをチェックする

3.4 無線通信

  • LAN(Local Area Network)の範囲を比較的高速で接続する無線を無線LANと呼ぶ
分類 通信距離 団体や技術
無線PAN (Personal) 10m Bluetooth
無線LAN (Local) 100m Wi-Fi
無線MAN (Metropolitan) 数km〜100km WiMAX
無線RAN (Regional) 200km〜700km
無線WAN (Wide) 3G、LTE、4G
  • Wi-Fi(Wireless Fidelity[忠実、忠誠])はWECA(Wireless Ethernet Compatibility Alliance)[現Wi-Fi Alliance]によってIEEE802.11規格群の普及を目的として付けられたブランド名
  • WiMAX(Worldwide Interoperability for Microwave Access)は、大都市圏をエリアとした広範囲なワイヤレスネットワーク

3.5 PPP (Point-to-Point Protocol)

3.6 その他のデータリンク

  • HDMIはHigh-Definition Multimedia Interfaceで、高品質な映像と音声をデジタル伝送できる規格。バージョン1.4からイーサネットのフレームを伝送する規格が追加され、HDMIケーブルでTCP/IPによる通信が可能になる

3.7 公衆アクセス網

  • IP-VPNでは、IPネットワーク上にMPLS(Multiprotocol Label Switching)技術を用いてVPNを構築できる。MPLSはラベル(タグ)をIPパケットに付加して通信を制御する。このラベルを顧客ごとに異なるように設定し、MPLS網を通過するときに宛先の判断を行う

第4章IPプロトコル

4.1 IPはネットワーク層プロトコル

  • IPアドレスが付けられた機器をホスト、付けられかつ、経路制御を行う機器をルーター、それら2つをまとめてノードと呼ぶ
  • データリンク層では同じデータリンク内で接続されているノード間の通信を行うが、ネットワーク層では異なるデータリンク間での通信を行う
  • ネットワーク層の役割を一言で表すと終点ノード間の通信(end-to-end)を実現すること

4.2 IPの基礎知識

4.3 IPアドレスの基礎知識

  • IPアドレス(IPv4アドレス)は32(ドット区切り8ビット*4)ビットで表される
10101100. 00010100. 00000000. 00000001
172. 20. 0. 1
  • 組み合わせは232=4,294,967,296あり、約43億台のコンピュータをIPネットワークにつなげるように思えるが、IPアドレスはネットワーク部とホスト部に分けられるため実際にIPネットワークに接続できるコンピュータ数はそれより少ない
  • IPアドレスのネットワーク部はセグメントが異なれば違う値
  • IPアドレスホスト部はセグメントが同じであれば違う値
  • 192.168.144.10/24のネットワーク部は先頭から24ビットなので192.168.144の部分
  • 上の例ではサブネットマスクによりネットワーク部とホスト部を示していたが、クラスによる分け方もある
  • ホスト部がすべて0のIPアドレスはネットワークアドレスを表したりIPアドレスが不明な場合に使うことがあるので基本は使わない、またホスト部が全て1のアドレスはブロードキャストアドレスとして使う
  • ローカルブロードキャスト
    • 192.168.0.0/24ネットワーク内で192.168.0.255に送信するとそのネットワーク内全てに送られる
  • ダイレクトブロードキャスト
    • 192.168.0.0/24内のホストから192.168.1.255という192.168.1.0/24ネットワークへダイレクトブロードキャストすると、192.168.0.0/24内ではもちろんブロードキャストされず、192.168.1.0/24内の全てのホストに届く
  • クラスは無駄が多い。例えばBクラスの場合上位16ビットがネットワークアドレス部、下位16ビットがホスト部となり、つまり1ネットワーク内に216=65536個のホストが接続できることになるが、現実的にそんな大量のホストをつなぐことはないから。
  • クラスAやBをそのまま使うのは非常に無駄で、ネットワークアドレスが不足してしまうためAやBをそのまま使うことは許されなくなり、そのための仕組みがサブネットマスク
  • サブネットマスクを使えば柔軟にネットワークアドレス部を指定できる
  • 例えば 172.20.100.52 /26 は前から26bitがネットワークアドレス部であることを示す。52は00110100なので、最初の00までがネットワークアドレス。
  • IPアドレスが枯渇するということで、グローバルとプライベートを分けた
    • クラスA:10.0.0.0〜10.255.255.255 (/8)
    • クラスB:172.16.0.0〜172.31.255.255 (/12)
    • クラスC:192.168.0.0〜192.168.255.255 (/16)
    • ↑考えればわかるが、全てネットワークアドレス部は固定となっている
    • クラスBは 172.00010000.0.0〜172.00011111.255.255で、上位12bitは値が同じ
  • 一般的にはグローバルに公開するルーター等のみだけグローバルIPを使い、公開していないものはプライベートIPを使う
  • IPv4が枯渇してきているがIPv6が普及していないためなんとかIPv4でうまく運用している
  • グローバルIPICANN(Internet Corporation for Assigned Names and Numbers)で一元管理されており、日本ではJPNIC(Japan Network Information Center)が管理している

4.4 経路制御(ルーティング)

  • 経路制御表にはネットワークアドレスと次のルーターのアドレスが書かれており、もし複数のネットワークアドレスに一致した場合は一致するビット列が長いほうのネットワークアドレスを選択する(最長一致)

4.5 IPの分割処理と再構築処理

  • データリンクによって最大転送単位(MTU)が違うためIPはデータを分割する
  • 再構築処理は途中のルーターでは行わず、最後だけでやる。なぜなら全てのパケットが同じ経路で来る保証がないし、コストがかかるから
  • 経路MTU探索:ある経路でのMTUを予め試行して求めておきそれで最初から分割しておくることで無駄な分割コストをカットできる

4.6 IPv6 (IP version 6)

  • IPv6は128ビットで枯渇問題の解決とIPv4との互換性を持たせる努力がされている
  • IPv6の特徴
    • 経路MTU探索を利用しルーターに分割処理をさせない
    • ヘッダ長を固定(40オクテット)等
  • 16進数用いて表し、また0:0:と続くところでは(::)で省略できる(省略は1箇所のみ)
    • 例)FEDC:4534:ACDD:2594:BA98:FEDC:7654:3210
    • 1080:0:0:0:8:800:200C:417A→省略→1080::8:800:200C:417A
  • グローバルユニキャストアドレス:世界で一意のアドレス
  • リンクローカルユニキャストアドレス:データリンク内でユニーク
  • ユニークローカルアドレス:インターネット通信を行わない場合のアドレス
  • IPv6では最小のMTUは1280オクテットと決められているため、CPUやメモリに制限がある場合は、機器の実装時に分割時探索をせずに1280オクテット固定で分割、送信してもよい

4.7 IPv4ヘッダ

4.8 IPv6のヘッダフォーマット

第5章IPに関連する技術

5.1 IPだけでは通信できない

5.2 DNS (Domain Name System)

  • DNSは名前からIPへ変換する
  • DNSによる問い合わせ手順(kusa.ac.jp内のリゾルバがwww.ietf.orgと通信したい場合)
    • kusa.ac.jpのDNSサーバーに問い合わせ
    • DNSがルートネームサーバーにwww.ietf.orgのIPを問い合わせ
    • ルートネームサーバーがietf.orgのIPを返却
    • DNSietf.orgのDNSにwww.ietf.orgのIPを問い合わせ
    • DNSがリゾルバにIPを返却
    • ゾルバからwww.ietf.orgへIPを使って通信
  • DNSはホスト名→IPの紐付けだけではなく他にもデータを管理している
    • Aレコード:ホスト名→IP
    • PTR:IP→ホスト名
    • NS:上位や下位のネームサーバーのIPアドレス
    • MX:メールアドレスとメールサーバーの紐付け

5.3 ARP (Address Resolution Protocol)

5.4 ICMP (Internet Control Message Protocol)

  • IPでの通信がうまくいかなかったとき等に助けてくれるのがICMP。エラーを通知したりネットワークの診断を行ったりする
  • IPのTTLが0になったときはICMPのTime Exceeded Messageを返却する
    • これを利用しているのがtracerouteで、TTLを1からインクリメントしてICMPのTime Exceeded Messageを順に受け取り実現している
  • ICMPのエコー要求とエコー応答メッセージを利用しているのがpingコマンド
  • ICMPv6はIPv6のためのもので、IPv4ではICMPがなくても通信できるがIPv6ではICMPv6が必須。IPv6ではIPからMACを調べるプロトコルARPからICMPの近隣探索メッセージに変更される

5.5 DHCP (Dynamic Host Configuration Protocol)

  • DHCPサービスが行われているネットワークでは、クライアントをつなげばすぐにネットワークに接続できる(Plug and Play)。IPアドレスDNSサーバー等の情報を自動で設定してくれる
  • クライアントがDHCPサーバーからIPアドレスを取得するときはDHCPへ発見パケット→提供パケット→要求パケット→確認応答パケットと2往復する
    • 2往復するのは複数のDHCPサーバーがあっても正しく動作させるため

5.6 NAT (Network Address Translator)

  • NATはプライベートIPでグローバルに接続するためのもので、NAT対応ルーターがリクエストを送信する際にプライベートIPをグローバルIPに書き換える。複数のプライベートIPが同じグローバルIPを共有することになる
  • NAPT(NAPortsT)を使えばポートを含めてIPの変換テーブルを作るためプライベートIPを使ってグローバルに送受信できるようになる
  • NAT-PT(Protocol Translation)は、IPv6ヘッダとIPv4ヘッダを付け替える技術で、これによりIPv6しか設定されていないホストでも、IPv4の環境と通信できる

5.7 IPトンネリング

  • [IPv6]-[IPv4]-[IPv6] という構成のとき、IPv6の2つがIPv6どうしで通信するのは不可能なはずだが、IPv4を通過する際にIPヘッダの次にIPヘッダをつなげ、上位層のヘッダを付けないようにすればIPv6どうしで通信できる。この技術をIPトンネリングという

5.8 その他のIP関連技術

  • マルチキャストをしたいホストはルーターにIGMP(Internet Group Management Protocol)で受信したい旨を伝える(マルチキャストアドレスを通知)
  • 移動してもIPを変えない技術がMobile IP
    • 移動したら、もとの場所のホームエージェントが移動したホストのふりをしてARPパケットを送り、パケットを受信し、さらにトンネリングして移動後のホストに転送する
    • ホームエージェントとは、移動ホストがどこにいるか監視し、移動先にパケットを転送するもの。戸籍を登録した役所のようなもの

第6章TCPUDP

6.1 トランスポート層の役割

  • トランスポート層では宛先のプログラムを指定する
  • TCP/IPでのトランスポート層は2つ、TCP(Transmission Control Protocol)とUDP(User Datagram Protocol)
  • TCPはコネクション指向、ストリーム型で順序制御や再送制御を行い信頼性を提供する
  • UDPは信頼性がなく、送信したメッセージの大きさは保たれるが到達する保証がないためアプリケーション側で到達の確認や再送処理が必要
  • TCPはメールなど、UDPIP電話などに適する。もしIP電話TCPで実装した場合、音声が遅れてしまう

6.2 ポート番号

6.3 UDP

  • UDPコネクションレス、信頼性がない、高速なため、総パケット数が少ないDNSSNMP、動画や音声、同報性が必要なブロードキャストなどに向いている

6.4 TCP

  • TCPはコネクションの確立、終了、維持といったことを行う
  • TCPではデータが受信ホストに到達したときに、到達したことを知らせる確認応答(ACK : Positive Acknowledgement)を送信元に送ることで信頼性を提供している。うまく受信できなかったときは否定確認応答(NACK : Negative Acknowledgement)を送る
  • TCPでパケットを送信後、再送するまでに、どれくらいの時間ACKを待てばよいかというのは、これまでの通信の実績から計算する。Round Trip Time(往復時間)と分散を計測して計算する
  • UNIXWIndowsは再送のタイムアウトを0.5秒単位で設定しているが、最初の通信では推測できないので、デフォルトで6秒程度に設定されている
  • TCPではコネクション確立時に通信を行うデータ単位(MSS : Maximum Segment Size)を決める
    • 理想的なサイズはIPで分割されない最大の単位。
    • 送信ホストと受信ホストがお互いに候補を提示し小さい方の数値に決まる
  • 確認応答による低速度を防ぐためにいくつかのセグメントをまとめて「ウィンドウ」という単位を作り、それごとに確認応答を行う
  • TCPではネットワークの利用効率を高めるために、
    • すべての送信済みデータが確認応答されている
    • 最大セグメント長(MSS)のデータを送信できる
    • の両方に当てはまらないときはデータ送信をしばらく待つ(Nagleアルゴリズム)
  • TCPでは確認応答と実際のデータ返送のパケットを1つにして送ることができ、これをピギーバックという

6.5 その他のトランスポートプロトコル

6.6 UDPヘッダのフォーマット

6.7 TCPヘッダのフォーマット

  • TCPのヘッダにのチェックサムは、途中のルーターのメモリ故障やプログラムのバグによってデータが破壊されていないことを保証するため。ノイズによる通信途中のビットのエラーはデータリンクのFCSで検出できるはず。

第7章ルーティングプロトコル(経路制御プロトコル)

7.1 経路制御(ルーティング)とは

  • ルーターが正しい方向に通信を導くことをルーティングという
  • スタティックルーティングでは手で経路情報を入力するが、ダイナミックルーティングでは隣り合うルーター間で接続情報を教え合い、これが連なって経路制御表が完成する

7.2 経路を制御する範囲

  • 経路制御に関するルールを決めて、それをもとに運用する範囲を自律システム(AS : Autonomous System)といい、例えばISPがそれである
  • 自律システム内部でダイナミックルーティングに利用されるのがIGP(Interior Gateway PRotocol)で、自律システム間の経路制御に利用されるのがEGP(Exterior Gateway PRotocol)

7.3 経路制御アルゴリズム

  • 距離ベクトル型(Distance-Vector)アルゴリズムでは、あるルーターからその次のルーターを選択する際、目的地となるホストへの距離だけを知っており、それが最短となるルーターへと制御する。
  • リンク状態型(Link-State)では接続地図全体をルーターが知っており、それをもとに最短経路を判断し制御する。距離だけでなく、どういう経路かまで把握した上で制御している

7.4 RIP(Routing Information Protocol)

  • ルーターはRIPで経路制御情報を30秒周期でブロードキャストする。受け取る側はこの情報が6回連続で来なくなったら接続が切れたと判断する。
    • ルーターAから情報をもらったBは自分の距離分の1を足してまた情報をブロードキャストする
  • 距離の単位はホップ数(=通過するルーター数)
  • RIP2はRIPを改良したもので、経路制御情報の交換にブロードキャストではなくマルチキャストを用いたり、サブネットマスク対応が行われたりしたもの

7.5 OSPF(Open Shortest Path First)

  • OSPFはリンク状態型のルーティングプロトコル
  • サブネットマスクに対応しており、可変長サブネットで構成されたネットワークの経路制御が可能になった

7.6 BGP(Border Gateway Protocol)

  • BGPは組織間を接続するときに利用されるプロトコルで、EGPの一種。
  • BGPでも最終的な経路制御表はネットワークアドレスと次に配送すべきルーターの組で表されるが、BGPでは通過するASの数をもとに経路制御を行う
  • JPNICが管理しているAS番号の一覧はここから https://www.nic.ad.jp/ja/ip/as-numbers.txt
  • 例えば、AS1とAS3がつながっていない場合、例えばそのどちらもとつながっているAS2が中継してくれないとダメで、もししてくれない場合専用回線を準備しないといけない
  • BGPにより経路制御情報を交換するルーターをBGPスピーカーという
  • BGPでは目的とするネットワークアドレスにパケットを送った際に通過したASの数を距離としてその数が少ない経路を基本的に使う
  • BGPでは経路情報として、経路(途中のルーター)を把握しており、距離だけを知っているわけではない。また、リンク状態でもない。これを経路ベクトル型(Path Vector)と呼ぶ。

7.7 MPLS(Multi Protocol Label Switching)

  • IPパケット転送にはIPアドレスの最長一致によるルーティングだけではなく、それぞれのIPパケットにラベルという値を設定し、それに基づいて転送する方法もあり、その代表がMPLSである

第8章アプリケーションプロトコル

8.1 アプリケーションプロトコルの概要

  • TCP/IPのアプリケーション層にはOSI参照モデルの5,6,7層であるセッション、プレゼンテーション、アプリケーション層の全ての役割が含まれている

8.2 遠隔ログイン(TELNETSSH

  • SSH = Secure SHell
  • TELNETではログイン時のパスワードが暗号化されずに送信されるため盗聴されると不正侵入される危険性があったが、SSHであれば通信内容が暗号化されるため盗聴されたとしてもパスワードや入力したコマンド、その結果が分からなくなる
  • SSHにはポートフォワード機能がある。例えばローカルの8080にアクセスしたら、それをsshサーバーに転送してそのサーバーから見たホストXの80番ポートに転送、といったことができる ssh -L 8080:X:80 remote
    • これを利用しているのがVPNである

8.3 ファイル転送(FTP

  • FTPでは2つのTCPコネクションが利用される。1つは制御用、もう1つはデータ転送用

8.4 電子メール(E-Mail)

  • メールはSMTP(Simple Mail Transfer Protocol)によって提供される
  • 初期の電子メールでは電子メールの送信者が利用しているコンピュータと宛先のコンピュータ間で直接TCPコネクションが張られて電子メールが配送されていた
    • その方法だと同時に電源が入っていないと届かず、運用が厳しいので常に電源が入っているメールサーバーを経由するようになった。そのためのプロトコルがPOP(Post Office Protocol)である
  • 電子メールの配送先の管理はDNSによって行われており、メールアドレスとそのメールアドレス宛のメールを送信すべきメールサーバーのドメイン名を登録する。これがMXレコード
  • MIME(Multipurpose Internet Mail Extensions)によってメールで転送できるデータ形式を拡張して、メールで静止画や動画、音声、その他のファイルなど様々なものを送ることができる
  • SMTPはメールを送信するためのプロトコル、POPはメールサーバーからメールを受け取るためのプロトコル
  • IMAPはPOPのようにメールを受信するためのプロトコルであるが、メールのデータをクライアントではなくサーバーで管理することが特徴。これによって複数のコンピュータでメールを確認することができる

8.5 WWW(World Wide Web

  • URIはIdentifier、URLはLocatorで、URIはインターネットに限らずあらゆる資源を識別できるよう考えられた識別子
  • URIのスキーム一覧 https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
  • HTTP1.0までは1つの「コマンド」と「応答」をやり取りするたびにTCPコネクションを確立し、切断していたが、HTTP1.1からは1つのコネクションで複数のコマンド/応答を行えるようになり、TCPのコネクションの確立/切断によるオーバーヘッドが減った

8.6 メットワーク管理(SNMP

  • SNMP(Simple Network Management Protocol)はネットワーク管理のためのプロトコル

8.7 その他のアプリケーションプロトコル

  • インターネット電話やビデオ会議の呼び出しを行うためのプロトコルH.323SIPなどがある
  • UDPは信頼性がないため、パケットが喪失したり順番が入れ替わったりすることがある。UDPでリアルタイムなマルチメディア通信を実現するためには、パケットの順序や送信時刻を管理する必要があり、これを行うのがRTP(Real-Time Protocol)
  • RTPはそれぞれのパケットにタイムスタンプとシーケンス番号を付加し、これによって受け取り側はマルチメディアの再生タイミング調整でき、パケットの抜けを把握できる
  • MP3=MPEG1 Audio Layer Ⅲ
  • 例えば電子メールはメールサーバーに複数のクライアントが接続する1:Nの通信形態だが、端末どうしで接続する1:1の通信形態をP2P(Peer To Peer)と呼ぶ
    • Skypeはこれを使っている
  • サーバークライアントモデルでは、クライアントはNATの内側でも問題ないが、P2PではNATを超えて双方の端末に接続できる必要がある

第9章セキュリティ

9.1 TCP/IPとセキュリティ

9.2 セキュリティの構成要素

  • ファイアウォールにはたくさんの種類/形態があり、規定されたパケットのみを通過させる/させないパケットフィルタリングタイプや、アプリケーションを介在させ不正な接続を遮断するアプリケーションゲートウェイタイプなどがある
  • ファイアウォールの共通的な考え方は、「危険にさらすのは特定のホストやルーターのみに限定する」ということ
  • ファイアウォールでは、例えばTCPのコネクション確立要求パケットはあるネットワークの外部からのものは破棄し内部からインターネットに向けてのものは許可する、といったことができる
    • TCPヘッダのSYNが1でACKが0のTCPパケットがインターネット側から流れてきたときには遮断する、とすれば実現可
  • ファイアウォールを通過した悪意のある通信を検知するためのものがIDS(侵入検知システム)
  • PKI(Public Key Infrastructure : 公開鍵基盤)は、通信の相手が本物かを第三者に証明してもらうための仕組み。この第三者をCA(Certification Authority : 認証局)と呼ぶ
    • 利用者はCAが発行する証明書に記載された通信相手の秘密鍵に対応する公開鍵を使い暗号化し通信する
    • これは暗号化メールやHTTPSによるWebサーバーとの通信で利用されている

9.3 暗号化技術の基礎

階層 暗号化技術
アプリケーション SSH, SSL-Telnet
セッション、トランスポート SSL/TLS, SOCKS V5の暗号化
ネットワーク IPsec
データリンク Ethernet, WANの暗号化装置

9.4 セキュリティのためのプロトコル

  • VPNを構築するときに使われるのがIPsecで、IPヘッダの後に暗号ヘッダや認証ヘッダをつけ、そのヘッダ以降のデータを暗号化して解読できないようにする
  • WebではTLS/SSLを使ってHTTP通信の暗号化を行う。それがHTTPSである
    • Transport Layer SecurityとSecure Sockets Layerの略。最初にNetscape社が提案したときはSSLだったが標準化に際してTLSとなったがSSLとまとめて呼ぶ場合もある
  • HTTPS通信を行うまでの、クライアントとサーバーのやりとりは以下
1. クライアントがサーバーにHTTPSでアクセス
2. サーバーが「公開鍵A」と「証明書」をクライアントへ送信
3. クライアントが「証明書」のCAを確認し、CAの公開鍵を取得、それを利用して証明書を復号化
4. クライアントが復号化した証明書を見て通信相手が本物かを判断し、
   本物であるとわかった場合は「共通鍵」を作成
5. クライアントが、サーバーからもらった公開鍵Aを用いて4で作成した共通鍵を暗号化し、サーバーへ送信
6. サーバーが受け取ったデータを秘密鍵で復号化し共通鍵を知る
7. お互いにクライアントが作成した共通鍵を知ることができたため、ここからHTTPS通信が可能となる!
  • 公衆無線LANなどでID/パスワードで認証をかけて限られた人にのみネットワークを利用させるために用いられる認証の仕組みがIEEE802.1X
    • IEEE802.1Xでは認証されていない端末には一時的なIPを付与し、認証サーバーとのみ通信できるようにしておき、認証されたらIPアドレスを再度付与してインターネット接続を提供する