๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿงฃ HTTP๋ž€?

HyperText Transfer Protocol

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ๊ทœ์น™(ํ”„๋กœํ† ์ฝœ)์ด๋‹ค.
์—ฌ๊ธฐ์„œ ๋ฐ์ดํ„ฐ๋Š” ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ๋™์˜์ƒ ๋“ฑ ๋ชจ๋“  ์ข…๋ฅ˜๋ฅผ ๋งํ•œ๋‹ค.

HTTP ์ข…๋ฅ˜์—๋Š” TCP ์™€ UDP ๋ฐฉ์‹์ด ์žˆ์œผ๋ฉฐ 80 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

TCP

Transmission Control Protocol.

1:1 ์—ฐ๊ฒฐ์„ ์ง€ํ–ฅํ•˜๋ฉฐ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ†ต์‹ ์„ ์ œ๊ณตํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ 1:1์€ ๊ฐ๊ฐ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
์–‘ ๋‹จ์— ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•œ ๋’ค ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•œ๋‹ค.
์ผ๋ฐ˜์ ์ธ HTTP ํ†ต์‹ ์€ TCP ๋ฐฉ์‹์„ ๋”ฐ๋ฅด๊ณ  ์žˆ๋‹ค.

UDP

User Datagram Protocol.
1:1 ํ˜น์€ 1:N ๋น„์—ฐ๊ฒฐ์„ ์ง€ํ–ฅํ•˜๋ฉฐ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ํ†ต์‹ ์„ ์ œ๊ณตํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ '๋น„์—ฐ๊ฒฐ' ์ด๋ผ๋Š” ๋ง์€, ๋ง ๊ทธ๋Œ€๋กœ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ๋œป์ด๋‹ค.
TCP ์™€ ๋‹ฌ๋ฆฌ ์—ฐ๊ฒฐ ์„ค์ • ๊ณผ์ •์ด ํ•„์š” ์—†๊ณ , ๋‹จ์ง€ ์†Œ์ผ“์˜ ์ƒ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  ๊ณผ์ •๋งŒ ์กด์žฌํ•œ๋‹ค.
TCP ์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์ง€๋งŒ ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ์— ํ•„์š”ํ•œ ๋ถ€ํ•˜๊ฐ€ ์—†๊ณ  ๋ณด๋‹ค ๋น ๋ฅด๋‹ค.

 

UDP๋Š” ํŽธ์ง€์™€ ๊ฐ™๋‹ค. ํŽธ์ง€๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„  ํŽธ์ง€๋ด‰ํˆฌ์— ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ๊ณผ ๋ฐ›๋Š” ์‚ฌ๋žŒ์˜ ์ฃผ์†Œ ์ •๋ณด๋ฅผ ์จ์•ผํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์šฐํ‘œ๋ฅผ ๋ถ™์—ฌ์„œ ์šฐ์ฒดํ†ต์— ๋„ฃ์œผ๋ฉด ๋์ด๋‹ค.
๋Œ€์‹  ํŽธ์ง€์˜ ํŠน์„ฑ์ƒ ํŽธ์ง€๋ฅผ ๋ณด๋‚ด๊ณ ๋‚˜์„œ ์ƒ๋Œ€๋ฐฉ์˜ ์ˆ˜์‹ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ๋ฐฉ๋ฒ•์€ ์—†๋‹ค.

TCP UDP
๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ํ™•์ธ ๊ฐ€๋Šฅ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ํ™•์ธ ๋ถˆ๊ฐ€
๋ฉ”์‹œ์ง€๊ฐ€ ๋ณด๋‚ด์ง„ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์žฌ์กฐ๋ฆฝ ๋ฉ”์‹œ์ง€ ๋„์ฐฉ ์ˆœ์„œ๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋‹ค.
UDP ๋ณด๋‹ค ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค. TCP ๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ๋‹ค.
ํ†ต์‹ ์˜ ์•ˆ์ •์„ฑ ๋ฐ ์ˆœ์ฐจ์ ์ธ ์ „๋‹ฌ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ ์˜ค๋ฅ˜์˜ ๊ฒ€์‚ฌ ๋ฐ ์ˆ˜์ •์ด ํ•„์š” ์—†๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ. ex) DNS, VOIP, ์˜จ๋ผ์ธ๊ฒŒ์ž„ ๋“ฑ

