HTTP ํŒจํ‚ท ๊ตฌ์กฐ, ์š”์ฒญ ํ—ค๋”/๋ฐ”๋””

2025. 9. 17. 18:36ยท๐ŸŒ WEB
728x90

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋Š” HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€(ํŒจํ‚ท) ํ˜•ํƒœ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๊ธฐ์ค€์œผ๋กœ ๋œฏ์–ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.


1. ํŒจํ‚ท ๊ตฌ์กฐ (๋„คํŠธ์›Œํฌ ๊ณ„์ธต ๊ด€์ )

  • L2 (๋ฐ์ดํ„ฐ๋งํฌ ๊ณ„์ธต): Ethernet ํ—ค๋” (MAC ์ฃผ์†Œ, CRC ๋“ฑ)
  • L3 (๋„คํŠธ์›Œํฌ ๊ณ„์ธต): IP ํ—ค๋” (์ถœ๋ฐœ์ง€ IP, ๋ชฉ์ ์ง€ IP ๋“ฑ)
  • L4 (์ „์†ก ๊ณ„์ธต): TCP ํ—ค๋” (์ถœ๋ฐœ์ง€ ํฌํŠธ, ๋ชฉ์ ์ง€ ํฌํŠธ, ์ˆœ๋ฒˆ, ACK ๋“ฑ)
  • L7 (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต): HTTP ๋ฉ”์‹œ์ง€ (์‹ค์ œ ์š”์ฒญ)

์šฐ๋ฆฌ๊ฐ€ ๋ณดํ†ต "HTTP ์š”์ฒญ ํŒจํ‚ท"์ด๋ผ ๋งํ•  ๋•Œ๋Š” L7 HTTP ๋ฉ”์‹œ์ง€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.


2. HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€ ๊ตฌ์„ฑ

HTTP ์š”์ฒญ์€ ํฌ๊ฒŒ Request Line, Headers, Body ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

(1) Request Line

GET /index.html HTTP/1.1
  • GET: ๋ฉ”์„œ๋“œ (๋™์ž‘)
  • /index.html: ์š”์ฒญ URI
  • HTTP/1.1: ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „

(2) Headers (๋ฉ”ํƒ€๋ฐ์ดํ„ฐ)

Host: www.example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
Accept: text/html,application/xhtml+xml
Accept-Language: ko-KR,ko;q=0.9
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Cookie: session_id=abc123
  • Host: ์š”์ฒญ ๋Œ€์ƒ ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ
  • User-Agent: ๋ธŒ๋ผ์šฐ์ €/OS ์ •๋ณด
  • Accept: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ์ฝ˜ํ…์ธ  ํƒ€์ž…
  • Accept-Language: ์„ ํ˜ธํ•˜๋Š” ์–ธ์–ด
  • Cookie: ๋กœ๊ทธ์ธ/์„ธ์…˜ ์ •๋ณด
  • Connection: keep-alive ์—ฌ๋ถ€

(3) Body (์„ ํƒ์ )

  • GET ์š”์ฒญ์€ ๋ณดํ†ต Body ์—†์Œ
  • POST/PUT ์š”์ฒญ์—์„œ๋Š” ๋ฐ์ดํ„ฐ ํฌํ•จ:
POST /login HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 29

username=seoyeon&password=1234

3. ์˜ˆ์‹œ: ์‹ค์ œ HTTP ์š”์ฒญ ํŒจํ‚ท (Wireshark ์บก์ฒ˜ ๋А๋‚Œ)

Frame 52: 548 bytes on wire
Ethernet II, Src: 00:1a:2b:xx:yy:zz, Dst: 11:22:33:44:55:66
Internet Protocol Version 4, Src: 192.168.0.10, Dst: 93.184.216.34
Transmission Control Protocol, Src Port: 52345, Dst Port: 80
Hypertext Transfer Protocol
    GET /index.html HTTP/1.1\r\n
    Host: example.com\r\n
    User-Agent: Mozilla/5.0 ...\r\n
    Accept: text/html\r\n
    \r\n

 

  • ํŒจํ‚ท์˜ ์ตœ์ƒ๋‹จ์€ HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€์ด๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์–ด๋–ค ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๊ณ , ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ ์š”์ฒญํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด(Headers)์™€ ํ•„์š” ์‹œ Body(๋ฐ์ดํ„ฐ)๋ฅผ ๋‹ด์Šต๋‹ˆ๋‹ค.
  • ๋„คํŠธ์›Œํฌ ๋„๊ตฌ(Wireshark, Chrome ๊ฐœ๋ฐœ์ž ๋„๊ตฌ → Network ํƒญ)๋กœ ์ง์ ‘ ์บก์ฒ˜ํ•ด์„œ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿงฉ HTTP ํ—ค๋”์˜ ์ฃผ์š” ๋ถ„๋ฅ˜

https://developer.mozilla.org/ko/docs/Glossary/HTTP_header

 

