๐Ÿงญ KAIST JUNGLE/Computer Science

[CS:APP] 11. ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(์„ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—)

seungineer = seungwoo + engineer 2024. 4. 19. 14:51

6์ฃผ์ฐจ๋Š” CS:APP์˜ 11์žฅ์„ ์ฐธ๊ณ ํ•˜์—ฌ '์›น์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ'๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

11์žฅ์„ ์ฝ๊ธฐ ์ „์— ๊ธฐ๋ณธ์ ์ธ ์„ ์ˆ˜์ง€์‹์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค.

CS:APP


โ˜‘๏ธ TCP/IP, HTTP๋Š” ๋ฌด์—‡์ผ๊นŒ?

๊ณ„์ธต ์ „์†ก ๊ณ„์ธต ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ์‘์šฉ ๊ณ„์ธต
์ฃผ ๊ธฐ๋Šฅ ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ์‹ ๋ขฐ์„ฑ ๋ณด์žฅ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์˜ ์ฃผ์†Œ ์ง€์ • ๋ฐ ๊ฒฝ๋กœ ์„ค์ • ์›น ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜
๋ฐ์ดํ„ฐ ๋‹จ์œ„ ์„ธ๊ทธ๋จผํŠธ ํŒจํ‚ท ๋ฉ”์‹œ์ง€
ํ”„๋กœํ† ์ฝœ ์—ฐ๊ฒฐ ์ง€ํ–ฅ์  ๋น„์—ฐ๊ฒฐ ์ง€ํ–ฅ์  ์ƒํƒœ๊ฐ€ ์—†์Œ

TCP(Transmission Control Protocol)

  • ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•ํ•œ ์ „์†ก์„ ๋ณด์žฅํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์„ธ๊ทธ๋จผํŠธ๋กœ ๋‚˜๋ˆ„๊ณ , ์ˆœ์„œ๋Œ€๋กœ ์ „์†กํ•˜๋ฉฐ, ์†์‹ค๋œ ๋ฐ์ดํ„ฐ๋Š” ์žฌ์ „์†กํ•จ
  • ๋ฐ์ดํ„ฐ ์ „์†ก ์ „์— ํ†ต์‹ ํ•˜๋Š” ๋‘ ์ง€์  ๊ฐ„์— ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•จ(์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ๋ณด์žฅ)

IP(Internet Protocol)

  • ๊ฐ ํŒจํ‚ท์€ ๋…๋ฆฝ์ ์œผ๋กœ ์ „์†ก๋˜๋ฉฐ, ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด ๋ชฉ์ ์ง€์— ๋„๋‹ฌ ๊ฐ€๋Šฅํ•จ(๋น„์—ฐ๊ฒฐ ์ง€ํ–ฅ์ )
  • ํŒจํ‚ท ๋‹จ์œ„ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ํ•˜๋ฉฐ ํŒจํ‚ท์—๋Š” ์†ก์ง„์ž์™€ ๋ชฉ์ ์ง€ IP ์ฃผ์†Œ๊ฐ€ ํฌํ•จ๋จ

HTTP(Hypertext Transfer Protocol)

  • ํด๋ผ์ด์–ธํŠธ(์›น๋ธŒ๋ผ์šฐ์ €) ↔ ์„œ๋ฒ„(์›น์„œ๋ฒ„) ๊ฐ„ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉฐ ์›น ํŽ˜์ด์ง€์˜ ์š”์ฒญ๊ณผ ์ „์†ก์— ์‚ฌ์šฉ๋จ
  • ์—ฐ๊ฒฐ/๋น„์—ฐ๊ฒฐ ์ง€ํ–ฅ์  ํ”„๋กœํ† ์ฝœ์ด ์•„๋‹Œ ์ƒํƒœ๊ฐ€ ์—†๋Š”(stateless) ํ”„๋กœํ† ์ฝœ์ž„(์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ด์ „ ์š”์ฒญ์„ ๊ธฐ์–ตํ•˜์ง€ ์•Š๊ธฐ์— ๊ฐ ์š”์ฒญ์€ ๋…๋ฆฝ์ ์ž„)

