hayashi-ay / booklist

1 stars 0 forks source link

マスタリングTCP/IP―入門編―(第6版) #8

Closed hayashi-ay closed 1 year ago

hayashi-ay commented 2 years ago

https://www.amazon.co.jp/gp/product/4274224473

hayashi-ay commented 1 year ago

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

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

1.9.2 ネットワークインターフェイス

1.9.3 リピーター

物理層でネットワークを延長する機器。減衰して変形した信号の波形を増幅・整形して流す。 伝送速度の異なる通信媒体を接続することはできない。その場合はブリッジやルーターを用いる。

1.9.4 ブリッジ/レイヤ2スイッチ

データリンク層でネットワーク同士を接続する機器。フレームをメモリ上にバッファしてから相手側セグメントに送り出す。そのため、伝送速度の異なるデータリンク同士を接続することができる。

1.9.5 ルーター/レイヤ3スイッチ

ネットワークとネットワークを接続する機器。

1.9.6 レイヤ4-7スイッチ

hayashi-ay commented 1 year ago

第2章 TCP/IP 基礎知識

2.2 TCP/IPの標準化

hayashi-ay commented 1 year ago

第3章 データリンク

3.1 データリンクの役割

コンピュータで扱う情報は2進数だが、通信媒体でやり取りされるのはで熱の変化や光の点滅、電波の強弱。これらを2進数に変換する働きを担うのは物理層の役割。データリンク層では単なるビット列ではなくフレームという意味のある単位で相手機器に伝える。

3.2 データリンクの技術

3.2.1 MACアドレス

MACアドレスにはIEEEからベンダごとに割り当てられる識別子が含まれている。

3.2.2 媒体共有型のネットワーク

通信媒体を複数のノードで共有するネットワーク。同じ通信経路を使ってデータを送受信する制御を行うので基本的には半二重通信となり、通信の優先権を制御する仕組みが必要になる。

3.2.3 媒体非共有型のネットワーク

通信媒体を共有せずに専有するネットワーク。通信媒体を共有しないため、基本的には全二重通信となる。 1対1接続で全二重通信の場合は衝突が発生しなくなるので、検知のための仕組みも不要になり効率のよい通信が可能になる。

3.2.5 ループを検出するための技術

ネットワークのトポロジーや使用するブリッジによっては、ネットワークにループがあるとパケットがネットワークを埋め尽くして通信不能な状態になることがある。この状態をメルトダウンと呼ぶ。

3.3 イーサネット(Ethernet)

3.4 無線通信

3.4.2 IEEE802.11

無線LANは複数の端末が同じ周波数帯を共有する必要がある媒体共有型のネットワーク。そのため衝突検知の仕組みが必要で、CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)というアクセス制御が用いられている。

3.4.3 IEEEE802.11b IEEE802.11g

2.4GHz帯の周波数を利用する無線LAN。 電子レンジも同じ周波数帯を利用するので干渉を受けやすい。

3.4.4 IEEE802.11a

5GHz帯の周波数を利用する無線LAN。 高周波数なので単位時間あたりの波が多く送れる情報量も多いが、干渉も受けやすいので長距離の通信には不向き。

3.4.9 WiMA(Worldwide Interoperability for Microwave Access)

マイクロ波を使って無線接続を行う形式。

3.4.10 Bluetooth

2.4GHz帯の電波を使って通信する規格。小型で電源容量の小さな機器を対象としている。 低消費電力・低コストを実現するBLE(Bluetooth Low Energy)は省電力が必要とされるIoTデバイスなどで活用されている。

3.4.11 ZigBee

転送可能距離が短く転送速度も非常に低速である代わりに安価で消費電力が少ないという特徴を持つ通信方式。電池駆動可能な小型機器への実装に向いている。

3.4.12 LPWA(Low Power, Wide Area)

省電力かつ長距離での無線通信が可能な規格。

img-lpwa-01