๐Ÿ’ก ์ฐธ๊ณ 
DNS๋ž€?

์ธํ„ฐ๋„ท์—์„œ๋Š” ์ปดํ“จํ„ฐ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด ์ˆซ์ž๋งŒ์œผ๋กœ๋Š” ๋ฌด์—‡์— ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.
๊ทธ๋ž˜์„œ ์ธํ„ฐ๋„ท์—์„œ๋Š” IP ์ฃผ์†Œ์— ๋„๋ฉ”์ธ๋ช…์ด๋ผ๋Š” ์ด๋ฆ„์„ ๋ถ™ํ˜€ ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ํ•œ๋‹ค.
IP ์ฃผ์†Œ์™€ ๋„๋ฉ”์ธ๋ช…์„ ์„œ๋กœ ๊ตํ™˜ํ•˜๋Š” ์žฅ์น˜๋ฅผ DNS(Domain Name System)์ด๋ผ๊ณ  ํ•œ๋‹ค.
DNS ์„œ๋ฒ„๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋‹ค. (์ž์„ธํžˆ)

๐Ÿงฃ HTTP ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ

  • Request Message
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋ณด๋‚ด๋Š” ๋ฉ”์‹œ์ง€
  • Response Messgae
    • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ด๋Š” ๋ฉ”์‹œ์ง€

Request Message

Header

  • GET /HTTP/1.1
    • HTTP ์ „์†ก ๋ฐฉ๋ฒ•๊ณผ ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „
  • Host
    • ์š”์ฒญํ•˜๋Š” ์„œ๋ฒ„ ์ฃผ์†Œ
  • User-Agent
    • OS/๋ธŒ๋ผ์šฐ์ € ์ •๋ณด
  • Accept
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ดํ•ด ๊ฐ€๋Šฅํ•œ ์ปจํ…์ธ  ํƒ€์ž…
  • Accept Language
    • ํด๋ผ์ด์–ธํŠธ ์ธ์‹ ์–ธ์–ด
  • Accept-Encoding
    • ํด๋ผ์ด์–ธํŠธ ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•
  • Connection
    • ์ „์†ก ์™„๋ฃŒ ํ›„ ์ ‘์† ์œ ์ง€ ์ •๋ณด(keep-alive)
  • Content-Type
    • ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ˜ํ™˜๋˜์–ด์•ผํ•˜๋Š” ์ปจํ…์ธ  ์œ ํ˜•
  • Content-Length
    • ๋ณธ๋ฌธํฌ๊ธฐ

Body

๋ณธ๋ฌธ์€ ์š”์ฒญ์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ๋“ค์–ด๊ฐ„๋‹ค.
๋ชจ๋“  ์š”์ฒญ์— ๋ณธ๋ฌธ์ด ๋“ค์–ด๊ฐ€์ง€๋Š” ์•Š๋Š”๋‹ค.
GET, HEAD, DELETE ์ฒ˜๋Ÿผ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์š”์ฒญ์€ ๋ณดํ†ต ๋ณธ๋ฌธ์ด ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— Body ๊ฐ€ ์—†๋‹ค.
POST, PUT, PATCH ๋Š” ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•ด ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ฏ€๋กœ Body ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

Response Message

