コンテンツにスキップ

L5 ~ L7@OSI参照モデル

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. アプリケーション層、プレゼンテーション層、セッション層 (L5L7)

アプリケーション層とは

アプリケーションが待ち受けるプロトコル (例:HTTP、HTTPS、SMTP、DNS、POP3、など) を処理する層である。


アプリケーション層の仕組み

application_expose-port

(1)

各アプリケーションがプロセスとして稼働しており、プロセスがパケットペイロードの元になるデータを作成する。

(2)

各プロセスは特定のポート番号を受信する。

補足として、ポート番号を使用しているプロセスの一覧は、以下のコマンドで表示できる。

$ sudo lsof -i -P | grep LISTEN


02. メールデータのプロトコル

メールデータの送受信

▼ 仕組み

smtp_pop3_imap4

(1)

送信側アプリ (例:任意のアプリ、Gmail、など) は、メールを送信する。

(2)

SMTPサーバー (送信側メールサーバー) は、メールを受信する。

なお、受信側にも仲介用のSMTPサーバーがある場合がある。

(3)

SMTPサーバーは、メールをPOP/IMAPサーバー (受信側メールサーバー) に転送する。

(4)

POP/IMAPサーバーは、メールを保管する。

(5)

受信側アプリ( 例:任意のアプリ、Gmail、など) は、各々が指定したプロトコルに応じて、POP/IMAPサーバーからメールデータを定期的に取得する。

▼ SMTPサーバーのモック

アプリのメール送信機能を開発する時に、送信テストを実施する必要があり、この内容は公開したくない。

そこで、SMTPサーバーのモック (例:mailtrap、MailCatcher、MailDev、など) を提供するサービスを利用する。

このSMTPサーバーのモックは、アプリから受信したメールをPOP/IMAPサーバーに転送しない。

そのため、POP/IMAPサーバーにテスト用メールを送信することなく、アプリは送信テストを実施できる。


SMTP:Simple Mail Transfer Protocol

▼ SMTPとは

メールデータを送信するためのプロトコルのこと。

▼ SMTP-AUTH:SMTP AUTHentication

SMTPに認証を組み込んだ仕組みのこと。

クライアント (メール送信できるアプリケーション) からメールサーバーにメールデータをSMTP送信する時、メールサーバーがクライアントに対して認証を実行する。

SMTP-AUTH


POP3:Post Official Protocol version 3

▼ POP3とは

メールサーバーに届いたメールを、受信機器にダウンロードし、受信機器で参照するプロトコル。

メールの既読未読状況は、他の受信機器と共有される。


IMAP4:Internet Message Access Protocol version 4

▼ IMAP4とは

メールサーバーに届いたメールを、受信機器にダウンロードせず、メールサーバーに置いたまま参照するプロトコル。

メールの既読未読状況は、他の受信機器と共有されない。

*例*

GmailでPOPかIMAPを設定できる。

GmailでPOPorIMAPを設定

▼ IMAP4の仕組み

IMAPのリクエストは、<タグ> <リクエストコマンド> <引数>からなる。

レスポンスは、<タグ> <ステータス> <レスポンスコード> <メッセージ>からなる。

# リクエスト
0001 AUTHENTICATE CRAM-MD5
# レスポンス
* CAPABILITY IMAP4 IMAP4REV1 IDLE NAMESPACE MAILBOX-REFERRALS
SCAN SORT THREAD=REFERENCES
THREAD=ORDEREDSUBJECT MULTIAPPEND
0001 OK AUTHENTICATE completed

# リクエスト
0002 NAMESPACE
# レスポンス
* NAMESPACE (("" "/")("#mhinbox" NIL)("#mh/" "/")) (("~" "/"))
(("#shared/" "/")
("#ftp/" "/")("#news." ".")("#public/" "/"))
0002 OK NAMESPACE completed

# リクエスト
0003 LIST "" "INBOX"
# レスポンス
* LIST (\NoInferiors) NIL INBOX
0003 OK LIST completed

# リクエスト
0004 LIST "" *
# レスポンス
* LIST (\NoInferiors) "/" &kAFP4W4IMH8wojCkMMYw4A-
* LIST (\NoInferiors) "/" &Tgtm+DBN-
* LIST (\NoSelect) "/" fol2
* LIST (\NoInferiors) "/" fol2/fol3
* LIST (\NoInferiors \UnMarked) "/" fol10
* LIST (\NoInferiors) NIL INBOX
0004 OK LIST completed

# リクエスト
0005 CREATE Trash
# レスポンス
0005 OK CREATE completed

# リクエスト
0014 SELECT "INBOX"
# レスポンス
* 5 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 988028003] UID validity status
* OK [UIDNEXT 6] Predicted next UID
* FLAGS (\Answered \Flagged \Deleted \Draft \Seen)
* OK [PERMANENTFLAGS (\* \Answered \Flagged \Deleted \Draft
\Seen)] Permanent flags
* OK [UNSEEN 5] first unseen message in /var/spool/mail/user
0014 OK [READ-WRITE] SELECT completed

# リクエスト
0015 STATUS "INBOX" (MESSAGES UNSEEN UIDNEXT)
# レスポンス
* NO CLIENT BUG DETECTED: STATUS on selected mailbox: INBOX
* STATUS INBOX (MESSAGES 5 UNSEEN 1 UIDNEXT 6)
0015 OK STATUS completed


APOP:Authenticated POP

▼ APOPとは

メール受信の際に、チャレンジレスポンス方式の認証を実行することにより、平文の認証情報がネットワークに流れるのを防止するプロトコル