3.5 PPP(Point-to-Point Protocol)

OSI参照モデルのデータリンク層にあたるプロトコル。PPPだけでは通信はできず物理層も合わせて必要になる。

3.6 その他のデータリンク

3.6.1 ATM(Asynchronous Transfer Mode)

3.7 公衆アクセス網

公衆通信サービスとは通信事業者に料金を払って通信回線を借りる形態。

3.7.4 FTTH(Fiber To The Home)

光ファイバーを個人宅まで直接引き込む手法。ONU(Optical Network Unit)という装置で光を電気信号に変換してからコンピュータやルータに接続するのが一般的。

hayashi-ay commented 1 year ago

第4章 データリンク

4.2 IPの基礎知識

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

4.2.3 データリンクの抽象化

IPは複数のデータリンクで接続されたネットワーク間の通信を実現するプロトコル。データリンクにはそれぞれ固有の特徴があるが、それらを抽象化するのもIPの役割。たとえば、最大転送単位(MTU: Maximum Transmission Unit)などがある。経路の途中でパケット長よりも小さなMTUのネットワークを通過しないといけない場合もあり、そのような問題への対処としてIPではパケットの分割処理を行う。

4.3 IPアドレスの基礎知識

4.3.4 ブロードキャストアドレス

ホスト部のビットがすべて1であるアドレス。同一リンクに接続されたすべてのホストにパケットを送信するためのアドレス。 ブロードキャストにはローカルブロードキャストとダイレクトブロードキャストの2つがある。 自分が属しているリンク内のブロードキャストがローカルブロードキャストで異なるIPネットワークへのブロードキャストがダイレクトブロードキャストである。 ダイレクトブロードキャストはセキュリティ上の問題があるため、ルーターで転送されないように設定されている場合が多い。

4.3.5 IPマルチキャスト

マルチキャストは特定のグループに属するすべてのホストにパケットを送信するために利用される。マルチキャスト機能が使用されるまではブロードキャストで全端末にパケットを送信し受信したホストのIPより上の層で必要かどうかを判定していた。このやり方では不要なパケットがネットワークを流れるのとルーターを超えれないことを考慮しないといけないので異なるセグメントにも同じパケットを送りたい場合は別の仕組みを使わないといけなかった。IPマルチキャストではクラスDのIPアドレスを使用する。

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

4.4.1 IPアドレスと経路制御(ルーティング)

4.4.2 経路制御表の集約

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

4.5.2 IPデータグラムの分割処理と再構築処理

ホストやルーターは必要に応じてIPデータグラムを分割する必要がある。分割されたIPデータグラムを元に戻す処理は宛先ホストだけで行われる。

4.5.3 経路MTU探索(Path MTU Discovery)

経路MTUとは送信先ホストから宛先ホストまで分割処理が必要にならない最大のMTUのこと。経路に存在するデータリンクの最小MTUと等しくなる。分割処理はルーターの負荷になるのと小さいサイズでパケットを送ると分割は発生しないがネットワークの利用効率は下がるので、分割処理が必要にならない最大のMTUでパケットを送るのが最も効率が良くなる。

4.6 IPv6(IP version6)

4.6.4 IPv6アドレスのアーキテクチャ

4.6.5 グローバルユニキャストアドレス

全世界で一意に決まるアドレス。

4.6.6 リンクローカルユニキャストアドレス

データリンクの同一リンク内で一意に決まるアドレス。

4.6.7 ユニークローカルアドレス

インターネットとの通信を行わない場合に利用されるアドレス。

4.6.8 IPv6での分割処理

IPv6では分割処理は始点ホストのみで行われ、ルーターは分割処理をしない。そのため経路MTU探索がほぼ必須の機能になる。

4.7 IPv4ヘッダ

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

hayashi-ay commented 1 year ago

第5章 IPに関連する技術

5.2 DNS(Domain Name System)

5.2.3 ドメイン名の構造

5.3 ARP(Address Resolution Protocol)