Header

  • HTTP/1.1 200 ok
    • ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „๊ณผ ์‘๋‹ต์ƒํƒœ
  • Access-Control-Allow-Origin
    • ์„œ๋ฒ„์— ํƒ€ ์‚ฌ์ดํŠธ์˜ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ๋ฐฉ์นจ
  • Connection
    • ์ „์†ก ์™„๋ฃŒํ›„ ์ ‘์† ์œ ์ง€ ์ •๋ณด (keep-alive)
  • Content-Encoding
    • ๋ฏธ๋””์–ด ํƒ€์ž…์„ ์••์ถ•ํ•œ ๋ฐฉ๋ฒ•
  • Date
    • ํ—ค๋”๊ฐ€ ๋งŒ๋“ค์–ด์ง„ ์‹œ๊ฐ„
  • ETag
    • ๋ฒ„์ „์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์‹๋ณ„์ž
  • Keep-Alive
    • ์—ฐ๊ฒฐ์—๋Œ€ํ•œ ํƒ€์ž„์•„์›ƒ๊ณผ ์š”์ฒญ ์ตœ๋Œ€ ๊ฐœ์ˆ˜ ์ •๋ณด
  • Last-Modified
    • ์›น ์‹œ๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค ์ˆ˜์ •๋˜์—ˆ์„๋•Œ๋งŒ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ (์บ์‹œ์—ฐ๊ด€)
  • Server
    • ์›น์„œ๋ฒ„๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„
  • Set-Cookie
    • ์ฟ ํ‚ค ์ •๋ณด
  • Transfer-Encoding
    • ์ธ์ฝ”๋”ฉ ํ˜•์‹ ์ง€์ •
  • X-Frame-Options
    • frame/iframe/object ํ—ˆ์šฉ ์—ฌ๋ถ€

Body

๋ณธ๋ฌธ์€ ์‘๋‹ต์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ๋“ค์–ด๊ฐ„๋‹ค.
๋ชจ๋“  ์‘๋‹ต์— ๋ณธ๋ฌธ์ด ๋“ค์–ด๊ฐ€์ง€๋Š” ์•Š๋Š”๋‹ค.
201, 204๊ณผ ๊ฐ™์€ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง„ ์‘๋‹ต์—๋Š” ๋ณดํ†ต ๋ณธ๋ฌธ์ด ์—†๋‹ค.

๐Ÿงฃ TCP Handshake

TCP ๋ฐฉ์‹์—์„  ์—ฐ๊ฒฐ ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ์—ˆ๋‹ค.
์ด ๋•Œ, ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•  ๋•Œ๋Š” 3way-HandShake,
์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•  ๋•Œ๋Š” 4way-HandShake๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

HandShake ๋Š” ์ง์—ญํ•˜๋ฉด '์•…์ˆ˜'๋ผ๋Š” ๋œป์ด๋‹ค.
๋งˆ์น˜ ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ์˜ ์ฒซ ๋งŒ๋‚จ์—์„œ ๋งŒ๋‚˜์„œ ์•…์ˆ˜๋ฅผ ์š”์ฒญํ•˜๊ณ  ์•…์ˆ˜๋ฅผ ๋ฐ›๋“ฏ์ด,
์ •์ƒ์ ์ธ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์ „์—, ์ผ๋ จ์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ ์—ฐ๊ฒฐ์„ ์„ฑ๋ฆฝ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

3 way HandShake

3 way HandShake์—” ์ด ์„ธ ๊ฐ€์ง€ ๊ณผ์ •์ด ์กด์žฌํ•œ๋‹ค.
์‰ฝ๊ฒŒ ์•„๋ž˜์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

 

A ๐Ÿ‘‰ B : ๋‚ด ๋ง ๋“ค๋ ค?
B ๐Ÿ‘‰ A : ์ž˜ ๋“ค๋ ค. ๋‚ด ๋ง์€ ๋“ค๋ ค?
A ๐Ÿ‘‰ B : ์ž˜ ๋“ค๋ ค!

 

  1. ํด๋ผ์ด์–ธํŠธ๋Š” ์ ‘์†์„ ์š”์ฒญํ•˜๋Š” SYN ํŒจํ‚ท์„ ๋ณด๋‚ธ๋‹ค. ์ด ๋•Œ, ํด๋ผ์ด์–ธํŠธ๋Š” SYN ํŒจํ‚ท์„ ๋ณด๋ƒ„๊ณผ ๋™์‹œ์— SYN/ACK ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์œ„ํ•ด SYN_SENT ์ƒํƒœ๋กœ ๋ณ€ํ•˜๊ฒŒ ๋œ๋‹ค.
  2. ์„œ๋ฒ„๋Š” SYN ์š”์ฒญ์„ ๋ฐ›๊ณ  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜๋Š” ACK ํŒจํ‚ท๊ณผ SYN ํŒจํ‚ท์„ ๋ณด๋‚ด๊ณ  SYN_RCVD(SYN_RECEIVED) ์ƒํƒœ๋กœ ๋ณ€ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ACK ํŒจํ‚ท์„ ๋ณด๋‚ผ ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋œ๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ACK ํŒจํ‚ท์„ ๋ณด๋‚ด๊ณ  ์ด ํ›„ ESTABLISHED ์ƒํƒœ๊ฐ€ ๋˜์–ด ๋ฐ์ดํ„ฐ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค.

