L5
~ L7
@OSI参照モデル¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. アプリケーション層、プレゼンテーション層、セッション層 (L5
〜L7
)¶
アプリケーション層とは¶
アプリが待ち受けるプロトコル (例:HTTP、HTTPS、SMTP、DNS、POP3など) を処理する層である。
アプリケーション層の仕組み¶
(1)
-
各アプリがプロセスとして稼働しており、プロセスがパケットペイロードの元になるアプリケーションデータを作成する。
アプリケーションデータに、IPヘッダーとトランスポートヘッダーを追加し、パケットペイロードとする。
(2)
-
各プロセスは特定のポート番号を受信する。
補足として、ポート番号を使用しているプロセスの一覧は、以下のコマンドで表示できる。
$ sudo lsof -i -P | grep LISTEN
02. メールデータのプロトコル¶
メールデータの送受信¶
▼ 仕組み¶
(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送信する時、メールサーバーがクライアントに対して認証を実行する。
POP3:Post Official Protocol version 3¶
▼ POP3とは¶
メールサーバーに届いたメールを、受信機器にダウンロードし、受信機器で参照するプロトコル。
メールの既読未読状況は、他の受信機器と共有される。
IMAP4:Internet Message Access Protocol version 4¶
▼ IMAP4とは¶
メールサーバーに届いたメールを、受信機器にダウンロードせず、メールサーバーに置いたまま参照するプロトコル。
メールの既読未読状況は、他の受信機器と共有されない。
*例*
GmailでPOPかIMAPを設定できる。
▼ 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とは¶
メール受信の際に、チャレンジレスポンス方式の認証を実行することにより、平文の認証情報がネットワークに流れるのを防止するプロトコル