โ˜‘๏ธ UDP์™€ TCP๋Š”?

์—ฐ๊ฒฐ ๋ฐฉ์‹ ๋น„์—ฐ๊ฒฐํ˜•(์—ฐ๊ฒฐ ์„ค์ • ์—†์Œ) ์—ฐ๊ฒฐํ˜•(์—ฐ๊ฒฐ ์„ค์ • ํ•„์š”)
์‹ ๋ขฐ์„ฑ ๋‚ฎ์Œ(๋ฐ์ดํ„ฐ ์†์‹ค ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ) ๋†’์Œ(๋ฐ์ดํ„ฐ ์ˆœ์„œ ๋ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ)
์ˆœ์„œ ๋ณด์žฅ ์—†์Œ ์žˆ์Œ
๋ฐ์ดํ„ฐ ํ๋ฆ„ ์ œ์–ด ์—†์Œ ์žˆ์Œ (ํ˜ผ์žก ์ œ์–ด ๋ฐ ํ๋ฆ„ ์ œ์–ด)
์†๋„ ๋น ๋ฆ„ ๋น„๊ต์  ๋Š๋ฆผ
์‚ฌ์šฉ ์‚ฌ๋ก€ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ, ์˜จ๋ผ์ธ ๊ฒŒ์ž„ ์›น ํŽ˜์ด์ง€ ๋กœ๋”ฉ, ์ด๋ฉ”์ผ

๐Ÿ’ก UDP๋Š” ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ์ค‘์š”ํ•˜๊ณ , ์‹ค์‹œ๊ฐ„์„ฑ์ด ์š”๊ตฌ๋˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—, TCP๋Š” ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•์„ฑ๊ณผ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉ!

โ˜‘๏ธ Socket?

socket์ด๋ž€, ์ธํ„ฐ๋„ท ํ˜น์€ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์žฅ์น˜์ด๋‹ค.

  • ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์ˆ˜์‹ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์—”๋“œํฌ์ธํŠธ
  • ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์„œ๋กœ ํ†ต์‹ ํ•˜๋ ค๋ฉด ๊ฐ๊ฐ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์†Œ์ผ“์„ ์—ด๊ณ , ์†Œ์ผ“ ๊ฐ„ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•จ

Burkeley Sockets

๋ฒ„ํด๋ฆฌ ์†Œ์ผ“์€ UNIX ์‹œ์Šคํ…œ์—์„œ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ์œ„ํ•ด ์ฒ˜์Œ ๊ฐœ๋ฐœ๋œ API์ด๋‹ค. ์ด๋Š” ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ์œ„ํ•œ ํ‘œ์ค€์ ์ธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ TCP/IP ๊ฐ™์€ ์ธํ„ฐ๋„ท(Inter-network) ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ

๐Ÿ’ก ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์›น์„œ๋ฒ„๋Š” ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์„ ๋•Œ ์—ฐ๊ฒฐ ์š”์ฒญ์ด ์˜ค๋ฉด, ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜๊ณ , ์ƒˆ๋กœ์šด ์†Œ์ผ“์„ ์—ด์–ด ํด๋ผ์ด์–ธํŠธ์™€ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹

โ˜‘๏ธ ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ชจ๋ธ?

Client-Server Model

๋„คํŠธ์›Œํฌ ํ†ต์‹ ์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ‘ํด๋ผ์ด์–ธํŠธ’์™€ ‘์„œ๋ฒ„’๊ฐ€ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ ‘์„œ๋น„์Šค’๋ฅผ ์š”์ฒญํ•˜๊ณ , ์„œ๋ฒ„๋Š” ๊ทธ ์š”์ฒญ์— ์‘๋‹ตํ•˜์—ฌ ‘์„œ๋น„์Šค’๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

  • ์žฅ์ : ์ค‘์•™์ง‘์ค‘ํ™”๋œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์™€ ์ž์›์˜ ํšจ์œจ์  ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ๊ณผ ์„œ๋ฒ„๋Š” ๋‹ค์ˆ˜์˜ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ๋‹จ์ : ์ค‘์•™์ง‘์ค‘ํ™”๋œ ์„œ๋ฒ„์ด๊ธฐ์— ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ์ „์ฒด ์‹œ์Šคํ…œ์ด ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ(Single Point of Failure, ๋‹จ์ผ ์žฅ์•  ์ง€์ ), ๋˜ํ•œ ํด๋ผ์ด์–ธํŠธ ์ˆ˜ ์ฆ๊ฐ€์— ๋”ฐ๋ฅธ ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ

Peer to Peer(P2P) Model

๋„คํŠธ์›Œํฌ ์ƒ์˜ ๋ชจ๋“  ์ฃผ์ฒด(peer)๊ฐ€ ๋™๋“ฑํ•œ ์œ„์น˜์—์„œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ด๋‹ค.

  • ์ฃผ์ฒด(peer)๋Š” ํŒŒ์ผ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ‘์„œ๋ฒ„ ์—ญํ• ’์„ ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๋‹ค๋ฅธ ํ”ผ์–ด๋กœ๋ถ€ํ„ฐ ํŒŒ์ผ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ‘ํด๋ผ์ด์–ธํŠธ ์—ญํ• ’์„ ํ•  ์ˆ˜๋„ ์žˆ์Œ
  • ์žฅ์ : ์ค‘์•™ ์„œ๋ฒ„์˜ ๋ถ€๋‹ด์ด ๋‚ฎ๊ณ , ๋„คํŠธ์›Œํฌ ์ž์›์„ ๋ถ„์‚ฐํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ 
  • ๋‹จ์ : peer ๊ฐ„ ์ง์ ‘ ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ง€๊ธฐ์— ๋ณด์•ˆ ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ชจ๋“  ํ”ผ์–ด๊ฐ€ ์„œ๋ฒ„ ์—ญํ• ์„ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ผ๊ด€๋œ ์„œ๋น„์Šค ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ
  • ์˜ˆ: ํŒŒ์ผ ๊ณต์œ , ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค ๋“ฑ

Publish-Subscribe(Pub/Sub) Model

๋ฉ”์‹œ์ง€ ๋ฐœํ–‰์ž(publisher)์™€ ๊ตฌ๋…์ž(subscriber)๋กœ ๊ตฌ๋ถ„๋˜๋Š” ๋ชจ๋ธ๋กœ ๋ฐœํ–‰์ž๋Š” ํŠน์ • ์ฃผ์ œ์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ , ๊ตฌ๋…์ž๋Š” ๊ตฌ๋…๋œ ์ฃผ์ œ์˜ ๋ฉ”์‹œ์ง€๋งŒ์„ ์ˆ˜์‹ ํ•œ๋‹ค.

  • ๋Š์Šจํ•œ ๊ฒฐํ•ฉ(loose coupling)์„ ์ œ๊ณตํ•˜์—ฌ, ๋ฐœํ–‰์ž์™€ ๊ตฌ๋…์ž ๊ฐ„ ์ง์ ‘์  ์—ฐ๊ฒฐ ์—†์ด ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ

โ˜‘๏ธ (์ฐธ๊ณ ) UNIX File operation