๊ฐ ๊ณผ์ •์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

  • SYN
    • synchronize sequence numbers
      ์—ฐ๊ฒฐ ํ™•์ธ์„ ์œ„ํ•ด ๋ณด๋‚ด๋Š” ๋ฌด์ž‘์œ„ ์ˆซ์ž๊ฐ’. (๋‚ด ๋ง ์ž˜ ๋“ค๋ ค?)
  • ACK
    • acknowledgements.
      ์ง์—ญํ•˜๋ฉด '์ธ์ •ํ•˜๋‹ค'๋ผ๋Š” ๋œป์ด๋‹ค.
      Client ํ˜น์€ Server๋กœ ๋ถ€ํ„ฐ ๋ฐ›์€ SYN์— 1d์„ ๋”ํ•ด SYN์„ ์ž˜ ๋ฐ›์•˜๋‹ค๋Š” ACK. (์ž˜ ๋“ค๋ ค!)
  • ISN
    • initial sequence numbers.
      Client์™€ Server๊ฐ€ ๊ฐ๊ฐ ์ฒ˜์Œ์œผ๋กœ ์ƒ์„ฑํ•œ SYN.
  • CLOSED
    • ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์˜ ๊ธฐ๋ณธ ์ƒํƒœ
  • LISTEN
    • ํฌํŠธ๊ฐ€ ์—ด๋ฆฐ ์ƒํƒœ๋กœ ์—ฐ๊ฒฐ ์š”์ฒญ ๋Œ€๊ธฐ ์ค‘
  • SYN-SENT
    • SYN ์š”์ฒญ์„ ํ•œ ์ƒํƒœ
  • SYN-RECEIVED
    • SYN ์š”์ฒญ์„ ๋ฐ›๊ณ  ์ƒ๋Œ€๋ฐฉ์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ค‘
  • ESTABLISHED
    • ์—ฐ๊ฒฐ์˜ ์ˆ˜๋ฆฝ์ด ์™„๋ฃŒ๋œ ์ƒํƒœ.
      ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

4 way HandShake

์—ฐ๊ฒฐ์„ ๋Š์„ ๋• 4 way Handshake ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.
๊ณผ์ •์„ ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