DNSによりIPアドレスが決まれば宛先IPアドレスに向けてIPデータグラムを送信することができるが、実際にデータリンクを利用して通信する際にはIPアドレスに対応したMACアドレスが必要となる。

5.3.1 ARPの概要

宛先IPアドレスを元に次にパケットを送るべき機器のMACアドレスを知りたいときに使用するプロトコル。ARPはIPv4でのみ利用され、IPv6では代わりにICMPv6の近隣探索メッセージが利用される。

5.3.4 RARP(Reverse Address Resolution Protocol)

ARPの逆でMACアドレスからIPアドレスを知りたい場合に使われるプロトコル。

5.3.5 Gratuitous ARP(GARP)

自分のIPアドレスに対するMACアドレスを知りたい、というARPパケットのこと。IPアドレスの重複を確認するために使用される。

5.3.6 代理ARP(Proxy ARP)

5.4 ICMP(Internet Control Message Protocol)

5.4.1 IPを補助するICMP

IPネットワークのデータグラム処理のおける誤りの通知や通信に関する情報の通知などのために使用されるプロトコル。ICMPに関するICMP通知は無限ループを防ぐために送られない。

5.4.2 主なICMPメッセージ

5.4.3 ICMPv6

5.5 DHCP(Dynamic Host Configuration Protocol)

5.5.1 プラグ&プレイを可能にするDHCP

5.5.2 DHCPの仕組み

DHCPを利用するためにはDHCPサーバーが必要になる。そしてDHCPサーバーに配布するIPアドレスなどの設定を行う必要がある。

5.5.3 DHCPリレーエージェント

企業や学校など複数の物理データリンクにまたがるネットワークの場合はそれぞれのセグメントにDHCPサーバーを設定して配布するIPアドレスの設定を行うのは大変。なのでそれぞれのセグメントにはDHCPリレーエージェントを置くことでDHCPの設定を一元管理することができる。

5.6 NAT(Network Address Translator)

5.6.1 NATとは

プライベートIPアドレスをグローバルIPアドレスに変換する技術。アドレスだけでなくポート番号も付け替える技術のことをNAPTと呼ぶが、現在は単にNATと呼んでもNAPTのことを指すのが普通。アドレスが枯渇しているIPv4のために生まれた技術だが、IPv6でもセキュリティの向上やIPv4との互換のための使用される。

5.6.2 NATの仕組み

TCPやUDPではIPヘッダの中のIPアドレスを含めてチェックサムを計算するので、IPアドレスが変わるとチェックサムの更新も必要になる。

5.6.3 NAT64/DNS64

5.6.4 CGN(Carrier Grade NAT)

ISPレベルでNATを行う技術。

5.6.5 NATの問題点

NATには変換テーブルがあるため以下のような制限がある。

5.6.6 NATの問題点の解決とNAT超え

5.7 IPトンネリング

通信したいプロトコルそのままでは通信が不可能な場合などに使用される。たとえばIPv4しか対応していないネットワークの間にIPv6しか対応していないネットワークがある場合など。 パケット全体を別レイヤのプロトコルのデータに埋め込んで通信するカプセル化によって実現する。

5.8 その他のIP関連技術

5.8.1(Virtual Router Redundancy Protocol)

複数のルーターによる冗長化によって耐障害性を高める仕組み。

5.8.2 IPマルチキャスト関連技術

マルチキャストの通信は主にUDPをつかて行われる。コネクションレスなので通信相手を特定せずにパケットを送ることができる。受信者がいないのにネットワークにマルチキャストパケットを送り続けるのは無駄になるので受信者がいるかどうかの確認が大事になる。

5.8.5 IPエニーキャスト

通常はインターネット上の特定の機器に対して一意に割り当てられるIPアドレスを特定のサービスに対して共通に割当可能とするための技術。IPエニーキャストを使うことで複数のサーバーで1つのIPアドレスを共有することができ、サーバーを分散配置することが可能になる。