MDN Web Docs ์— ๋”ฐ๋ฅด๋ฉด HTTP ํ—ค๋”๋Š” ํฌ๊ฒŒ ๋„ค ๊ฐ€์ง€ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

  • Request Header → ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›ํ•˜๋Š” ์กฐ๊ฑด/ํ™˜๊ฒฝ ์ „๋‹ฌ
  • Response Header → ์„œ๋ฒ„์™€ ์‘๋‹ต ์ž์ฒด์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ œ๊ณต
  • Representation Header → ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ(๋ฆฌ์†Œ์Šค)์˜ ํŠน์„ฑ ์„ค๋ช…
  • Fetch Metadata Request Header → ์š”์ฒญ ์ปจํ…์ŠคํŠธ/๋ณด์•ˆ ๊ด€๋ จ ์ •๋ณด

 

 


1. Request Header (์š”์ฒญ ํ—ค๋”)

ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์ž์‹ ์˜ ํ™˜๊ฒฝ์ด๋‚˜ ์›ํ•˜๋Š” ๋ฆฌ์†Œ์Šค ์กฐ๊ฑด์„ ์„ค๋ช…ํ•˜๋Š” ํ—ค๋”์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ

  • Host: ์š”์ฒญ ๋Œ€์ƒ ์„œ๋ฒ„ ๋„๋ฉ”์ธ (์˜ˆ: Host: www.example.com)
  • User-Agent: ํด๋ผ์ด์–ธํŠธ ์ •๋ณด (๋ธŒ๋ผ์šฐ์ €, OS)
  • Accept: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ MIME ํƒ€์ž… (์˜ˆ: text/html, application/json)
  • Accept-Language: ์„ ํ˜ธ ์–ธ์–ด (์˜ˆ: ko-KR, en-US;q=0.8)
  • Authorization: ์ธ์ฆ ํ† ํฐ (์˜ˆ: Bearer <token>)
  • Cookie: ํด๋ผ์ด์–ธํŠธ ์„ธ์…˜ ์ฟ ํ‚ค

๐Ÿ‘‰ ๋ชฉ์ : ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ


2. Response Header (์‘๋‹ต ํ—ค๋”)

์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•  ๋•Œ, ์„œ๋ฒ„๋‚˜ ์‘๋‹ต ์ž์ฒด์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์Šต๋‹ˆ๋‹ค. (๋ณธ๋ฌธ์˜ ๋‚ด์šฉ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๋ถ€๊ฐ€ ์ •๋ณด)

์˜ˆ์‹œ

  • Server: ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด ์ •๋ณด (์˜ˆ: nginx/1.20.0)
  • Location: ๋ฆฌ์†Œ์Šค๊ฐ€ ์ด๋™๋œ ์ฃผ์†Œ (๋ฆฌ๋‹ค์ด๋ ‰ํŠธ)
  • Set-Cookie: ํด๋ผ์ด์–ธํŠธ์— ์ฟ ํ‚ค ์ €์žฅ ์š”์ฒญ
  • WWW-Authenticate: ์ธ์ฆ ๋ฐฉ๋ฒ• ์ง€์ • (์˜ˆ: Basic, Bearer)

๐Ÿ‘‰ ๋ชฉ์ : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ ์‘๋‹ต์„ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์›€


3. Representation Header (ํ‘œํ˜„ ํ—ค๋”, ์—”ํ‹ฐํ‹ฐ ํ—ค๋”๋ผ๊ณ ๋„ ๋ถ€๋ฆ„)

๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ(body)์˜ ์ฝ˜ํ…์ธ  ์ž์ฒด์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ๋ณธ๋ฌธ์ด ์—†์œผ๋ฉด ์ด ํ—ค๋”๋“ค๋„ ๊ฑฐ์˜ ์—†์Œ.

์˜ˆ์‹œ

  • Content-Type: ๋ณธ๋ฌธ์˜ MIME ํƒ€์ž… (์˜ˆ: text/html; charset=UTF-8)
  • Content-Length: ๋ณธ๋ฌธ ๊ธธ์ด (๋ฐ”์ดํŠธ ๋‹จ์œ„)
  • Content-Encoding: ์••์ถ• ๋ฐฉ์‹ (์˜ˆ: gzip, br)
  • Content-Language: ๋ณธ๋ฌธ์˜ ์–ธ์–ด
  • Content-Range: ์ „์ฒด ์ค‘ ์–ด๋А ๋ฒ”์œ„์ธ์ง€ (๋ถ€๋ถ„ ์‘๋‹ต)

๐Ÿ‘‰ ๋ชฉ์ : ๋ณธ๋ฌธ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ์™€ ํŠน์„ฑ์„ ์„ค๋ช…


4. Fetch Metadata Request Header (๋ณด์•ˆ ๊ด€๋ จ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ—ค๋”)

์ตœ๊ทผ์— ๋„์ž…๋œ ํ—ค๋”๋กœ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญ์˜ ๋งฅ๋ฝ(context)์„ ์„œ๋ฒ„์— ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๋ณด์•ˆ ์ •์ฑ…(CORS, CSRF ๋ฐฉ์ง€ ๋“ฑ)์—์„œ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

  • Sec-Fetch-Site: ์š”์ฒญ์ด ๊ฐ™์€ ์‚ฌ์ดํŠธ์ธ์ง€, ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ์ธ์ง€ (same-origin, cross-site)
  • Sec-Fetch-Mode: ์š”์ฒญ ๋ชจ๋“œ (navigate, cors, no-cors)
  • Sec-Fetch-User: ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐํ•œ ์š”์ฒญ์ธ์ง€ (?1)
  • Sec-Fetch-Dest: ๋ฆฌ์†Œ์Šค ๋ชฉ์  (document, image, script)

