L4
@OSI参照モデル¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. トランスポート層 (L4
)¶
トランスポート層とは¶
アプリケーション層のプロトコルを適切なアプリケーションに振り分けるプロトコル (例:TCP、UDPなど) を処理する層である。
トランスポート層の仕組み¶
▼ 全体像¶
クライアントからのリクエスト時に、ネットワーク層から渡されたパケットのポート番号情報を元に、アプリケーション層の特定のプロセスにパケットを渡す。
また反対に、レスポンス時にアプリケーション層のプロセスから出力されたパケットに情報を付加し、ネットワーク層に渡す。
この時、各アプリケーションはプロセスとして稼働していることに留意する。
▼ クライアントからのリクエスト時 (図の 『➡︎』 )¶
(1)
-
ネットワーク層でプライベートIPアドレスを使用して、リクエスト先のパソコンを識別する。
(2)
-
トランスポート層で、ポート番号を元にして、アプリケーション層のプロセスにパケットを送信する。
*例*
インバウンド通信を待ち受けるポート番号を8080
と設定した場合、リクエスト時に以下の様にポート番号を指定すると、nginx
プロセスにリクエストを送信できる。
GET http://127.0.0.1:8080
▼ クライアントへのレスポンス時 (図の 『⬅︎』 )¶
(1)
-
パケットの通過したポート番号をヘッダー情報として追加する。
(2)
-
ネットワーク層へ送信する。
02. TCP¶
TCPスリーウェイハンドシェイク¶
リクエストとレスポンスの送受信の前後に行われるTCPコネクションの確立のこと。
03. ソケット¶
ソケットとは¶
トランスポート層に存在し、受信した通信をアプリケーション層の各プロセスに振り分ける受け口をソケットという。
送信元のサーバーが宛先に対して、『192.168.1.1:50001
(送信元IPアドレス:送信ポート) 』『10.0.0.1:80
(宛先IPアドレス:宛先ポート) 』といったように、IPアドレスとポート番号の組合せで指定する。
ソケット接続とは¶
ソケット間のネットワーク接続をソケット接続という。
Unixドメインソケット¶
▼ Unixドメインソケットとは¶
Unixで使用されるソケットのこと。
ソケットファイルを経由して、同じOS上のプロセス間でパケットを送受信する。
▼ 通信方法¶
プロトコルを『unix:
』としてパケットを送受信する。
unix://./etc/foo.sock
ソケットファイル (.sock
ファイル) 自体にファイルとしての実体はなく、エンドポイントのように働く。
同じOS上で稼働するコンテナのプロセス間の通信でも使用できる。
04. プロセス間メッセージキュー¶
プロセス間メッセージキュー¶
同じOS上のプロセス間でメッセージを仲介する。
異なるOS間のメッセージを仲介する時は、ミドルウェアとしてのメッセージキューを経由する。
posixメッセージキュー¶
記入中...
05. L4
ロードバランサー¶
L4
ロードバランサーとは¶
通信のL4
プロトコル (例:UDP、TCP) やツール固有のプロトコル (例:MySQL、Memcachedなど) のヘッダー情報に基づいて、通信をロードバランシングする。
L7
プロトコルのヘッダー情報をもつ通信であっても、L4
プロトコルの情報のみを使用してロードバランシングすることもできる (例えば、HTTPのバージョンの影響を回避できるといったメリットがある) 。
L7
プロトコル (例:HTTP、HTTPS、SMTP、DNS、POP3など) のヘッダー情報を失うわけではなく、あくまでパケットのL4
ヘッダー情報をロードバランシングに使用するだけである。
そのため、HTTPSで受信したリクエストをロードバランシングする時は、決して通信が平文になっているわけではなく、L7
のペイロードは暗号化されたままである。
L4
プロトコルは、ヘッダーに宛先の情報 (例:IPアドレス、ポート番号) をもっている。
L4
ロードバランサーは、これらの情報に基づいて通信を待ち受けるサーバーに、通信をロードバランシングする。