5.8.4 通信品質の制御

IPはもともとベストエフォートのプロトコルとして設計開発され通信品質の保証を提供する仕組みがなかった。動画や尾根性、機械制御などのリアルタイム性が要求される通信サービスが普及してきたこともあり、IPを使った通信サービスの品質を保証するための技術が登場した。大枠の仕組みとしては、通信品質を保証したいパケットについては特別扱いをして優先的に処理する。大きくRSVP(Resource Reesrvation Protocol)を用いてきめ細かい優先制御をするIntServと相対的でおおざっぱな優先制御をする DiffServがある。

5.8.5 明示的なふくそう通知

輻輳が生じた場合、データパケットを送信しているホストは送信データ量を減らす必要があるが、TCPによる輻輳制御ではパケット喪失の有無で判断するためパケットが失われる前にパケットの送信量を減らすことができない。それを解決するためにECN(Explicit Congestion Notification)という機能が追加された。輻輳を通知するために新たなパケットを送信するのは本末転倒なので、ECNでは行きのパケットのIPヘッダにルーターが服装していたかどうかを記録し、帰りのパケットのTCPヘッダで輻輳が起きていたかを伝えるメカニズムになっている。

5.8.6 Mobile IP

ホストが接続しているサブネットが変わってもIPアドレスが変わらないようにする技術。

hayashi-ay commented 1 year ago

第6章 TCPとUDP

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

6.2 ポート番号

6.3 UDP(User Datagram Protocol)

6.4 TCP(Transmission Control Protocol)

6.4.2 シーケンス番号と確認応答で信頼性を提供

TCPでは、送信したデータが受信側に到着した際に受信ホストは確認応答(ACK)というデータが到着したことを知らせるパケットを送信ホストに送信する。確認応答があれば、データは相手ホストに到着したことになり、一定時間待っても戻ってこなければデータが喪失した可能性があるため、再度同じデータを送信する。

確認応答処理、再送処理、重複制御にはシーケンス番号が使われる。シーケンス番号はコネクション確立時にランダムに決まり、その後はオクテットごとに1ずつ加算される。

6.4.3 再送タイムアウトの決定

再送せずに確認応答の到着を待つ時間を再送タイムアウト時間と呼ぶ。TCPでは、パケットを送信するたびにラウンドトリップ時間と分散を計測して、それらを考慮に入れた値を再送タイムアウト時間にする。

6.4.4 コネクション管理

6.4.5 TCPはセグメント単位でデータを送信

TCPではコネクション確立時に通信を行うデータ単位を決定する。これを最大セグメント長(MSS: Maximum Segment Size)と呼ぶ。IPで分割処理されない最大のデータ長が理想的な最大セグメント長となる。MSSはスリーハンドシェイクのときに、送受信のホスト間で決められる。

6.4.6 ウィンドウ制御で速度向上

TCPの1セグメントごとに確認応答を行うとラウンドトリップ時間が長くなると通信性能が悪くなる。確認応答を待たずに複数セグメントを送れるようにすることをウィンドウ制御と呼び、その際のセグメントのサイズをウィンドウサイズと呼ぶ。

6.4.7 ウィンドウ制御と再送制御

6.4.8 フロー制御(流量制御)

TCPでは送信側は受信側の受信能力に合わせてパケット送信量を制御し、これをフロー制御と呼ぶ。受信側の都合に関係なく送信側がパケットを送ってしまうと受信側の負荷が高いときなどに受信側がデータを受信しきれなくなってしまうという問題がある。

6.4.9 ふくそう制御(ネットワークの混雑解消)

TCPによる通信では輻輳を避けつつ効率的にデータ送信量を制御するかが大事になる。

6.4.10 ネットワークの利用効率を高める仕組み

パケットを送る回数を減らすことがネットワークの利用効率を高めることに繋がり色々な手法がある。

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