๐Ÿ‘‰ ๋ชฉ์ : ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์˜ ์ถœ์ฒ˜์™€ ๋ชฉ์ ์„ ๋ถ„์„ํ•˜์—ฌ ๋ณด์•ˆ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ํ•จ

 

 

'๐ŸŒ WEB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์›น ์‚ฌ์ดํŠธ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•  (0) 2026.01.19
HTTP Multipart/form-data ์ง์ ‘ ํŒŒ์„œ ๋งŒ๋“ค๋ฉฐ ์›๋ฆฌ ์ดํ•ดํ•˜๊ธฐ  (0) 2025.10.01
Node.js๋กœ ๊ณ ์„ฑ๋Šฅ ์›น์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ: Cluster์™€ Worker Threads  (0) 2025.09.28
HTTP ํŒจํ‚ท ๋ถ„์„ํ•˜๊ธฐ  (0) 2025.09.18
Web Server ์™€ WAS(Web Application Server)๋ž€ ?  (0) 2025.09.15
'๐ŸŒ WEB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • HTTP Multipart/form-data ์ง์ ‘ ํŒŒ์„œ ๋งŒ๋“ค๋ฉฐ ์›๋ฆฌ ์ดํ•ดํ•˜๊ธฐ
  • Node.js๋กœ ๊ณ ์„ฑ๋Šฅ ์›น์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ: Cluster์™€ Worker Threads
  • HTTP ํŒจํ‚ท ๋ถ„์„ํ•˜๊ธฐ
  • Web Server ์™€ WAS(Web Application Server)๋ž€ ?
์—ฐ์žŽ(lotus leaf)
์—ฐ์žŽ(lotus leaf)
  • ์—ฐ์žŽ(lotus leaf)
    lotus' s develog ๐Ÿƒ
    ์—ฐ์žŽ(lotus leaf)
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (79)
      • โœ๏ธ ๊ฐœ๋ฐœํšŒ๊ณ ๋ก (5)
      • ๐Ÿงฎ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (3)
      • ๐Ÿ’™ ํ”„๋ก ํŠธ์—”๋“œ(FE) (19)
        • HTML (0)
        • CSS (0)
        • Javascript (0)
        • React (0)
        • Next.js (0)
        • webpack & babel (0)
      • ๐Ÿ’ป ๋ฐฑ์—”๋“œ(BE) (2)
        • Nest.js (0)
        • Express.js (0)
        • MySQL (1)
      • โš™๏ธ ์ธํ”„๋ผ(Devops) (2)
      • ๐Ÿค– AI (1)
      • ๐ŸŒ WEB (8)
      • ๐Ÿ’ป CS (16)
        • ์ž๋ฃŒ๊ตฌ์กฐ (0)
        • ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ (1)
        • ์šด์˜์ฒด์ œ (0)
        • ์ธ๊ณต์ง€๋Šฅ (8)
        • ์›น ๋ณด์•ˆ (1)
        • ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… (6)
      • ๐Ÿ–‹๏ธ DevLog (1)
      • ๐Ÿฆพ ๋กœ๋ณดํ‹ฑ์Šค (4)
      • ๐Ÿ“— ๋„ค์ด๋ฒ„๋ถ€์ŠคํŠธ์บ ํ”„ ์›น ๋ชจ๋ฐ”์ผ (0)
      • ๐ŸŽฎ Unity(C#) (10)
      • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (4)
        • C (4)
        • C++ (0)
        • Java (0)
        • Python (0)
      • MSA (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    gaussian rbf svm
    ์ŠคํŒธ๋ถ„๋ฅ˜๊ธฐ
    ros bridge
    c++
    ๋ฆฌ์•กํŠธ
    client-streaming
    ์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต #๋„์ „ํ•™๊ธฐ์ œ
    advaned detail
    next.js12
    isaac automator
    turtlebot
    c์–ธ์–ด
    ํŒŒ์ผํŠธ๋ฆฌ
    soft margin svm
    ์ฝ”๋”ํŒจ๋“œ
    ros workspace
    AWS
    ๊ธฐ์ดˆ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ๋ฐฑ์ค€
    ์กฐํ•ฉ
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    nav2
    Devops #๋Œ€๊ทœ๋ชจํŠธ๋ž˜ํ”ฝ์ฒ˜๋ฆฌ
    deploy-aws
    C
    ์ŠคํŒธ๋ฉ”์ผ๋ถ„๋ฅ˜๊ธฐ
    hard margin svm
    C#
    auto-scaling
    ์ˆœ์—ด
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.6
์—ฐ์žŽ(lotus leaf)
HTTP ํŒจํ‚ท ๊ตฌ์กฐ, ์š”์ฒญ ํ—ค๋”/๋ฐ”๋””
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”