UNIX ์‹œ์Šคํ…œ์—์„œ ํŒŒ์ผ์„ ๋‹ค๋ฃจ๋Š” ์ž‘์—…์€ system call์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค. System call(H/W๋‹จ control)๋กœ OS์˜ Kernel space๋กœ ๊ธฐ๋Šฅ ์š”์ฒญ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  1. ํŒŒ์ผ ์—ด๊ธฐ(open)
    • ํŒŒ์ผ์„ ์—ด๊ณ  ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ(file descriptor)๋ฅผ ๋ฐ˜ํ™˜ํ•จ
    • ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ๋Š” ์—ด๋ฆฐ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ •์ˆ˜ ๊ฐ’
    • ์˜ˆ: int fd = open("example.txt", O_RDONLY);
  2. ํŒŒ์ผ ์ฝ๊ธฐ(read)
    • ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ, ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฒ„ํผ ์ฃผ์†Œ, ์ฝ์„ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Œ
    • ์˜ˆ: ssize_t bytes_read = read(fd, buffer, sizeof(buffer));
    • fd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์—์„œ sizeof(buffer) ๋งŒํผ ์ฝ์€ ํ›„์— buffer์— ์ €์žฅํ•จ
  3. ํŒŒ์ผ ์“ฐ๊ธฐ(write)
    • ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ, ์“ธ ๋ฐ์ดํ„ฐ์˜ ๋ฒ„ํผ ์ฃผ์†Œ, ์“ธ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ๋ฐ์ดํ„ฐ๋ฅผ ์”€
    • ์˜ˆ: ssize_t bytes_written = write(fd, buffer, bytes_to_write);
    • fd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์˜ buffer์—์„œ ์ง€์ •๋œ ๋ฐ”์ดํŠธ๋งŒํผ ๋ฐ์ดํ„ฐ๋ฅผ ์”€
  4. ํŒŒ์ผ ๋‹ซ๊ธฐ(close)
    • open ๋œ ํŒŒ์ผ์„ ๋‹ซ๊ณ , ๋‹ซํžŒ ํŒŒ์ผ์˜ ๋””์Šคํฌ๋ฆฝํ„ฐ๋ฅผ ํ•ด์ œํ•จ
    • ์˜ˆ: close(fd) ;

์ด๋Ÿฌํ•œ system call์„ ํ†ตํ•ด UNIX ์‹œ์Šคํ…œ์—์„œ File operation์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

โ˜‘๏ธ TCP ์—ฐ๊ฒฐ ๊ณผ์ •์˜ 3-way handshake ๊ณผ์ •

  1. LISTEN : ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ์ด๋ฉฐ, ์ด ์ƒํƒœ์—์„œ ์„œ๋ฒ„๋Š” ํŠน์ • ํฌํŠธ์—์„œ ๋“ค์–ด์˜ค๋Š” SYN(Synchronize) ํŒจํ‚ท์„ ๊ธฐ๋‹ค๋ฆผ
  2. SYN_RECEIVED(SL2์™€ ์œ ์‚ฌ) : ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ SYN ํŒจํ‚ท์„ ๋ฐ›๊ณ , ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ SYN + ACK ํŒจํ‚ท์„ ๋ณด๋‚ด ์—ฐ๊ฒฐ ์š”์ฒญ ์ˆ˜๋ฝํ–ˆ๋‹ค๋Š” ์‘๋‹ต์„ ๋ณด๋ƒ„
  3. ESTABLISHED : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ACK ํŒจํ‚ท์„ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ๋ฐ›์œผ๋ฉด TCP ์—ฐ๊ฒฐ์ด ์„ฑ๋ฆฝ๋œ ๊ฒƒ

๐Ÿ’ก⇒ ํด๋ผ์ด์–ธํŠธ → ์„œ๋ฒ„ (LISTEN)/ ์„œ๋ฒ„ → ํด๋ผ์ด์–ธํŠธ (SYN_RECEIVED)/ ํด๋ผ์ด์–ธํŠธ → ์„œ๋ฒ„(ESTABLISHED)

โ˜‘๏ธ Abstraction?