A ๐Ÿ‘‰ B : ๋‚˜๋Š” ๋‹ค ๋ณด๋ƒˆ์–ด. ์ด์ œ ๋Š์ž!
B ๐Ÿ‘‰ A : ์•Œ๊ฒ ์–ด! ์ž ์‹œ๋งŒ~
B ๐Ÿ‘‰ A : ๋‚˜๋„ ๋Š์„๊ฒŒ!
A ๐Ÿ‘‰ B : ์•Œ๊ฒ ์–ด!

 

  1. ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ TCP ์—ฐ๊ฒฐ์ด ๋˜์–ด์žˆ๋Š” ์ƒํƒœ์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘์†์„ ๋Š๊ธฐ ์œ„ํ•ด CLOSE() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ํ›„ CLOSE() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ FIN segment ๋ฅผ ๋ณด๋‚ด๊ฒŒ ๋˜๊ณ  ํด๋ผ์ด์–ธํŠธ๋Š” FIN_WAIT1 ์ƒํƒœ๋กœ ๋ณ€ํ•˜๊ฒŒ ๋œ๋‹ค.
  2. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ CLOSE() ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜๊ณ  CLOSE_WAIT ์ƒํƒœ๋กœ ๋ฐ”๊พผ ํ›„ ACK segment ๋ฅผ ์ „์†กํ•œ๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋Š์„ ๊ฒƒ์ด๋ผ๋Š” ์‹ ํ˜ธ๋ฅผ ๋ฐ›์•˜๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ  CLOSE_WAIT ๋ฅผ ํ†ตํ•ด ์ž์‹ ์˜ ํ†ต์‹ ์ด ๋๋‚ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
  3. ACK segment๋ฅผ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” FIN_WAIT2 ๋กœ ๋ณ€ํ™˜๋˜๊ณ  ์ด ๋•Œ ์„œ๋ฒ„๋Š” CLOSE() ํ•จ์ˆ˜๋ฅผ ํ˜ธํ’€ํ•˜๊ณ  FIN segment ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.
  4. ์„œ๋ฒ„๋„ ์—ฐ๊ฒฐ์„ ๋‹ซ์•˜๋‹ค๋Š” ์‹ ํ˜ธ๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ˆ˜์‹ ํ•˜๋ฉด ACK segment ๋ฅผ ๋ณด๋‚ธ ํ›„ TIME_WAIT ์ƒํƒœ๋กœ ์ „ํ™˜๋œ๋‹ค. ์ด ํ›„ ๋ชจ๋“  ๊ฒƒ์ด ๋๋‚˜๋ฉด CLOSED ์ƒํƒœ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

๊ฐ ๊ณผ์ •์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • CLOSE
    • ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์˜ ๊ธฐ๋ณธ ์ƒํƒœ (์—ฐ๊ฒฐ ์—†์Œ)
  • ESTABLISHED
    • ์—ฐ๊ฒฐ์˜ ์ˆ˜๋ฆฝ์ด ์™„๋ฃŒ๋œ ์ƒํƒœ, ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • CLOSE-WAIT
    • ์ƒ๋Œ€๋ฐฉ์˜ FIN(์ข…๋ฃŒ ์š”์ฒญ)์„ ๋ฐ›์€ ์ƒํƒœ. ์ƒ๋Œ€๋ฐฉ FIN์— ๋Œ€ํ•œ ACK๋ฅผ ๋ณด๋‚ด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ข…๋ฃŒ๋ฅผ ์•Œ๋ฆฐ๋‹ค.
  • LAST-ACK
    • CLOSE-WAIT ์ƒํƒœ๋ฅผ ์ฒ˜๋ฆฌ ํ›„ ์ž์‹ ์˜ FIN์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ FIN์— ๋Œ€ํ•œ ACK๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ.
  • FIN-WAIT-1
    • ์ž์‹ ์ด ๋ณด๋‚ธ FIN์— ๋Œ€ํ•œ ACK๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ ์ƒ๋Œ€๋ฐฉ์˜ FIN์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  • FIN-WAIT-2
    • ์ž์‹ ์ด ๋ณด๋‚ธ FIN์— ๋Œ€ํ•œ ACK๋ฅผ ๋ฐ›์•˜๊ณ  ์ƒ๋Œ€๋ฐฉ์˜ FIN์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  • CLOSING
    • ์ƒ๋Œ€๋ฐฉ์˜ FIN์— ACK๋ฅผ ๋ณด๋ƒˆ์ง€๋งŒ ์ž์‹ ์˜ FIN์— ๋Œ€ํ•œ ACK๋ฅผ ๋ชป๋ฐ›์€ ์ƒํƒœ
  • TIME-WAIT
    • ๋ชจ๋“  FIN์— ๋Œ€ํ•œ ACK๋ฅผ ๋ฐ›๊ณ  ์—ฐ๊ฒฐ ์ข…๋ฃŒ๊ฐ€ ์™„๋ฃŒ๋œ ์ƒํƒœ. ์ƒˆ ์—ฐ๊ฒฐ๊ณผ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๊ธฐ๋‹ค๋ฆฐ ํ›„ CLOSED๋กœ ์ „์ดํ•œ๋‹ค.

๐Ÿงฃ HTTP ํ†ต์‹  ๊ณผ์ •

