ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [HTTP] ๋น„ ์—ฐ๊ฒฐ์„ฑ(connectionless), HTTP ๋ฉ”์„ธ์ง€
    HTTP 2023. 7. 10. 04:33
    728x90

    ๐Ÿ”ท๋น„ ์—ฐ๊ฒฐ์„ฑ (connectionless)

     

    ๐Ÿ”ฝ ์ด๋ฏธ์ง€ ์„ค๋ช… ๐Ÿ”ฝ

    ๋”๋ณด๊ธฐ

    TCP๋‚˜ IP๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•œ๋‹ค.

    ํด๋ผ์ด์–ธํŠธ 1-> 2 -> 3์œผ๋กœ ์ง„ํ–‰๋  ๋•Œ ์„œ๋ฒ„๋Š” ์—ฐ๊ฒฐ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์›์ด ์†Œ๋ชจ๋จ

    = ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋†€๊ณ ์žˆ์–ด๋„ ๊ณ„์† ์—ฐ๊ฒฐํ•˜๊ณ  ์žˆ์Œ

     

     

     

     

    ์ž‘์—…์ด ๋๋‚˜๋ฉด ์—ฐ๊ฒฐ์„ ๋Š์–ด์„œ ์ตœ์†Œํ•œ์˜ ์ž์›์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋จ

     

    TCP๋‚˜ IP๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•œ๋‹ค.

    ์„œ๋ฒ„์—ฐ๊ฒฐ์ด ์—ฐ๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ๊ฐ์˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ

    ์„œ๋ฒ„๋Š” ์—ฐ๊ฒฐ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์›์ด ์†Œ๋ชจ๋œ๋‹ค.

    = ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋†€๊ณ ์žˆ์–ด๋„ ๊ณ„์† ์—ฐ๊ฒฐํ•˜๊ณ  ์žˆ์Œ

     

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

     

     


     

    ๐Ÿ”ธ ๋น„ ์—ฐ๊ฒฐ์„ฑ

    • HTTP๋Š” ๊ธฐ๋ณธ์ด ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋ธ
    • ์ผ๋ฐ˜์ ์œผ๋กœ ์ดˆ ๋‹จ์œ„์˜ ์ดํ•˜์˜ ๋น ๋ฅธ ์†๋„๋กœ ์‘๋‹ต
    • 1์‹œ๊ฐ„ ๋™์•ˆ ์ˆ˜์ฒœ๋ช…์ด ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์‹ค์ œ ์„œ๋ฒ„์—์„œ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ์š”์ฒญ์€ ์ˆ˜์‹ญ๊ฐœ ์ดํ•˜๋กœ ๋งค์šฐ ์ž‘์Œ
    • ์˜ˆ) ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ณ„์† ์—ฐ์†ํ•ด์„œ ๊ฒ€์ƒ‰ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์ง€๋Š” ์•Š๋Š”๋‹ค.

    • ์„œ๋ฒ„ ์ž์›์„ ๋งค์šฐ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

     

     

     

    ๐Ÿ”ธ๋น„ ์—ฐ๊ฒฐ์„ฑ ํ•œ๊ณ„์™€ ๊ทน๋ณต

    • TCP/IP ์—ฐ๊ฒฐ์„ ์ƒˆ๋กœ ๋งบ์–ด์•ผ ํ•จ
    ๐Ÿ‘‰ 3 way handshake ์‹œ๊ฐ„ ์ถ”๊ฐ€๋จ

    • ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์‚ฌ์ดํŠธ๋ฅผ ์š”์ฒญํ•˜๋ฉด HTML ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, css, ์ถ”๊ฐ€ ์ด๋ฏธ์ง€ ๋“ฑ๋“ฑ ์ˆ˜ ๋งŽ์€ ์ž์›์ด ํ•จ๊ป˜ ๋‹ค์šด๋กœ๋“œ ํ•จ
    ๐Ÿ‘‰ ๊ฐ๊ฐ ์ •๋ณด๋ฅผ ํ•˜๋‚˜์”ฉ ๋‹ค์šด๋ฐ›๊ณ  ์„œ๋ฒ„๋ฅผ ์žฌ์—ฐ๊ฒฐํ•˜๊ธฐ์—” ๋‚ญ๋น„์ž„
    ๐Ÿ‘‰ HTTP ์ง€์† ์—ฐ๊ฒฐ(Persistent Connections)๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ

    • HTTP/2, HTTP/3์—์„œ ๋” ๋งŽ์€ ์ตœ์ ํ™”

     

     

    ๐Ÿ”ป HTTP ์ดˆ๊ธฐ ์—ฐ๊ฒฐ๋‚ญ๋น„์™€ ํ˜„์žฌ ์—ฐ๊ฒฐ์ƒํƒœ

    ๋”๋ณด๊ธฐ
    ์‹คํ–‰์†๋„๋Š” ์˜ˆ์‹œ์ž„

     

     

     

     

     

     



    ๐Ÿ”ธ์Šคํ…Œ์ด์Šค๋ฆฌ์Šค๋ฅผ ๊ธฐ์–ตํ•˜์ž

    - ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž๋“ค์ด ์–ด๋ ค์›Œํ•˜๋Š” ์—…๋ฌด

    • ๊ฐ™์€ ์‹œ๊ฐ„์— ๋”ฑ ๋งž์ถ”์–ด ๋ฐœ์ƒํ•˜๋Š” ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ
    • ์˜ˆ) ์„ ์ฐฉ์ˆœ ์ด๋ฒคํŠธ, ๋ช…์ ˆ KTX ์˜ˆ์•ฝ, ํ•™๊ณผ ์ˆ˜์—… ๋“ฑ๋ก
    • ์˜ˆ) ์ €๋… 6:00 ์„ ์ฐฉ์ˆœ 1000๋ช… ์น˜ํ‚จ ํ• ์ธ ์ด๋ฒคํŠธ -> ์ˆ˜๋งŒ๋ช… ๋™์‹œ ์š”์ฒญ

    ๐Ÿ‘‰ ์–ด๋–ป๊ฒŒ๋“  ๋จธ๋ฆฌ๋ฅผ ์ฅ์–ด ์งœ์„œ ์ตœ๋Œ€ํ•œ ์Šคํ…Œ์ด์Šค๋ฆฌ์Šคํ•œ ์„ค๊ณ„๋ฅผ ๋งŒ๋“œ๋Š”๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค!

     


    ๐Ÿ”ธHTTP ๋ฉ”์„ธ์ง€

     

     

    ์˜ˆ) HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€
    GET /search?q=hello&hl=ko HTTP/1.1 Host: www.google.com 

    ์˜ˆ) HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€
    HTTP/1.1 200 OK
    Content-Type: text/html;charset=UTF-8
    Content-Length: 3423
    <html>
     <body>...</body>
    </html>

    HTTP๋Š” ์š”์ฒญ๋ฉ”์„ธ์ง€์™€ ์‘๋‹ต๋ฉ”์„ธ์ง€์˜ ๊ตฌ์กฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค.

     

     



    ๐Ÿ”ป ์‹œ์ž‘ ๋ผ์ธ

    1) ์š”์ฒญ ๋ฉ”์‹œ์ง€ =  request-line /
    • start-line = request-line / status-line
    • request-line = method SP(๊ณต๋ฐฑ) request-target SP HTTP-version CRLF(์—”ํ„ฐ)
    • HTTP ๋ฉ”์„œ๋“œ (GET: ์กฐํšŒ)
    • ์š”์ฒญ ๋Œ€์ƒ (/search?q=hello&hl=ko)
    • HTTP Version

     

    2) ์š”์ฒญ ๋ฉ”์‹œ์ง€ - HTTP ๋ฉ”์„œ๋“œ
    • ์ข…๋ฅ˜: GET, POST, PUT, DELETE...
    • ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋™์ž‘ ์ง€์ •
    • GET: ๋ฆฌ์†Œ์Šค ์กฐํšŒ
    • POST: ์š”์ฒญ ๋‚ด์—ญ ์ฒ˜๋ฆฌ

     

    3) ์š”์ฒญ ๋ฉ”์‹œ์ง€ - ์š”์ฒญ ๋Œ€์ƒ
    • absolute-path[?query] (์ ˆ๋Œ€๊ฒฝ๋กœ[?์ฟผ๋ฆฌ])
    • ์ ˆ๋Œ€๊ฒฝ๋กœ= "/" ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ๋กœ
    • ์ฐธ๊ณ : *, http://...?x=y ์™€ ๊ฐ™์ด ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๊ฒฝ๋กœ์ง€์ • ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค

     


    4) ์‘๋‹ต ๋ฉ”์‹œ์ง€ =  status-line
    • start-line = request-line / status-line
    • status-line = HTTP-version SP status-code SP reason-phrase CRLF


    < HTTP ์ƒํƒœ ์ฝ”๋“œ> : ์š”์ฒญ ์„ฑ๊ณต, ์‹คํŒจ๋ฅผ ๋‚˜ํƒ€๋ƒ„
    • 200: ์„ฑ๊ณต
    • 400: ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์˜ค๋ฅ˜
    • 500: ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜
    • ์ด์œ  ๋ฌธ๊ตฌ: ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์งง์€ ์ƒํƒœ ์ฝ”๋“œ ์„ค๋ช… ๊ธ€

     

     


    ๐Ÿ”ธ HTTP ํ—ค๋”

    • HTTP ์ „์†ก์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ถ€๊ฐ€์ •๋ณด
    (๋ฉ”์„ธ์ง€ body๋นผ๊ณ  ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ๋‹ค ๋“ค์–ด์žˆ๋‹ค๊ณ  ๋ณด๋ฉด ๋จ)
    • ์˜ˆ) ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์˜ ๋‚ด์šฉ, ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์˜ ํฌ๊ธฐ, ์••์ถ•, ์ธ์ฆ, ์š”์ฒญ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €) ์ •๋ณด, 
    ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •๋ณด, ์บ์‹œ ๊ด€๋ฆฌ ์ •๋ณด...
    • ํ‘œ์ค€ ํ—ค๋”๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์Œ
    • https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
    • ํ•„์š”์‹œ ์ž„์˜์˜ ํ—ค๋” ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
    • helloworld: hihi

     

     

     

    ๐Ÿ”ธ HTTP ๋ฉ”์„ธ์ง€ ๋ฐ”๋””

    • ์‹ค์ œ ์ „์†กํ•  ๋ฐ์ดํ„ฐ
    • HTML ๋ฌธ์„œ, ์ด๋ฏธ์ง€, ์˜์ƒ, JSON ๋“ฑ๋“ฑ byte๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ€๋Šฅ

     

    HTTP๋Š” ๋งค์šฐ ๋‹จ์ˆœํ•ด์„œ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ธฐ์ˆ ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

     

     

     

     

    <์ •๋ฆฌ>
    • HTTP ๋ฉ”์‹œ์ง€์— ๋ชจ๋“  ๊ฒƒ์„ ์ „์†กํ•œ๋‹ค
    • HTTP ์—ญ์‚ฌ HTTP/1.1์„ ๊ธฐ์ค€์œผ๋กœ ํ•™์Šตํ•˜๋ฉด ๋œ๋‹ค.
    •ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ๊ตฌ์กฐ
    • ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ(์Šคํ…Œ์ด์Šค๋ฆฌ์Šค)
    • HTTP ๋ฉ”์‹œ์ง€(์‹œ์ž‘๋ผ์ธ, ํ—ค๋”, ๋ฐ”๋””)
    • ๋‹จ์ˆœํ•จ, ํ™•์žฅ ๊ฐ€๋Šฅ

     

     

    728x90
Designed by Tistory.