6.5.1 QUIC(Quick UDP Internet Connections)

Googleが提案しIETFによって標準化が進められているトランスポートプロトコル。 UDP+QUICで1つのトランスポートプロトコルの役割を果たし、以下の機能を提供する。

6.5.2 SCTP(Stream Control Transmission Protocol)

6.5.3 DCCP(Datagram Congestion Control Protocol)

6.5.4 UDP-Lite(Lightweight User Datagram Protocol)

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

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

hayashi-ay commented 1 year ago

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

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

7.2 経路を制御する範囲

7.2.2 自律システムとルーティングプロトコル

経路制御に関するルールを決めて、それをもとに運用する範囲を自律システム(AS: Autonomous System)や経路制御ドメイン(Routing Domain)と呼ぶ。自律システム内の経路制御に使用されるのがIGPで自律システム間の経路制御に使用されるのがEGPである。

7.2.3 EGPとIGP

ルーティングプロトコルは、大きくEGP(Exterior Gateway Protocol)とIGP(Interior Gateway Protocol)の2つに分類される。 IGPでは、RIP(Routing Information Protocol)やRIP2、OSPT(Open Shortest Path First)などのプロトコルが利用され、EGPではBGP(Boarder Gateway Protocol)が利用される。

7.3 経路制御アルゴリズム

7.3.1 距離ベクトル型(Distance-Vector)

距離と方向によって目的のネットワークやホストまでの位置を決定するアルゴリズム。 処理は比較的簡単だが距離と方向の情報しかないので、ネットワークの構造が複雑になると経路の収束に時間が掛かる、経路にループが生じやすくなるという問題がある。各ルーターごとに情報が異なるので、情報の正しさを確認するのが困難。

7.3.2 リンク状態型(Link-State)

ルーターがネットワーク全体の接続状態を理解して経路制御表を作成するアルゴリズム。各ルーターの情報が同じになれば正しい経路制御が行われる。ネットワークが複雑になっても安定した経路制御を行うことができるが、ネットワークトポロジーから経路制御表を求める計算は複雑でCPU能力とメモリ資源が必要になる。

7.4 RIP(Routing Information Protocol)

7.4.1 経路制御情報をブロードキャストする

7.4.2 距離ベクトルにより経路を決定

RIPは距離ベクトルによって経路を決定し、経路にはホップ数(通過するルーターの数)が使用される。

7.4.3 サブネットマスクを利用した場合のRIPの処理

7.4.4 RIPで経路が変更されるときの処理

7.4.5 RIP2

7.5 OSPF(Open Shortest Path First)

7.5.1 OSPFはリンク状態型のルーティングプロトコル

OSPFでは各リンクに重みをつけることができ、この重みが小さくなるような経路選択がされる。

7.5.2 OSPFの基礎知識

7.5.3 OSPFの動作の概要

7.5.4 階層化されたエリアに別けてきめ細かく管理

7.6 BGP(Border Gateway Protocol)

7.6.1 BGPとAS番号

BGPでは通過するASの数を元に経路制御を行う。それぞれの自律システムに対して16ビットのAS番号が割り当てられている。

7.6.2 BGPは経路ベクトル

RIPやOSPFではホップ数やネットワークの帯域を考えた効率の良い転送を目指すが、BGPでは各AS間での接続契約に基づいたパケット配送を目指す。BGPでは目的のネットワークに到達するまでのAS番号のリストが作られ、これをAS経路リストと呼ぶ。経路ベクトル方式では、線形に経路を持つのでループの検出ができる。

7.7 MPLS(Multi-Protocol Label Switching)

IPパケットの転送時にIPアドレスではなく、IPパケットにラベルという別の値を設定し、それに基づいて転送する方式をラベルスイッチングと呼び、代表例がMPLSである。

7.7.1 MPLSネットワークの動作

7.7.2 MPLSの利点

hayashi-ay commented 1 year ago

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

8.3 ファイル転送(FTP)

