Computer Network #02-2. Application Layer : E-mail

๊น€์„œ์˜ยท2025๋…„ 4์›” 16์ผ
0

์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ

๋ชฉ๋ก ๋ณด๊ธฐ
6/15
post-thumbnail

1. E-mail ์‹œ์Šคํ…œ ๊ฐœ์š”

E-mail ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์š”์†Œ

  • User Agents (์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ)
    ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ”์ผ์„ ์ž‘์„ฑํ•˜๊ณ , ์ฝ๊ณ , ํŽธ์ง‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ
  • Mail Servers (๋ฉ”์ผ ์„œ๋ฒ„)
    ๋ฉ”์ผ์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์„œ๋ฒ„
    (์‚ฌ์šฉ์ž ๋ฉ”์ผ ๋ฐ•์Šค์™€ ๋ณด๋‚ผ ๋ฉ”์‹œ์ง€ ํ๋ฅผ ๊ด€๋ฆฌ)
  • Simple Mail Transfer Protocol (SMTP)
    ๋ฉ”์ผ ์„œ๋ฒ„ ๊ฐ„ ๋ฉ”์ผ ์ „์†ก์„ ๋‹ด๋‹นํ•˜๋Š” ํ”„๋กœํ† ์ฝœ

User Agent (UA)

Mail Server์™€ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์œผ๋ฉฐ Mail Reader๋ผ๊ณ ๋„ ๋ถ€๋ฆ„
(ex. Outlook, IPhone Mail)

๋ฉ”์ผ ์ž‘์„ฑ, ํŽธ์ง‘, ์ฝ๊ธฐ ๊ธฐ๋Šฅ์ด ์žˆ์Œ

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ฉ”์ผ์„ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ธฐ
  • ๋ฐ›์€ ๋ฉ”์ผ๋„ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜ด

Mail Server

Mailbox (์ˆ˜์‹  ๋ฉ”์ผ ์ €์žฅ์†Œ) : ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ›์€ ๋ฉ”์ผ์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„
Message Queue (๋ฐœ์‹  ๋ฉ”์ผ ๋Œ€๊ธฐ์—ด) : ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋‚ธ ๋ฉ”์ผ์„ ์ „์†ก ์ค€๋น„ ์ƒํƒœ๋กœ ๋ณด๊ด€ํ•˜๋Š” ๊ณณ

SMTP protocol

Mail server ๊ฐ„ ์ „์†กํ•  ๋•Œ SMTP ์‚ฌ์šฉ
๋ณด๋‚ธ ์„œ๋ฒ„ โ†’ ๋ฐ›๋Š” ์„œ๋ฒ„๋กœ ๋ฉ”์ผ์„ ์ „์†ก

  • ๋ณด๋‚ด๋Š” ์ธก ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ(client) ์—ญํ• 
  • ๋ฐ›๋Š” ์ธก ์„œ๋ฒ„๋Š” ์„œ๋ฒ„(server) ์—ญํ• 

์ด๋ฉ”์ผ ์ „์†ก ํ๋ฆ„ ๋ฐ ์†ก์ˆ˜์‹  ๊ณผ์ •

2. SMTP (Simple Mail Transfer Protocol)

TCP ์‚ฌ์šฉํ•ด์„œ ์‹ ๋ขฐ์„ฑ ์žˆ๊ฒŒ ๋ฉ”์ผ์„ ์ „์†ก

์ „์†ก ๋ฐฉ์‹ : ์ง์ ‘ ์ „์†ก(Direct transfer)
(๋ณด๋‚ด๋Š” ๋ฉ”์ผ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์ฒ˜๋Ÿผ ๋ฐ›๋Š” ๋ฉ”์ผ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•ด์„œ ๋ฉ”์ผ ์ „์†ก)

๋ฉ”์‹œ์ง€ ํ˜•์‹ : 7-bit ASCII

์ด๋ฉ”์ผ ์ „์†ก ๊ณผ์ •

Step1. Handshaking (์„œ๋กœ ์ธ์‚ฌํ•˜๊ณ  ์—ฐ๊ฒฐ ์„ค์ •)
Step2. Transfer of messages (์ด๋ฉ”์ผ ๋‚ด์šฉ ์ „์†ก)
Step3. Closure (์ „์†ก ์ข…๋ฃŒ ๋ฐ ์—ฐ๊ฒฐ ๋Š๊ธฐ)

๋ช…๋ น์–ด/์‘๋‹ต ๋ฐฉ์‹

  • ๋ช…๋ น(command) : ASCII text
  • ์‘๋‹ต(response) : ์ƒํƒœ ์ฝ”๋“œ(status code) + ๋ฌธ๊ตฌ(phrase)๋กœ ๊ตฌ์„ฑ

Example. Alice sends e-mail to Bob