์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ๊ฐœ๋…์ธ Abstraction์ด ๋„คํŠธ์›Œํฌ์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์กด์žฌํ•œ๋‹ค.

  • IP Adress : ๋ชฉ์ ์ง€(or ๋ฐœ์‹ ์ง€) ํ˜ธ์ŠคํŠธ
  • host name : IP Address๋ฅผ ์ผ์ผ์ด ๊ธฐ์–ตํ•˜๊ธฐ ํž˜๋“œ๋‹ˆ ๋ฌธ์ž๋กœ ๋ฐ”๊พผ ๊ฒƒ(์ด๋ฅผ IP๋กœ ๋ฐ”๊พธ๋Š” ๊ฒŒ DNS์—์„œ ํ•˜๋Š” ์ผ)
  • TCP Port : ์„œ๋น„์Šค ์‹๋ณ„์ž(์—ฌ๊ธฐ์„œ ์„œ๋น„์Šค๋ž€, ํ”„๋กœ์„ธ์Šค ๋“ฑ)
  • PID : ํ”„๋กœ์„ธ์Šค ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ž(์‚ฌ์‹ค ์šฐ๋ฆฌ ์ปดํ“จํ„ฐ๋Š” ํ•œ ๋Œ€์ธ๋ฐ ์—ฌ๋Ÿฌ ๋Œ€ ์ธ ๊ฒƒ์ฒ˜๋Ÿผ, process๋Š” ์ปดํ“จํ„ฐ๋ฅผ Abstraction ํ•œ ๊ฒƒ)
  • URI : ๋„คํŠธ์›Œํฌ์˜ ‘๋ฆฌ์†Œ์Šค’์˜ Abstraction
  • ๋ฉ”๋ชจ๋ฆฌ๋„ File๋กœ ๋ณด๊ณ  Abstraction์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ด๋Ÿฌํ•œ Abstraction ๊ณ„์ธต์ด OSI 7 Layer

โ˜‘๏ธ HTTP vs HTTPS

๋ณด์•ˆ ํ‰๋ฌธ ๋ฐ์ดํ„ฐ ์ „์†ก, ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ์— ์ทจ์•ฝ TLS๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”, ๊ธฐ๋ฐ€์„ฑ ๋ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ, ์„œ๋ฒ„ ์ธ์ฆ
ํฌํŠธ ๋ฒˆํ˜ธ 80 443
์„ฑ๋Šฅ ์•”ํ˜ธํ™” ๊ณผ์ •์ด ์—†์–ด ๋น ๋ฆ„ ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™” ๊ณผ์ •์œผ๋กœ ์ธํ•ด ์•ฝ๊ฐ„์˜ ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ, ํ•˜์ง€๋งŒ ์ตœ๊ทผ ๊ธฐ์ˆ  ๋ฐœ์ „์œผ๋กœ ์ฐจ์ด ๊ฐ์†Œ
์‹ ๋ขฐ์„ฑ ์—†์Œ SSL/TLS ์ธ์ฆ์„œ๋ฅผ ํ†ตํ•œ ์›น์‚ฌ์ดํŠธ ์‹ ๋ขฐ์„ฑ ๋ณด์ฆ

TLS(Transport Layer Security)?

TLS๋Š” ์ธํ„ฐ๋„ท์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค. TLS์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ธฐ๋Šฅ์œผ๋กœ ํ†ต์‹ ์˜ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•œ๋‹ค.

  1. ์•”ํ˜ธํ™”(encryption) : ๋ฐ์ดํ„ฐ๊ฐ€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†Œ์˜ค๋”œ ๋•Œ ์ œ์‚ผ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€
  2. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ(Data Integrity) : ์ „์†ก ์ค‘์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๊ฐ„์— ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ์†์ƒ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ๊ฒ€์ฆ
  3. ์ธ์ฆ(Authentication) : TLS๋Š” ‘์„œ๋ฒ„’์™€ ‘ํด๋ผ์ด์–ธํŠธ’๊ฐ€ ์„œ๋กœ์˜ ์‹ ์›์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ, ํŠนํžˆ ‘์„œ๋ฒ„’๋Š” ๋””์ง€ํ„ธ ์ธ์ฆ์„œ๋ฅผ ํ†ตํ•ด ์ž์‹ ์˜ ์‹ ์›์„ ์ฆ๋ช…ํ•ด์•ผ ํ•จ, ์ด ์ธ์ฆ์„œ๋Š” ์ธ์ฆ๊ธฐ๊ด€(CA)์—์„œ ๋ฐœ๊ธ‰๋˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฉ๋ฌธํ•˜๋Š” ์›น์‚ฌ์ดํŠธ๊ฐ€ ์‹ค์ œ๋กœ ์›ํ•˜๋Š” ์‚ฌ์ดํŠธ์™€ ๊ฐ™์€ ๊ธฐ๊ด€์ž„์„ ๋ณด์ฆํ•จ