🅿️

主要プロトコルの通信プロセスまとめ

2024/04/18に公開

インターネット層

IPsec (Internet Protocol Security)

インターネットプロトコル(IP)通信の安全を確保するために設計された一連のプロトコル

  • IKEフェーズ1: セキュリティアソシエーションとキー交換パラメータを確立する 主に認証と鍵交換の基本情報が交換される
  • IKEフェーズ2: 実際のセッションデータを暗号化するためのキー交換が行われる
  • 暗号化データ転送/受信確認: セキュアなチャンネルを通じてデータが暗号化されて転送され、その受信が確認される

トランスポート層

TCP (Transmission Control Protocol)

信頼性のあるデータ転送を提供するプロトコル

  • SYN: 通信の開始時に送信され、接続の確立を試みる
  • SYN-ACK: SYNリクエストを受け取った側が、SYNとACK(確認応答)を同時に送り返す
  • ACK: 受信確認を示し、以前のパケットが正常に受け取られたことを通知する
  • データ転送: 確立された接続を通じてデータを送信する
  • データ受信確認: 送信されたデータが正常に受け取られたか確認する

UDP

UDP (User Datagram Protocol) - オーバーヘッドが少ないが信頼性の低いデータ転送を行うプロトコル

  • データグラム送信: アプリケーションAからアプリケーションBへ、信頼性や順序を保証せずにデータを送信する
  • 応答(オプション): 応答が必要な場合、アプリケーションBはアプリケーションAに対して応答データグラムを送信する

アプリケーション層

SSL (Secure Sockets Layer)

クライアントとサーバー間の通信を暗号化し、データの機密性と完全性を保証するためのセキュリティプロトコル

  • クライアントハロー: クライアントからサーバーへ送られる最初のメッセージで、使用可能な暗号スイート、セッションID、およびその他のSSLオプションが含まれる
  • サーバーハロー: サーバーからクライアントへの応答で、選択された暗号スイートとセッションIDが含まれる
  • 証明書: サーバーがクライアントに自身の公開鍵情報を含むデジタル証明書を送信する これにより、クライアントはサーバーの身元を検証できる
  • プリマスターシークレット: クライアントが生成したランダムなキー情報をサーバーの公開鍵で暗号化して送信する サーバーは自身の秘密鍵でこれを復号し、セッションキーを生成する
  • セッションキー交換完了: 双方が共有秘密鍵に基づいて通信を行う準備が整い、以後の通信はこのセッションキーで暗号化される
  • 暗号化されたデータ送信: セッションキーを使用して、クライアントとサーバー間で安全にデータを交換する
  • セッション終了通知: セッションが終了する際に、どちらかのパーティーが通知を送り、安全に接続を閉じる

TLS (Transport Layer Security)

Secure Sockets Layer (SSL) の後継として開発され、インターネット上でのデータのプライバシーと整合性を保証するプロトコル

  • クライアントハロー: クライアントが最初に送るメッセージで、使用可能な暗号スイート、セッションID、ランダムデータなどのセキュリティパラメータを提案する
  • サーバーハロー: サーバーが応答してセキュリティパラメータを確定し、選択した暗号スイートやセッションIDをクライアントに通知する
  • 証明書: サーバーが自身の身元を証明するためにデジタル証明書(公開鍵含む)をクライアントに送信する
  • サーバーキーエクスチェンジ: サーバーが暗号化パラメータや公開鍵情報をクライアントに送信し、セキュアなキー交換のためのデータを提供する
  • クライアントキーエクスチェンジ: クライアントがセッションキー生成に必要な情報をサーバーに送信し、共有秘密鍵の生成に寄与する
  • 変更暗号スペック: ハンドシェイクの終了を示し、以降の通信が選択された暗号スイートに基づいて暗号化されることを宣言する
  • 完了メッセージ: ハンドシェイクが正常に完了したことを相手方に通知する
  • 暗号化データ送信: セッションキーを使用して、安全にデータを交換する

HTTP (HyperText Transfer Protocol)

ウェブページのデータを転送するためのプロトコル

  • GET /index.html HTTP/1.1: クライアントがウェブサーバーにリクエストを送るコマンド
  • HTTP/1.1 200 OK: サーバーからのレスポンス 200は成功を示すステータスコードで、"OK" はステータスの説明

FTP (File Transfer Protocol)

ファイルの転送を行うプロトコル

  • USER username: ユーザー名でログインを試みる
  • PASS password: パスワードを送信して認証を試みる
  • RETR filename.ext: サーバーから「filename.ext」という名前のファイルをダウンロードする

SMTP (Simple Mail Transfer Protocol)

メールの送信を行うプロトコル

  • EHLO hostname: SMTPサーバーに自己紹介し、拡張機能のリストを要求する
  • MAIL FROM: メールの送信者のアドレスを指定する
  • RCPT TO: メールの受信者のアドレスを指定する
  • DATA: メールの本文の開始を宣言する
  • QUIT: 通信の終了を告げる

POP (Post Office Protocol)

メールクライアントがメールサーバーから電子メールを受信し、ローカルのデバイスにダウンロードするためのプロトコル

  • USER: ユーザ名をサーバに送信し、認証プロセスを開始する
  • PASS: パスワードを送信し、ユーザ認証を完了する
  • RETR (Retrieve): 指定されたメッセージ番号のメールを取得する
  • QUIT: セッションを終了し、切断する

IMAP (Internet Message Access Protocol)

メールをサーバー上で直接操作することが可能な、電子メールの取得と管理を行うためのプロトコル

  • LOGIN username password: クライアントがサーバーに対して認証情報(ユーザー名とパスワード)を提供し、セッションを開始する
  • SELECT Inbox: クライアントが特定のメールボックス(この場合は「Inbox」)を選択し、操作する準備をする
  • FETCH 1: (FLAGS BODY[HEADER]): クライアントがメールボックス内のすべてのメールのフラグ状態とヘッダ情報を要求します。これにより、メールの一覧表示や内容のプレビューが可能になる
  • LOGOUT: クライアントがログアウトを要求し、セッションを終了する

SIP (Session Initiation Protocol)

インターネットプロトコルを使用してマルチメディア通信セッション(ビデオ、音声、その他のメディア転送)の設定、維持、終了を管理するためのプロトコル

  • INVITE: 通信セッションを開始するための要求を送信する
  • ACK: セッション確立の確認を送信する
  • BYE: 通信セッションを終了する要求を送信する
  • 100 Trying: サーバーが要求を受け取ったことをクライアントに通知する
  • 180 Ringing: 呼び出し対象がリング状態にあることをクライアントに通知する
  • 200 OK: セッションが正常に確立されたことを示す

SNMP(Simple Network Management Protocol)

ネットワーク上のデバイスを管理、監視するためのプロトコル

  • GET: 指定したオブジェクト識別子(OID)に関連するデータをエージェントから要求する
  • SET: エージェントに特定のデバイスの設定を変更するよう命令する
  • TRAP: 特定のイベントや状態の変化が発生した際に、エージェントからマネージャーへ非同期通知を送信する
  • Response: GETやSETリクエストへの応答として送信され、要求されたデータや状態の結果を含む

Discussion