1๏ธโƒฃ ๋ธŒ๋ผ์šฐ์ €์—์„œ URL์„ ๋ถ„์„ํ•˜์—ฌ HTTP Request ๋ฉ”์‹œ์ง€๋ฅผ ๋งŒ๋“ค๊ณ  ์›น ์„œ๋ฒ„๋กœ ์ „์†กํ•œ๋‹ค.
์ด ๋•Œ, ๋ธŒ๋ผ์šฐ์ €๋Š” OS๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š”๋ฐ ์–ด๋””๋กœ ๋ณด๋‚ผ ์ง€๋Š” IP ์ฃผ์†Œ๋กœ ์ง€์ •ํ•ด์•ผํ•œ๋‹ค.
์ด ๊ณผ์ •์—์„œ ์›น ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ ๋ช…์„ DNS ์„œ๋ฒ„์— ์กฐํšŒํ•˜์—ฌ IP ์ฃผ์†Œ๋ฅผ ์–ป๋Š”๋‹ค.

 

2๏ธโƒฃ ํ”„๋กœํ† ์ฝœ ์Šคํƒ(์šด์˜์ฒด์ œ์— ๋‚ด์žฅ๋œ ๋„คํŠธ์›Œํฌ ์ œ์–ด์šฉ ์†Œํ”„ํŠธ์›จ์–ด)์€ ๋ธŒ๋ผ์šฐ์ €๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๋ฉ”์‹œ์ง€๋ฅผ ํŒจํ‚ท ์†์— ์ €์žฅํ•œ ๋’ค LAN ์–ด๋Œ‘ํ„ฐ๋ฅผ ํ†ตํ•ด ํŒจํ‚ท์„ LAN ์ผ€์ด๋ธ”๋กœ ์†ก์ถœํ•œ๋‹ค.

 

3๏ธโƒฃ LAN ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์†ก์‹ ํ•œ ํŒจํ‚ท์€ ์Šค์œ„์นญ ํ—ˆ๋ธŒ๋ฅผ ๊ฒฝ์œ ํ•˜์—ฌ ์ธํ„ฐ๋„ท ์ ‘์†์šฉ ๋ผ์šฐํ„ฐ์— ๋„์ฐฉํ•˜๊ณ  ์ธํ„ฐ๋„ท์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

 

4๏ธโƒฃ ํŒจํ‚ท์€ ์ธํ„ฐ๋„ท์˜ ์ž…๊ตฌ์— ์žˆ๋Š” ์•ก์„ธ์Šค ํšŒ์„ (ํ†ต์‹  ํšŒ์„ )์— ์˜ํ•ด POP(Point Of Presence, ํ†ต์‹  ์‚ฌ์šฉ ๋ผ์šฐํ„ฐ)๊นŒ์ง€ ์šด๋ฐ˜๋œ๋‹ค.
์ด ํ›„ POP๋ฅผ ๊ฑฐ์ณ ์ธํ„ฐ๋„ท์˜ ํ•ต์‹ฌ๋ถ€๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ๋œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ˆ˜ ๋งŽ์€ ๊ณ ์† ๋ผ์šฐํ„ฐ๋“ค ์‚ฌ์ด๋กœ ํŒจํ‚ท์ด ๋ชฉ์ ์ง€๋ฅผ ํ–ฅํ•ด ํ˜๋Ÿฌ๊ฐ€๊ฒŒ ๋œ๋‹ค.

 

