スクリーンショット_2020-01-30_00

AWS習得編 Amazon Web Service 基礎からのネットワーク&サーバー構築 Chapter9


こちらの書籍について学んだことです。

Chapter9 TCP/IPによる通信の仕組みを理解する

DNSでの名前解決やHTTPを使った通信などのデータのやり取りは、TCP/IPの上に成り立っている。TCP/IPは、ネットワーク状況に合わせて適切なデータ送信サイズを決めたり、エラーがあったときに再送したりするなど、より詳細な通信方法を定義している。
これまで実際に手で触れてきた通信について、その定義や仕組みを理解する。

9-1 TCP/IPとは

ここまで、構築したWebサーバーにローカル環境のWebブラウザから接続して、Webページを表示するという一連の操作の中で、IPアドレス、ポート番号、DNS、HTTPについて、次のことを説明された。

IPアドレス
ネットワーク上の通信先を一意に特定するもの。ICANNという団体によって管理されている。
パブリックIPアドレスとプライベートIPアドレスがある。インターネットを通じて通信するにはパブリックIPアドレスが必要。インターネットとは直接通信しないプライベートなネットワークのなかでは、プライベートIPアドレスを自由に利用できる。
IPアドレスを使った通信は、ルーターがパケットをバケツリレーのように転送することで実現している。パケットを次にどこに渡せばよいかというルーティング情報は、EGPやIGPを使って交換する

ポート番号
一つのIPアドレスで同時に複数のアプリケーションが通信できる。
よく使われるサービスはウェルノウンポートがある

DNS
IPアドレスは数字の羅列で覚えにくいため、一般にブラウザからのアクセスはドメイン名を使う
ドメイン名を使って通信する際には、ドメイン名がどのパブリックIPアドレスなのかを知る必要がある。ドメイン名とIPアドレスとの相互変換をすることを名前解決という。
名前解決には、DNSサーバーを使う

HTTP
webサーバーとwebブラウザは、HTTPを用いてデータをやり取りする。

■TCP/IPモデル
これらの一連の処理は、TCP/IPモデルという通信モデルで構成されている。各層には、その層の役割を果たす各プロトコルがある。

TCP/IPモデルは、ISO(国際標準化機構)が定めた7階層からなるOSI(Open Systems Interconnection)参照モデルをTCP/IP向けにアレンジしたモデル。

アプリケーション層HTTP,SSH,DNS,SMTP
トランスポート層TCP,UDP
インターネット層IP,ICMP,ARP
インターフェース層Ethernet,PPP

階層化されている理由は、各階層を独立させるため。
上位の階層は下位の階層が何でもよく、また下位の階層は上位の階層の内容は分からなくてもよい、という構造になっている。

今はLANケーブルでEthernetを用いるのが主流。
15年ほど前は電話回線でインターネットに接続するのが主流だった。
電話回線ではEthernetでなくPPPというプロトコルを使う。これもインターフェース層。インターフェース層よりも上の階層では、実際に通信しているのがEthernetかPPPかもしくはそれ以外なのかを気にすることなく通信できる。

■データのカプセル化

これらの階層を意識して、構築したwebサーバーにローカル環境のwebブラウザから接続してwebページを表示するという操作のうち、DNSが名前解決するという処理に商店を当てて、何が起きているのかをもう少し詳しく見てみる。

①名前解決リクエストの作成(アプリケーション層)
Webブラウザは、アドレス欄に入力されたURLからドメイン名を抜き出し、名前解決をしようとする。
DNSサーバーに対して名前解決の処理を依頼するため、DNSプロトコルで定められたフォーマットに従い、名前解決のリクエストデータを作成する。