1) Alice๊ฐ€ ๋ฉ”์ผ ์ž‘์„ฑ
Alice๊ฐ€ UA๋ฅผ ์ด์šฉํ•ด์„œ Bob (bob@someschool.edu) ์—๊ฒŒ ๋ณด๋‚ผ ๋ฉ”์ผ ์ž‘์„ฑ

2) Alice์˜ ๋ฉ”์ผ ์„œ๋ฒ„๋กœ ๋ฉ”์ผ ์ „์†ก
์ž‘์„ฑ๋œ ๋ฉ”์ผ์€ Alice์˜ ๋ฉ”์ผ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด์ง
โ†’ outgoing message queue (๋Œ€๊ธฐ์—ด)์— ์ €์žฅ๋จ (์ดˆ๋ก์ƒ‰ ์นธ)

3) SMTP ํด๋ผ์ด์–ธํŠธ๊ฐ€ TCP ์—ฐ๊ฒฐ ์„ค์ •
Bob์˜ ๋ฉ”์ผ ์„œ๋ฒ„๋กœ TCP ์—ฐ๊ฒฐ์„ ์ƒ์„ฑ (port=25)

4) ๋ฉ”์ผ ์ „์†ก
Alice์˜ ๋ฉ”์ผ ์„œ๋ฒ„๊ฐ€ SMTP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด Bob์˜ ๋ฉ”์ผ ์„œ๋ฒ„๋กœ ๋ฉ”์ผ ์ „์†ก (TCP connection)

5) Bob์˜ ๋ฉ”์ผ ์„œ๋ฒ„์— ๋ฉ”์ผ ์ €์žฅ
Bob์˜ mailbox (์ˆ˜์‹  ๋ฉ”์ผํ•จ)์— ์ €์žฅ

6) Bob์ด ๋ฉ”์ผ ์ฝ๊ธฐ
Bob์€ UA๋ฅผ ํ†ตํ•ด ์ €์žฅ๋œ ๋ฉ”์ผ ์ฝ์Œ


SMTP Interaction (์ „์†ก ๊ณผ์ • ์˜ˆ์‹œ)

์—ฐ๊ฒฐ (Connect)

220 hamburger.edu #์„œ๋ฒ„๊ฐ€ ์—ฐ๊ฒฐ ์š”์ฒญ ์ˆ˜๋ฝ ๋ฐ ์ž๊ธฐ ์†Œ๊ฐœ

์ธ์‚ฌ(Handshaking)

HELO crepes.fr #ํด๋ผ์ด์–ธํŠธ๋„ ์ž๊ธฐ ์ž์‹  ์†Œ๊ฐœ
250 Hello crepes.fr, pleased to meet you #์„œ๋ฒ„๊ฐ€ ์ธ์‚ฌ ์‘๋‹ต

๋ฐœ์‹ ์ž ์ •๋ณด ์†ก์‹  (MAIL FROM)

MAIL FROM: <alice@crepes.fr> #๋ฐœ์‹ ์ž ์ •๋ณด, ์„œ๋ฒ„์— ์ „๋‹ฌ
250 alice@crepes.fr... Sender ok #์„œ๋ฒ„๊ฐ€ ๋ฐœ์‹ ์ž ์ •๋ณด ํ™•์ธ ์™„๋ฃŒ

์ˆ˜์‹ ์ž ์ •๋ณด ์†ก์‹  (RCPT TO)

RCPT TO: <bob@hamburger.edu> #์ˆ˜์‹ ์ž ์ •๋ณด ์„œ๋ฒ„์— ์ „๋‹ฌ
250 bob@hamburger.edu ... Recipient ok #์„œ๋ฒ„๊ฐ€ ์ˆ˜์‹ ์ž ์ •๋ณด ํ™•์ธ ์™„๋ฃŒ

๋ฉ”์ผ ๋‚ด์šฉ ์ „์†ก ๋ฐ ๋ณธ๋ฌธ ์ž…๋ ฅ

DATA #Body ๋ณด๋‚ด๊ฒ ๋‹ค๊ณ  ์•Œ๋ฆผ
354 Enter mail, end with "." on a line by itself #๋ณธ๋ฌธ ์ž…๋ ฅ ์‹œ์ž‘ ์ง€์‹œ

Do you like ketchup?
How about pickles?
. #๋๋‚  ๋•Œ๋Š” .

์„œ๋ฒ„๊ฐ€ ๋ฉ”์ผ ์ˆ˜๋ฝ

250 Message accepted for delivery #์ •์ƒ์ ์œผ๋กœ ์ˆ˜์‹ ๋˜์–ด, ์ €์žฅ ์™„๋ฃŒ

์—ฐ๊ฒฐ ์ข…๋ฃŒ (QUIT)