5๏ธโƒฃ ํŒจํ‚ท์€ ์ธํ„ฐ๋„ท ํ•ต์‹ฌ๋ถ€๋ฅผ ํ†ต๊ณผํ•˜์—ฌ ์›น ์„œ๋ฒ„ ์ธก์˜ LAN์— ๋„์ฐฉํ•œ๋‹ค.
์›น ์„œ๋ฒ„์˜ ๋ฐฉํ™”๋ฒฝ์ด ๋„์ฐฉํ•œ ํŒจํ‚ท์„ ๊ฒ€์‚ฌํ•˜๊ณ  ํŒจํ‚ท์ด ์›น ์„œ๋ฒ„๊นŒ์ง€ ๊ฐ€์•ผํ•˜๋Š”์ง€ ๊ฐ€์ง€ ์•Ÿ์•„๋„ ๋˜๋Š”์ง€ ์บ์‹œ ์„œ๋ฒ„๊ฐ€ ํŒ๋‹จํ•˜์—ฌ ๊ตณ์ด ์„œ๋ฒ„๊นŒ์ง€ ๊ฐ€์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ณจ๋ผ๋‚ธ๋‹ค.
ํŽ˜์ด์ง€์˜ ๋ฐ์ดํ„ฐ ์ค‘์— ๋‹ค์‹œ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์žˆ์œผ๋ฉด ์บ์‹œ ์„œ๋ฒ„์— ์ €์žฅ๋œ๋‹ค.

 

6๏ธโƒฃ ํŒจํ‚ท์ด ๋ฌผ๋ฆฌ์ ์ธ ์›น ์„œ๋ฒ„์— ๋„์ฐฉํ•˜๋ฉด ์›น ์„œ๋ฒ„์˜ ํ”„๋กœํ† ์ฝœ ์Šคํƒ์€ ํŒจํ‚ท์„ ์ถ”์ถœํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณต์›ํ•˜๊ณ  ์›น ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋„˜๊ธด๋‹ค.

๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์€ ์›น ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์š”์ฒญ ๋ฉ”์‹œ์ง€์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์‘๋‹ต ๋ฉ”์‹œ์ง€์— ๋„ฃ์–ด ํด๋ผ์ด์–ธํŠธ๋กœ ํšŒ์‹ ํ•œ๋‹ค.

 

7๏ธโƒฃ ์™”๋˜ ๋ฐฉ์‹๋Œ€๋กœ ์‘๋‹ต ๋ฉ”์‹œ์ง€๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ๋œ๋‹ค.

๐Ÿงฃ HTTPS

Hypertext Transfer Protocol Over Secure Socket Layer.
HTTP๋Š” ํ‰๋ฌธ(์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์ •๋ณด)์œผ๋กœ ํ†ต์‹ ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ด ์ทจ์•ฝํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
์ด ๋ฌธ์ œ ๋•Œ๋ฌธ์— ๋‚˜ํƒ€๋‚œ ๊ฒƒ์ด HTTPS๋‹ค.

 

๊ธฐ๋ณธ ํฌํŠธ๋Š” 443์ด๋‹ค.
HTTP๋Š” ์›๋ž˜ TCP ์™€ ์ง์ ‘ ํ†ต์‹ ํ–ˆ์ง€๋งŒ, HTTPS์—์„œ HTTP ๋Š” SSL๊ณผ ํ†ต์‹ ํ•˜๊ณ  SSL์ด TCP ์™€ ํ†ต์‹ ํ•œ๋‹ค.
SSL์„ ์‚ฌ์šฉํ•œ HTTPS๋Š” ์•”ํ˜ธํ™”์™€ ์ฆ๋ช…์„œ, ์•ˆ์ „์„ฑ ๋ณดํ˜ธ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
๋Œ€์นญํ‚ค์™€ ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ํ˜ผํ•ฉํ•˜์—ฌ ๋ณด์•ˆ ํ†ต์‹ ์„ ๊ตฌํ˜„ํ•œ๋‹ค.
๋Œ€์นญํ‚ค๋ฅผ ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™”๋ฐฉ์‹์œผ๋กœ ๊ตํ™˜ํ•œ ๋‹ค์Œ์— ๊ทธ ํ›„ ํ†ต์‹ ์€ ๋Œ€์นญํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
๊ณต๊ฐœํ‚ค ์•”ํ˜ธ์—์„œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ํ‚ค ํŽ˜์–ด(๋น„๋ฐ€ํ‚ค, ๊ณต๊ฐœํ‚ค)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋น„๋ฐ€ํ‚ค๋Š” ์•Œ๋ ค์ง€๋ฉด ์•ˆ๋˜๋Š” ํ‚ค์ด๋ฉฐ, ๊ณต๊ฐœํ‚ค๋Š” ๋ˆ„๊ตฌ์—๊ฒŒ๋‚˜ ์•Œ๋ ค์ ธ๋„ ๊ดœ์ฐฎ์€ ํ‚ค๋‹ค.