②UDPでカプセル化(トランスポート層)
①のデータを送信するには、そのデータをトランスポート層に渡す必要がある。このとき、①のデータがトランスポート層のプロトコルでカプセル化する。
カプセル化とは、郵便で言えば封筒に入れるというイメージの処理。郵便の場合、手紙の内容は何であれ、封筒に入れて宛先を書けば郵便局に処理を頼める。
郵便局は、その封筒の内容を知る必要はない。
カプセル化もこれと同様に、中身に手を加えずに、さらに下の階層で処理ができるようにデータを付与する。
トランスポート層のプロトコルは、TCPかUDPのいずれか。DNSでは、一般にUDPを使う取り決めになっているため、UDPに引き渡す。
このとき、送信元のポート番号、宛先ポート番号、データの長さ、エラーがないかどうかを調べるチェックサムなどの情報が追加される。
DNSの場合、ウェルノウンポートは53番のため、宛先ポート番号は53が設定される。これらをUDPヘッダーと呼ぶ。

DNSは基本的にUDPで通信するが、名前解決リクエストが512バイトを超えた時はTCPで通信する。

③IPでカプセル化(インターネット層)
次に、②のデータをインターネット層に渡す。
インターネット層のプロトコルはIP。IPのカプセル化では送信元IPアドレス、宛先IPアドレス、データ長、生存時間などの情報が追加される。これらをIPヘッダーと呼ぶ。

④Ethernetでカプセル化(インターフェース層)
③の段階でIPアドレスがつくため、実際にLANや電話回線などの配線上に流すことができる。
このとき、それぞれに配線の規格に準拠したヘッダーがいくつかつけられる。
たとえばLANは、Ethernetという規格を使っている。Ethernetでは、先頭と末尾にいくつかのデータが追加される。これをEthernetフレームという。
Ethernetフレームには、送信元MACアドレスや宛先MACアドレスなどの情報が含まれる。
なお、Ethernetフレームは、全体の長さ(各層のヘッダー込み)が最大1518バイト以内と定められている。
そのため。大きなデータを送信する場合はいくつかに分割される。分割される場合、Ethernetフレーム内で連番管理され、順序が正しくなるよう、送受信の行程でうまく並び替えられる。
標準規格ではないが、1516バイトではなく8〜16Kバイト程度にまで広げたジャンボフレーム規格というのがある。やり取りするパケットが減り、高速にデータを送受信できるようになる。

■EthernetとTCP/IPの関係
Ethernetで通信するパソコンやサーバー、各種ネットワーク機器のホストには、唯一無二のMACアドレスと呼ばれる番号が振られている。パソコンやネットワーク機器には、05:05:050:50:50:5的な文字列シールが張られている。これをMACアドレスという。
メーカーの工場出荷時に重複がないように定められる。
一部製品にMACアドレスを変更できるものがある。
EthernetではMACアドレスを頼りにデータを転送する。
中身のIPまでは分からない。
どのMACがどのIPか?これを解決するのがAddress Resolution Protocol
ARPというもの。
ARP要求はルータを超えられない。

9-2 UDPとTCP

UDPはステートレスプロトコルと呼ばれる、状態を持たないプロトコル
送信元ポート番号、宛先ポート番号、データの長さ、チェックサムくらいしか持ってない。

相手から返答がないときは再度処理すればよい場合はUDPが適してる。

TCPでのデータ通信
高い信頼性を必要とするならこっち
Transmission ControlProtocol

TCPはコネ

SYN 通信を開始したいことを示す
ACK 受領の合図を示す
URG 緊急データが入っていることを示す
PSH 即時送信データがあることを示す
RST エラーなどで通信をリセットしたいことを示す
FIN 通信を終了したいことを示す

相手からの着信を受け入れない設定

ファイアウォールの設定で、自分から通信を始めるのはいいけど、相手から自分側に接続されてくるのは拒否したいという場合がある。そのときは、TCP/IPの3ウェイハンドシェークの仕組みを利用して、SYNがついたパケットは通さないという設定をする。そうすることで、通信の開始をするパケットを受け入れないことになり、結果として相手から自分側に接続されるのを拒否できる。

TCP通信で肝となるのがACKの存在。


9-3 まとめ

以下についてやった。
①TCP/IPにおいてパケットが送受信される仕組み
②UDPとTCPの違い

ネットワークを運用するための便利なツール3選
①Zabbix
②New Relic
③CloudWatch


この記事が気に入ったらサポートをしてみませんか?