QUIT #์—ฐ๊ฒฐ ์ข…๋ฃŒ ์š”์ฒญ
221 hamburger.edu closing connection #์—ฐ๊ฒฐ ์ข…๋ฃŒ ์‘๋‹ต

SMTP vs HTTP ๋น„๊ต

๊ธฐ๋ณธ ๋™์ž‘ ๋ฐฉ์‹

  • HTTP : Pull ๋ฐฉ์‹
  • SMTP : Push ๋ฐฉ์‹

๋ฐ์ด์ฒ˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹

  • HTTP : ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋ฅผ ๋ณ„๋„๋กœ ์š”์ฒญ ๋ฐ ์ˆ˜์‹ 
  • SMTP : ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ํ•œ ๋ฒˆ์— ๋ฌถ์–ด์„œ ๋ณด๋ƒ„

SMTP ๊ณ ์œ  ํŠน์ง•

  • Persistent connection ์‚ฌ์šฉ
    (๋ฉ”์ผ์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋ณด๋‚ด๋”๋ผ๋„ TCP ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•จ)
  • ๋ฉ”์‹œ์ง€(header + body) 7-bit ASCII๋กœ ์ž‘์„ฑ
  • ๋ฉ”์‹œ์ง€ ์ข…๋ฃŒ ๋ฐฉ์‹: CRLF.CRLF ์‚ฌ์šฉ

3. ๋ฉ”์ผ ๋ฉ”์‹œ์ง€ ํ˜•์‹ (RFC 822)

๋ฉ”์ผ ๋ฉ”์‹œ์ง€์˜ ํ˜•์‹ ์ž์ฒด๋Š” RFC 822์—์„œ ๋ณ„๋„๋กœ ์ •์˜
(Mail ๋ฉ”์‹œ์ง€๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๋ฌธ๋ฒ•)


Header (ํ—ค๋”)

๋ฉ”์ผ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ถ€๋ถ„ (์ˆ˜์‹ ์ž, ๋ฐœ์‹ ์ž, ์ œ๋ชฉ ๋“ฑ)

  • To : ์ˆ˜์‹ ์ž
  • From : ๋ฐœ์‹ ์ž
  • Subject : ์ œ๋ชฉ

(SMTP ๋ช…๋ น์–ด์ธ MAIL FROM์ด๋‚˜ RCPT TO์™€๋Š” ๋‹ค๋ฆ„)

Blank Line (๊ณต๋ฐฑ ์ค„)

ํ—ค๋”๊ฐ€ ๋๋‚ฌ๋‹ค๋Š” ๊ฒƒ์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด
ํ—ค๋”์™€ ๋ณธ๋ฌธ ์‚ฌ์ด์— ์กด์žฌ

Body (๋ณธ๋ฌธ)

์‹ค์ œ ๋ฉ”์ผ์˜ ๋‚ด์šฉ

  • ASCII ๋ฌธ์ž๋กœ ์ž‘์„ฑ
  • (ํ•„์š”์‹œ Base64๋กœ ํŒŒ์ผ ์ฒจ๋ถ€ ๋“ฑ ์ธ์ฝ”๋”ฉ)

4. Mail Access Protocols (๋ฉ”์ผ ์ ‘๊ทผ ํ”„๋กœํ† ์ฝœ)

SMTP๋Š” ๋ฉ”์ผ์„ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๊ณ ,
์ˆ˜์‹ ์ž๊ฐ€ ๋ฉ”์ผ์„ ์ฝ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์€
Mail Access Protocol๋กœ ๋‹ค๋ฆ„

Mail Access Protocol์˜ ์ข…๋ฅ˜

  • IMAP (Internet Mail Access Protocol)
  • HTTP ๊ธฐ๋ฐ˜ ์ ‘๊ทผ

IMAP

๋ฉ”์ผ์„ ์„œ๋ฒ„์— ์ €์žฅํ•œ ์ฑ„ ์‚ฌ์šฉ

  • RFC 3501์— ์ •์˜
  • ๋ฉ”์ผ ๊ฒ€์ƒ‰, ์‚ญ์ œ , ํด๋” ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
  • ์—ฌ๋Ÿฌ ๊ธฐ๊ธฐ์—์„œ ๋™์ผํ•œ ๋ฉ”์ผํ•จ ์ƒํƒœ ์œ ์ง€

HTTP ๊ธฐ๋ฐ˜ ์ ‘๊ทผ

Web์œผ๋กœ ๋ฉ”์ผ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ (Gmail, Hotmail, Yahoo Mail ๋“ฑ)

๋‚ด๋ถ€์ ์œผ๋กœ๋Š” SMTP(๋ณด๋‚ด๊ธฐ) + IMAP or POP (๋ฐ›๊ธฐ)

profile
์•ˆ๋…•ํ•˜์„ธ์š” :)

0๊ฐœ์˜ ๋Œ“๊ธ€