๊ณผ์ •

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ๋Œ€์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ์•”ํ˜ธํ™”๋ฅผ ํ•œ๋‹ค.
  2. ์„œ๋ฒ„๋Š” ์ž์‹ ์˜ ๋น„๋ฐ€ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ๋ณตํ˜ธํ™”๋ฅผ ์‹œ๋„ํ•œ๋‹ค. ์ด ๋ฐฉ์‹์€ ์•”ํ˜ธ๋ฅผ ํ‘ธ๋Š” ๋น„๋ฐ€ํ‚ค๋ฅผ ํ†ต์‹ ์œผ๋กœ ๋ณด๋‚ผ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ๋„์ฒญ์— ์˜ํ•ด์„œ ํ‚ค๋ฅผ ๋นผ์•—๊ธธ ๊ฑฑ์ •์ด ์—†๋‹ค.

ํ•˜์ง€๋งŒ ๊ณต๊ฐœํ‚ค๊ฐ€ ์ง„์งœ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ์„œ๋ฒ„์—์„œ ์ฆ๋ช…ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ธ์ฆ๊ธฐ๊ด€(CA : Certificate Authority)๊ณผ ๊ทธ ๊ธฐ๊ด€์ด ๋ฐœํ–‰ํ•˜๋Š” ๊ณต๊ฐœํ‚ค ์ฆ๋ช…์„œ๊ฐ€ ์ด์šฉ๋˜๊ณ  ์žˆ๋‹ค.
์ธ์ฆ ๊ธฐ๊ด€์ด๋ž€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๋ชจ๋‘ ์‹ ๋ขฐํ•˜๋Š” ์ œ 3์ž ๊ธฐ๊ด€์ด๋‹ค.


๊ณต๊ฐœํ‚ค๋ฅผ ์ธ์ฆ ๊ธฐ๊ด€์— ์ œ์ถœํ•˜๋ฉด ์ธ์ฆ ๊ธฐ๊ด€์€ ์ œ์ถœ๋œ ๊ณต๊ฐœํ‚ค์— ๋””์ง€ํ„ธ ์„œ๋ช…์„ ํ•˜๊ณ  ์„œ๋ช…์ด ๋๋‚œ ๊ณต๊ฐœํ‚ค๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ทธ ํ›„ ๊ณต๊ฐœํ‚ค ์ธ์ฆ์„œ์— ์„œ๋ช…์ด ๋๋‚œ ๊ณต๊ฐœํ‚ค๋ฅผ ๋‹ด๋Š”๋‹ค.

 

์˜ˆ์ „์—” HTTPS ์ธ์ฆ์„œ์—๋Œ€ํ•œ ๋น„์šฉ์ด ๋ฐœ์ƒํ–ˆ์œผ๋‚˜,
Google, Mozilla ๋“ฑ์˜ ์žฌ๋‹จ ๋ฐ ํšŒ์‚ฌ๊ฐ€ 'Let's Encrypt'๋ผ๋Š” ์ด๋ฆ„์˜ ๋ฌด๋ฃŒ๋กœ HTTPS ์ธ์ฆ์„œ๋ฅผ ๋ณด๊ธ‰ํ•ด์ฃผ๋Š” ๊ธฐ๊ด€์„ ๋งŒ๋“ค์—ˆ๋‹ค.
์ด ๊ธฐ๊ด€์„ ํ†ตํ•ด ์†์‰ฝ๊ฒŒ HTTPS ์ธ์ฆ์„œ๋ฅผ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 


์ฐธ์กฐ๋ฌธ์„œ

 

Seize the day!

Spring MVC | Spring Boot | Spring Security | Mysql | Oracle | PostgreSQL | Vue.js | Nuxt.js | React.js | TypeScript | JSP | Frontend | Backend | Full Stack | ์ž๊ธฐ๊ณ„๋ฐœ | ๋ฏธ๋ผํด ๋ชจ๋‹ | ์ผ์ƒ