๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ผ ๋๋ 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 |