ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ๋„คํŠธ์›Œํฌ ์‹ฌํ™” ๊ณผ์ •
    Topic/CS 2022. 2. 15. 13:47
    ๋ฐ˜์‘ํ˜•

    IP & IP Packet ๐Ÿ’ฅ

    ์ธํ„ฐ๋„ท ๋‚ด๋ถ€์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ํ†ต์‹ ํ•˜๋Š” ๋ฒ•

     

    IP(์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ) ์ฃผ์†Œ๋ฅผ ์ปดํ“จํ„ฐ์— ๋ถ€์—ฌํ•˜์—ฌ ์ด๋ฅผ ์‚ฌ์šฉ

    ํŒจํ‚ท ๋‹จ์œ„๋กœ ์ „์†ก์„ ํ•˜๋ฉด ๋…ธ๋“œ๋“ค์€ ๋ชฉ์ ์ง€ IP์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ

     

    IP

    ์ง€์ •ํ•œ IP ์ฃผ์†Œ(IP Address)์— ํŒจํ‚ท(Packet)์ด๋ผ๋Š” ํ†ต์‹  ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ

     

    IP Packet

    pack + bucket์˜ ํ•ฉ์„ฑ์–ด ํŒจํ‚ท!
    ์šฐ์ฒด๊ตญ ์†ก์žฅ์ฒ˜๋Ÿผ ์ „์†ก ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌด์‚ฌํžˆ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์ถœ๋ฐœ์ง€ IP, ๋ชฉ์ ์ง€ IP์™€ ๊ฐ™์€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

     

    IP์˜ ํ•œ๊ณ„์ 

    ๋น„์—ฐ๊ฒฐ์„ฑ

     

    ํŒจํ‚ท์„ ๋ฐ›์„ ๋Œ€์ƒ์ด ์—†๊ฑฐ๋‚˜ ์„œ๋น„์Šค ๋ถˆ๋Šฅ ์ƒํƒœ์—ฌ๋„ ํŒจํ‚ท์„ ์ „์†กํ•ด๋ฒ„๋ฆฐ๋‹ค..

     

    ๋น„์‹ ๋ขฐ์„ฑ 

     

    ์ค‘๊ฐ„์— ํŒจํ‚ท์ด ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค!

     

    ํŒจํ‚ท์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค.


    Ex. ์ „๋‹ฌ ๋ฐ์ดํ„ฐ์˜ ์šฉ๋Ÿ‰์ด ํฐ ๊ฒฝ์šฐ ํŒจํ‚ท ๋‹จ์œ„๋กœ ๋‚˜๋ˆ  ์ „๋‹ฌ
    -> ์„œ๋กœ ๋‹ค๋ฅธ ๋…ธ๋“œ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋ฉฐ ์˜๋„๋˜์ง€ ์•Š์€ ์ˆœ์„œ๋กœ ํŒจํ‚ท์ด ๋„์ฐฉํ•ด๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค.

     

    TCP vs UDP ๐Ÿ”ฅ

     

    Ex. ์ฑ„ํŒ… ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ
    - HTTP ๋ฉ”์‹œ์ง€๊ฐ€ ์ƒ์„ฑ๋จ
    - Socket ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ
    - IP ํŒจํ‚ท์„ ์ƒ์„ฑํ•˜๊ธฐ ์ „ TCP ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ƒ์„ฑ
    - ์ƒ์„ฑ๋œ TCP/IP ํŒจํ‚ท์€ LAN ์นด๋“œ์™€ ๊ฐ™์€ ๋ฌผ๋ฆฌ์  ๊ณ„์ธต์„ ์ง€๋‚˜๊ธฐ ์œ„ํ•ด ์ด๋”๋„ท ํ”„๋ ˆ์ž„ ์›Œํฌ์— ํฌํ•จ๋˜์–ด ์„œ๋ฒ„๋กœ ์ „์†ก

     

    TCP

    ์ „์†ก ์ œ์–ด ํ”„๋กœํ† ์ฝœ (Transmission Control Protocol )

     

    ์—ฐ๊ฒฐ์ง€ํ–ฅํ˜• - 3 way handshake

    ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„ / ์ ‘์† ์š”์ฒญํ•˜๋Š” SYN ํŒจํ‚ท ์ „์†ก
    ์„œ๋ฒ„ -> ํด๋ผ์ด์–ธํŠธ / ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ SYN + ACK ์„ค์ €๋œ ํŒจํ‚ท ๋ฐœ์†ก
    ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„ / ์„œ๋ฒ„์—๊ฒŒ ACK ๋ณด๋ƒ„( ์—ฐ๊ฒฐ ์„ฑ๋ฆฝ, ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ€๋Šฅ )

    IP ํŒจํ‚ท์˜ ํ•œ๊ณ„์ธ ๋น„์—ฐ๊ฒฐ์„ฑ์„ ๋ณด์™„
    -> ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค๋ฉด ์ด์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋Œ๋ ค์ค€๋‹ค.

    IP ํŒจํ‚ท์˜ ๋น„์‹ ๋ขฐ์„ฑ์„ ๋ณด์™„
    -> ํŒจํ‚ท์ด ์ˆœ์„œ๋Œ€๋กœ ๋„์ฐฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด TCP ์„ธ๊ทธ๋จผํŠธ์— ์žˆ๋Š” ์ •๋ณด๋ฅผ ํ† ๋Œ€๋กœ ๋‹ค์‹œ ํŒจํ‚ท ์ „์†ก์„ ์š”์ฒญํ•œ๋‹ค.

     

    UDP

    ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๊ทธ๋žจ ํ”„๋กœํ† ์ฝœ

     

    IP ํ”„๋กœํ† ์ฝœ์— PORT, ์ฒดํฌ์„ฌ ํ•„๋“œ ์ •๋ณด๋งŒ ์ถ”๊ฐ€๋œ ๋‹จ์ˆœํ•œ ํ”„๋กœํ† ์ฝœ (์ฒดํฌ์„ฌ: ์ค‘๋ณต ๊ฒ€์‚ฌ์˜ ํ•œ ํ˜•ํƒœ)

    HTTP3 -> UDP๋ฅผ ์‚ฌ์šฉ, ์ด๋ฏธ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋œ TCP๋ณด๋‹ค๋Š” ํฐ ๋„ํ™”์ง€์ฒ˜๋Ÿผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ 

     

    TCP UDP
    ์—ฐ๊ฒฐ์ง€ํ–ฅํ˜• ํ”„๋กœํ† ์ฝœ ๋น„ ์—ฐ๊ฒฐ์ง€ํ–ฅํ˜• ํ”„๋กœํ† ์ฝœ
    ์ „์†ก ์ˆœ์„œ ๋ณด์žฅ ์ „์†ก ์ˆœ์„œ ๋ณด์žฅ X
    ๋ฐ์ดํ„ฐ ์ˆ˜์‹  ์—ฌ๋ถ€ ํ™•์ธ  ๋ฐ์ดํ„ฐ ์ˆ˜์‹  ์—ฌ๋ถ€ ํ™•์ธ X
    ์‹ ๋ขฐ์„ฑ ๐Ÿ‘๐Ÿป ์†๋„ ๐Ÿ‘Ž๐Ÿป ์‹ ๋ขฐ์„ฑ ๐Ÿ‘Ž๐Ÿป ์†๋„ ๐Ÿ‘๐Ÿป
    ์ข‹์€ ๊ธฐ๋Šฅ์ด ๋‹ค ๋“ค์–ด์žˆ๋Š” ๋ฌด๊ฑฐ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (TCP) vs ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ๋“ค์–ด์žˆ๋Š” ๊ฐ€๋ฒผ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (UDP)

     

    HTTP ๐Ÿ’ป

     

    HTTP/1.1, HTTP/2๋Š” TCP ๊ธฐ๋ฐ˜์ด๋ฉฐ HTTP/3์€ UDP ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ

     

    HTTP์˜ ํŠน์ง•

    ๋‹จ์ˆœํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค.
    ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ๊ตฌ์กฐ
    ๋ฌด์ƒํƒœ์„ฑ(Stateless)

    ์ƒํƒœ ์œ ์ง€(Stateful):
    ์ ์›A๊ฐ€ ๊ณ ๊ฐ์˜ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ
    ->ํ•ญ์ƒ ๊ฐ™์€ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•ด์•ผ -> ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋‚œ๋‹ค๋ฉด ์œ ์ง€๋˜๋˜ ์ƒํƒœ์ •๋ณด ๋‚ ๋ผ๊ฐ, ์ฒ˜์Œ๋ถ€ํ„ฐ ์„œ๋ฒ„์— ๋‹ค์‹œ ์š”์ฒญํ•ด์•ผ ํ•จ

    ๋ฌด์ƒํƒœ(Stateless):
    (๊ณ ๊ฐ์ด ์ž์‹ ์˜ ์ฃผ๋ฌธ์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋‹ค๋ฉด) ์ค‘๊ฐ„์— ๋‹ค๋ฅธ ์ ์›์œผ๋กœ ๋ฐ”๋€Œ์–ด๋„ ์ฃผ๋ฌธ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    ๊ณ ๊ฐ(ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ)์ด ์ฆ๊ฐ€ํ•˜๋”๋ผ๋„ ๋ฌด์ƒํƒœ์—์„œ๋Š” ์ ์›(์„œ๋ฒ„)์„ ๋Œ€๊ฑฐ ํˆฌ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค
    -> ์‘๋‹ต ์„œ๋ฒ„๋ฅผ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค -> ๋ฌดํ•œํ•œ ์„œ๋ฒ„ ์ฆ์„ค ๊ฐ€๋Šฅ

     

    ํ•œ๊ณ„ :
    ๋กœ๊ทธ์ธ์ด ํ•„์š”์—†๋Š” ๋‹จ์ˆœํ•œ ์„œ๋น„์Šค ์†Œ๊ฐœ ํ™”๋ฉด -> ๋ฌด์ƒํƒœ๋กœ ์„ค๊ณ„๊ฐ€๋Šฅ
    ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•œ ์„œ๋น„์Šค -> ์œ ์ €์˜ ์ƒํƒœ ์œ ์ง€ํ•ด์•ผ ํ•จ(๋ธŒ๋ผ์šฐ์ €์ฟ ํ‚ค,์„œ๋ฒ„์„ธ์…˜,ํ† ํฐ ๋“ฑ ์ด์šฉ ์ƒํƒœ ์œ ์ง€)

     

    ๋น„์—ฐ๊ฒฐ์„ฑ(Connectionless)

    ์š”์ฒญ์„ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ๋งŒ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๊ณ  ์‘๋‹ต์„ ์ฃผ๊ณ  ๋‚˜๋ฉด TCP/IP ์—ฐ๊ฒฐ์„ ๋Š์Œ -> ์ตœ์†Œํ•œ์˜ ์ž์›์œผ๋กœ ์„œ๋ฒ„ ์œ ์ง€
    HTTP ์ง€์† ์—ฐ๊ฒฐ(Persistant Connections)
    ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ง€๊ณ  ๋‚œ ๋’ค ๊ฐ๊ฐ์˜ ์ž์›๋“ค์„ ์š”์ฒญํ•˜๊ณ  ๋ชจ๋“  ์ž์›์— ๋Œ€ํ•œ ์‘๋‹ต์ด ๋Œ์•„์˜จ ํ›„์— ์—ฐ๊ฒฐ ์ข…๋ฃŒ

     

    HTTP ๋ฉ”์„ธ์ง€

    HTTP ๋ฉ”์‹œ์ง€๋Š” ํ—ค๋”์™€ ๋ฐ”๋””๋กœ ๊ตฌ๋ถ„

     

    HTTP body: message body(=payload) ํ†ตํ•ด ํ‘œํ˜„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
    HTTP header : ํ‘œํ˜„ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด ์ œ๊ณต( HTTP ์ „์†ก์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ถ€๊ฐ€์ •๋ณด)

     

    ํ‘œํ˜„ํ—ค๋”

    ์š”์ฒญ, ์‘๋‹ต ๋‘˜ ๋‹ค ์‚ฌ์šฉ

    Content-Type : ํ‘œํ˜„ ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹
    Content-Encoding : ํ‘œํ˜„ ๋ฐ์ดํ„ฐ์˜ ์••์ถ• ๋ฐฉ์‹
    Content-Language : ํ‘œํ˜„ ๋ฐ์ดํ„ฐ์˜ ์ž์—ฐ ์–ธ์–ด
    Content-Length : ํ‘œํ˜„ ๋ฐ์ดํ„ฐ์˜ ๊ธธ์ด

     

    ์ฝ˜ํ…์ธ  ํ˜‘์ƒ

    ๋™์ผํ•œ URI์—์„œ ๋ฆฌ์†Œ์Šค์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฒ„์ „์„ ์„œ๋ธŒํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜ - ๊ฐ€์žฅ ์ž˜ ๋งž๋Š” ํ”„๋ ˆ์  ํ…Œ์ด์…˜์˜ ๊ฒฐ์ •

     

    ํ˜‘์ƒํ—ค๋”
    -์š”์ฒญ์‹œ์—๋งŒ ์‚ฌ์šฉ

    ์บ์‹œ(cache)
    ๋ฐ์ดํ„ฐ๋‚˜ ๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด ๋†“๋Š” ์ž„์‹œ ์žฅ์†Œ

    ์บ์‹œ์˜ ์ ‘๊ทผ ์‹œ๊ฐ„์— ๋น„ํ•ด ์›๋ž˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๋‚˜ ๊ฐ’์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ
    ์š”์ฒญ - ์‘๋‹ต์„ ๋ฐ›์•˜์„ ๋•Œ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ํ•ด๋‹น ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋ฉฐ ์ด๋Š” ์ง€์ •ํ•œ ์‹œ๊ฐ„๋™์•ˆ ์œ ํšจ

    ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„ ์ดˆ๊ณผ : ๋‹ค์‹œ ์„œ๋ฒ„์— ์š”์ฒญ์„ํ•˜๊ณ  ์ง€์ • ์‹œ๊ฐ„๋™์•ˆ ์œ ํšจํ•œ ์ด๋ฏธ์ง€๋ฅผ ์‘๋‹ต๋ฐ›์Œ -> ๋„คํŠธ์›Œํฌ ๋‹ค์šด๋กœ๋“œ

     

    ๊ฒ€์ฆ ํ—ค๋”(Validator), ์กฐ๊ฑด๋ถ€ ์š”์ฒญ ํ—ค๋”

    1. Last Modified & If-Modified-Since


    Last Modified : ๋ฐ์ดํ„ฐ๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆ˜์ •๋œ ์‹œ๊ฐ„์ •๋ณด๋ฅผ ํ—ค๋”์— ํฌํ•จ
    If-Modified-Since : ์บ์‹œ ์œ ํšจ์‹œ๊ฐ„ ์ดˆ๊ณผ๋˜๋”๋ผ๋„ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ

    2. ETag & If-None-Match

    3. ํ”„๋ก์‹œ ์บ์‹œ

    ํ•œ๊ตญ์— ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ํŠน์ • ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์ธ๋ฐ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์˜ ์› ์„œ๋ฒ„๊ฐ€ ๋ฏธ๊ตญ์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •(ex-youtube)

    ํด๋ผ์ด์–ธํŠธ์™€ ์› ์„œ๋ฒ„ ์‚ฌ์ด์— ์œ„์น˜ํ•œ ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„๋ฅผ ๋„์ž…
    private ์บ์‹œ : ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ์บ์‹œํ”„๋ก์‹œ ์บ์‹œ
    public ์บ์‹œ : ์„œ๋ฒ„์˜ ์บ์‹œ

    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์บ์‹œ๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์•„๋„ ์ž„์˜๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์บ์‹œ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ


     

    ๋ฐ˜์‘ํ˜•
Designed by LEO.