異なるコンピュータ間でファイルを転送する際に使用されるプロトコル。制御用とデータ送信用の2つのTCPコネクションを利用する。 データ送信用のコネクションは制御用のコネクションとは逆向きに確立されるが、NATのある環境などでは通信できないのでコネクション確立の向きを変えるコマンドがある。

8.4 電子メール(E-Mail)

8.4.4 SMTP(Simple Mail Transfer Protocol)

電子メールを配送するアプリケーションプロトコル。SMTPには送信者を認証する方法がないのでなりすましなどを防げない。そのため以下のような対策がある。

8.4.5 POP(Post Office Protocol)

POPサーバーからメールを取得するためのプロトコル。他人にメールを読み取られることを防ぐためにユーザーの認証も行う。

8.4.6 IMAP(Internet Message Access Protocol)

POPと同様に電子メール等のメッセージを受信するためのプロトコル。POPの場合は電子メールの管理をクライアント側で行うがIMAPの場合はサーバー側で管理を行う。

8.5 WWW(World Wide Web)

8.5.6 Webアプリケーション

8.6 ネットワーク管理(SNMP)

8.6.1 SNMP(Simple Network Management Protocol)

SNMPでは管理する側をマネージャー(ネットワーク監視端末)、管理される側をエージェント(ルーター、スイッチ)と呼ぶ。マネージャーとエージェントの間の通信のやり取りを定めたものがSNMP。SNMPではMIBと呼ばれるエージェントが管理している管理情報のデータベースの値を見ることと新しい値を設定することができる。

8.6.2 MIB(Management Information Base)

ネットワーク機器の状態や設定情報が格納されたデータベースのこと。

8.6.3 RMON(Remote Monitoring MIB)

MIBがネットワーク機器のインターフェイス(点)を監視するパラメータ群から構成されているのに対して、RMONは接続されるネットワークの回線(線)を監視するパラメータ群から構成されている。RMONにより監視可能な部分が点の情報から線の情報に広がり、ネットワークを効率的に監視することが可能になる。

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

8.7.2 P2P(Peer To Peer)

ネットワーク上に展開する各端末やホストがサーバーなどを介さずに1対1で直接接続し通信を行う形態。

8.7.3 LDAP(Lightweight Directory Access Protocol)

ネットワーク上の資源を一元管理する仕組みをディレクトリサービスと呼び、LDAPはディレクトリサービスにアクセスするためのプロトコル。

8.7.4 NTP(Network Time Protocol)

ネットワークに接続される機器の時刻を同期するためのアプリケーションプロトコル。NTPはStratumという階層構造をしていてStratum0に位置するGPS衛星や原子時計の精確な時刻情報(reference clock)を下位のサーバーに配信する仕組みになっている。

hayashi-ay commented 1 year ago

第9章 セキュリティ

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

9.4.1 IPsecとVPN

hayashi-ay commented 1 year ago

付録

付.3 物理層

付.3.1 物理層についての基礎知識

物理層にはビット列を電圧の高低や光の点滅などの物理信号に変換して、実際に情報を送る役割がある。物理層の規格ではビットと信号の変換規則、ケーブルの構造や品質、コネクタの形状などを規定している。

付.3.2 0と1の符号化

付.4 コンピュータを結ぶ通信媒体についての基礎知識

付.4.1 同軸ケーブル

付.4.2 ツイストペアケーブル(より対線)

付.4.3 光ファイバーケーブル

付.4.4 無線

hayashi-ay commented 1 year ago

ネットワークについてひと通り基本的な知識を確認できました。体系的に勉強したことがなかったのでOSI参照モデルでの物理層、データリンク層やネットワーク層での経路制御について知ることが多かったです。カバー範囲が広い分、説明が薄いなと感じる箇所もある一方で入門書という立ち位置でネットワークに関連しないITの専門用語はあまり使われていなくて冗長さや逆に分かりにくい気もしました。