0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWSを理解する[通信の仕組み編]

Last updated at Posted at 2021-05-15

#概要
はじめに、この記事はAWS初学者が備忘録として作成しています。
ですが、私のような初学者のために少しでもなればと思い、公開しています。
不適切や、わかりにくい点を見つけた場合はご指摘頂ければ幸いです。

  1. ネットワークを構築する
  2. webサーバーソフトをインストールする
  3. webサーバーにWordPressをインストールする
  4. 通信の仕組みを理解する👈今ここ
  5. S3を使って公開する

#TCP/IPとは
##IPアドレス

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

##ポート番号

  • ポート番号を使うことで、一つのIPアドレスで同時に複数のアプリケーションが通信できる。
  • WebやDNS、メール送受信向けのSMTPなど、よく使われるサービスは利用するポート番号が決まっており、それをウェルノウンポートと呼ぶ
  • Webサーバーは、ウェルノウンポートとしてポート80番を用いる

##DNS

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

##HTTP

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

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

役割 代表的なプロトコル
アプリケーション層 ソフトウェア同士が会話する HTTP, SSH, DNS, SMTP
トランスポート層 データのやりとりの順番を制御したい、エラー改正したりするなど、信頼性を高めたデータの転送を制御する TCP, UDP
インターネット層 IPアドレスの割り当て、ルーティングをする IP, ICMP, ARP
インタフェース層 ネットワーク上で接続されている機器同士で通信する Enthernet, PPP

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

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

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

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

###Ethernetでカプセル化(インタフェース層)
IPでカプセル化する段階でIPアドレスが付くので、実際にLANや電話回線などの配線上に流すことができます。この時、それぞれの配線の規格に準拠したヘッダーがいくつか付けられます。
たとえばLANは、Ethernetという規格を使っています。
Ethernetでは、先頭に末尾に幾つかのデータが追加されます。これをEthernetフレームと言います。
これには送信元MACアドレスや、宛先MACアドレスなどの情報が含まれます。

###EthernetとTCP/IPの関係
Ethernetで通信するパソコンやサーバー、各種ネットワーク機器などのホストには、雄一無二のMACアドレスと呼ばれる番号がふられています。パソコンやネットワーク機器には、05:0c:ce:d8:1b:a9のような文字列シールが貼られていることがありますが、これがMACアドレスです。

####ARPでIPアドレスを解決する
Ethernetでは、MACアドレスを頼りにデータを送信します。つまり05:0c:ce:d8:1b:a9宛に送信するというように宛先を特定します。
Ethernetのデータ通信では、Ethernetフレームだけを見て、中身のIPまでは見ません(そもそもEthernetでは、Ethernetフレームさえ付いていればどのようなデータも送受信できるので、中身がIPとは限りません)
そうすると、どのMACアドレスを持つホストが、どのIPアドレスに対応しているのかという対応表が必要となります。これをカイケルするのがAPRというプロトコルです。
たとえば、10.0.1.10というIPアドレスにデータを送信したいとします。最初に送信するときは、このIPアドレスを持つホストがどのMACアドレスを持っているのかわかりません。
そこで、10.0.1.10というIPアドレスを持っているホストは誰ですか?と問い合わせます。(ARP要求)
すると、そのIPアドレスを持っているホストは、僕です。macアドレスは05:0c:ce:d8:1b:a9ですという応答を返します。
これによって10.0.1.10と05:0c:ce:d8:1b:a9とが結びつき、対応表を作れます。
以降の通信では、この対応表を使って、もし、10.0.1.10が宛先なら、05:0c:ce:d8:1b:a9に送信するようにします。

##UDPとTCP
###UDPでのデータ通信
UDPはステートレスプロトコルと呼ばれる、状態を保たず、送りっぱなしのプロトコルです。
UDPの構造は単純で送信元ポート番号、宛先ポート番号の他には、データの長さとチェックサム(データの総和を検算することで、データに誤りがないかを調べる仕組み)しかありません。

#tips

  • ARPはルーターを超えることができず、ARP要求で調べられMACアドレスとIPアドレスの対応は、自分が所属しているサブネット内に留まる。ルーターを超える場所にデータを転送するときは、そのルーターでまずはEthernetで届けます。
  • インターネットに向けて通信する場合、最寄りのルーターとはデフォルトゲートウェイ(IPアドレスが自動設定になっているときは、デフォルトゲートウェイも自動設定されます。)で指定されたものです。
  • クライアントが作ったEthernetフレームは、そのままDNSサーバーへ届くわけではなく、届くのは最寄りのルーターまでで、そこから先は、ルーターがEthernetヘッダーを付け替えて、DNSサーバーに向けて送信します。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?