Bibi's DevLog ๐ค๐
[TIL-Codesquad] HTTP - Request Message, Response Message ๋ณธ๋ฌธ
[210202]
์ค๋์ ์์ ์ ๋ฃ๊ณ ๋ฏธ์ ์ ๋ง๋ฌด๋ฆฌํด์ผ ํ๋ ๋ .
์น์ ํ์ง๋ง ์ฌ์ ํ ์๋ฏ๋ง๋ฏํ ๋ง์คํฐJK์ ๋คํธ์ํฌ ๊ฐ์๋ฅผ ๋ฃ๊ณ ,
์ด์ ๊ณต๋ถํ ๋ด์ฉ์ ๊ฐ์ง๊ณ ๋ฏธ์ ์ฝ๋๋ฅผ ์กฐ๊ธ ์ง ๋ณด์๋ค.์ฌ์ ํ ๋ชจ๋ฅด๋ ๋ด์ฉ์ด ์์ด (HTTP request-response) ๊ทธ ๋ถ๋ถ์ ์ถ๊ฐํ์ต ํ๊ธฐ๋ก ํ๋ค.
TIL
HTTP ์๊ฐ
ํด๋ผ์ด์ธํธ์ ์๋ฒ
ํด๋ผ์ด์ธํธ client
: ์๋ฒ์๊ฒ ์์ฒญ request ํ๋ ์ปดํจํฐ.- ๋ฌด์์ ์์ฒญํ๋๊ฐ? ์นํ์ด์ง์ ์ปจํ
์ธ contents.
HTML, CSS, JS, img ๋ฑ๋ฑ
- ๋ฌด์์ ์์ฒญํ๋๊ฐ? ์นํ์ด์ง์ ์ปจํ
์ธ contents.
์๋ฒ server
: ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ ์๋ต response ํ๋ ์ปดํจํฐ.
HTTP : HyperText Transfer Protocol
: ํด๋ผ์ด์ธํธ-์๋ฒ ๊ฐ request์ response๋ฅผ ํ๊ณ , ์ปจํ ์ธ ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์์ง์ ๋ํ ์ฝ์.
HTTP๋ ํ์ดํผํ ์คํธ๊ฐ ๋ค๋๋ ๋๋ก๋ผ๊ณ ํ ์ ์๋ค.
- request๋ฅผ ์ํ ๋ฉ์์ง,
- response๋ฅผ ์ํ ๋ฉ์์ง ๊ฐ ์๋ค.
*๊ตฌ๊ธ ํฌ๋กฌ - ๊ฐ๋ฐ์๋๊ตฌ - Networkํญ์ ๋ค์ด๊ฐ ๊ฐ ํ์ผ์ ํด๋ฆญํ๋ฉด HTTP์์ฒญ ๋ด์ญ์ ํ์ธํ ์ ์๋ค.
์น๋ธ๋ผ์ฐ์ , ์น์๋ฒ
์น๋ธ๋ผ์ฐ์ ๋ ์ฌ์ฉ์๋ฅผ ๋์ ํด,
์๋ฒ์ ์์์ ์์ฒญํ๋ฉฐ HTTP Request Header๋ฅผ ๋ง๋ค์ด ๋ณด๋ด๊ณ ,
์น์๋ฒ๋ก๋ถํฐ ์์ฒญํ ์์๊ณผ HTTP Response Header๋ฅผ ๋ฐ์์ ํ๋ฉด์ ๊ทธ๋ ค์ฃผ๋ ํ๋ก๊ทธ๋จ์ด๋ผ๊ณ ํ ์ ์๋ค.์น์๋ฒ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญํ ์์๊ณผ HTTP Response Header๋ฅผ ๋ง๋ค์ด ๋ณด๋ด์ฃผ๋ ํ๋ก๊ทธ๋จ์ด๋ผ๊ณ ํ ์ ์๋ค.
*์๋ ๊ฐ์ ๋ด์ฉ์ ์ํ์ฝ๋ฉ์์, ์ฒจ๋ถ ์ด๋ฏธ์ง๋ค์ ์ฌ๊ธฐ์์ ์ฐธ์กฐํด ์์ต๋๋ค.
HTTP-3 Request Message
HTTP Request Message ์์
HTTP Request Message ๋ ์์ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์๋ค.
- Request Line
: Request Message์ ๋งจ ์ฒซ ์ค์ ํด๋นํจ. - Request Headers
: Request Line ๊ณผ Request Message Body ์ฌ์ด ๋ถ๋ถ์ ํด๋นํจ.
(Request Headers์ Request Body ์ฌ์ด์๋ ํ ์ค์ด ๋์์ ธ ๊ตฌ๋ถ๋์ด ์๋ค) - Request Message Header
: Request Line๊ณผ Request Headers๋ฅผ ๋ฌถ์ด ๋ถ๋ฅด๋ ๋ง. - Request Body (๋๋ ํ์ด๋ก๋)
: ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ ์ ์๋ฒ ์ชฝ์ผ๋ก ์ ์กํด์ผ ํ ์ ๋ณด๊ฐ ์์ ๋, Request Body์ ๋ฃ์ด์ ๋ณด๋ธ๋ค.
Request Line
GET /doc/test.html HTTP/1.1
GET
์น์๋ฒ-์น๋ธ๋ผ์ฐ์ ๊ฐ์ ํต์ ๋ฐฉ์์ ๋ํ๋.
GET์ ๋ฐ์ดํฐ๋ฅผ ์น์๋ฒ๋ก๋ถํฐ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉํ๋ ๋ฐฉ์./doc/test.html
์น๋ธ๋ผ์ฐ์ ๊ฐ ์น์๋ฒ์๊ฒ ์์ฒญํ๋ ์ ๋ณด๊ฐ ๋ฌด์์ธ์ง๋ฅผ ๋ํ๋.HTTP/1.1
์น๋ธ๋ผ์ฐ์ ๊ฐ ํ์ฌ ์ฌ์ฉํ๊ณ ์๊ฑฐ๋ ์ฌ์ฉํ ์ ์๋ HTTP์ ๋ฒ์ ์ ๋ํ๋.
(์น์๋ฒ๊ฐ ํด๋น HTTP๋ฒ์ ์ ๊ธฐ์ค์ผ๋ก ์์์ ๋ณด๋ด์ฃผ๋๋ก ํจ.)
Request Headers
Host: www.test101.com
Accept: image/gif, image/jpeg, */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0
Content-Length: 35
...
HOST
(ํ์)HOST : ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋ ๊ฐ ์ปดํจํฐ๋ฅผ ์๋ณํ๋ ์ด๋ฆ.
์์ฒญํ๋ ์น์ฌ์ดํธ ์ฃผ์ + ํฌํธ๋ฒํธ์ ํด๋นํจ. (ํฌํธ๋ฒํธ๊ฐ ์๋ ๊ฒฝ์ฐ๋ ๊ธฐ๋ณธํฌํธ๋ผ์ ์๋ต๋ ๊ฒ)
ํ๋์ ์น์๋ฒ๊ฐ ์ฌ๋ฌ ๋๋ฉ์ธ์ ์๋น์คํ ๋, ์น์๋ฒ๋ HOST๋ฅผ ๊ธฐ์ค์ผ๋ก ์์์ ๋ณด๋ด์ค๋ค.User-Agent
== ์น๋ธ๋ผ์ฐ์ . (์น๋ธ๋ผ์ฐ์ ๋ฅผ ๋ํ๋ด๋ ๋ค๋ฅธ ๋ง์ด User-Agent์ด๋ค)
์ฆ ์์ฒญํ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ค ์น๋ธ๋ผ์ฐ์ ์ธ์ง, ์ด๋ค OS์ธ์ง ๋ํ๋ ์๋ค.Accept-Encoding
์น์๋ฒ๋ก๋ถํฐ ์๋ต๋ฐ์ ๋ฐ์ดํฐ์ ์์ด ๋ง์ ๋ ์์ถํด์ ์ ์กํ๋ฉฐ, ์น๋ธ๋ผ์ฐ์ ๋ ์์ถ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ํ์ด์ ์ฌ์ฉํ๋ค. (๊ทธ๋์ผ ๋คํธ์ํฌ ์์์ ์๋ ์ ์๊ธฐ ๋๋ฌธ)
์ด ๋ ํด๋น ์น๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ํ๋ ์์ถ๋ฐฉ์์ ๋ํ๋.If-Modified-Since
์น์๋ฒ์๊ฒ ์์ฒญํ๋ ํ์ผ์ด ์ด์ ์ ์น๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญํ ์ ์ด ์๋ ํ์ผ์ด๋ผ๋ฉด,
์น๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ์ง๊ณ ์๋ ํ์ผ์ ์ต์ข ์์ ๋ ์ง(๋ง์ง๋ง์ผ๋ก ์น์๋ฒ๋ก๋ถํฐ ๋ค์ด๋ก๋๋ฐ์ ๋ ์ง)๋ฅผ ํจ๊ป ๋ณด๋ด๋ฉฐ ์์ฒญํจ.
์น์๋ฒ๋ ์์ฒญํ ํ์ผ์ ์ต์ข ์์ ๋ ์ง๋ฅผ ๋ณด๊ณ ,
์น๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ์ง ํ์ผ์ด ์ด๋ฏธ ์ต์ ์ด๋ผ๋ฉด ์ ์กํ์ง ์์.
์น๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ์ง ํ์ผ๋ณด๋ค ์น์๋ฒ ์์ ์ด ๊ฐ์ง ํ์ผ์ด ์ต์ ์ด๋ผ๋ฉด ์ต์ ํ์ผ์ ์ ์กํด ์ค.
-> ๊ฐ์ ํ์ด์ง์ ์์ฃผ ๋ฐฉ๋ฌธํ๋ ๊ฒฝ์ฐ, ๊ฐ์ ํ์ผ์ ๋งค๋ฒ ์์ฒญํ์ง ์์๋ ๋์ด ํจ์จ์ฑ๊ณผ ์๋ต์๋๋ฅผ ๋์ผ ์ ์๋ค.
HTTP-4 Response Message
HTTP Response Format
Status(์ํ) ๋๋ Status Line
์๋ฒ๊ฐ ์๋ตํ์ ๋ ์ ์ ์๋ต์ธ์ง / ๋น์ ์ ์๋ต์ธ์ง,
๋น์ ์ ์๋ต์ด๋ฉด ์ด๋ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋์ง ์๋ ค์ฃผ๋ ์ ๋ณด์.version
: http ๋ฒ์ ์ ๋ํ ์ ๋ณดstatus code
: ์๋ฒ์ ์๋ต ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ ์ฝ๋1xx
: Informational
100๋ฒ๋ ์ฝ๋๋ ์ด๋ค ์ ๋ณด๋ฅผ ์๋ฏธํจ.2xx
: Successes
200๋ฒ๋ ์ฝ๋๋ ์๋ฒ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ตํ์์ ์๋ฏธํจ.3xx
: Redirection
300๋ฒ๋ ์ฝ๋๋ ์๋ฒ๊ฐ ์์ฒญ์ ๋ฆฌ๋ค์ด๋ ์ ํ์์ ์๋ฏธํจ.4xx
: Client Error
400๋ฒ๋ ์ฝ๋๋ ํด๋ผ์ด์ธํธ ์๋ฌ๋ฅผ ์๋ฏธํจ.
*404 Not Found
: ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ์ ๋.5xx
: Server Error
500๋ฒ๋ ์ฝ๋๋ ์๋ฒ ์ธก ์๋ฌ๋ฅผ ์๋ฏธํจ.
*500 Internal Server Error
: ์๋ฒ ๋ด๋ถ์ ์ธ ๋ฌธ์ ๋ก ์๋ตํ ์ ์์ ๋.
phrase
:status code
๋ฅผ ์ธ๊ฐ์ด ์ดํดํ ์ ์๊ฒ ํ์ด ์ด ๋ด์ฉ
Response Headers
*1.Status Line๊ณผ 2.Response Headers๋ฅผ ๋ฌถ์ด Response Message Header๋ผ๊ณ ํ๋ค.
Response Message Body (๋๋ ํ์ด๋ก๋)
์๋ฒ๊ฐ ์๋ตํด ์ฃผ๋ ์ปจํ ์ธ ๊ฐ ๋ด๊ธด ์ค์ ๋ด์ฉ์ ํด๋นํจ.
(2.Response Headers์ ํ ์ค ๋์ด์ ธ ์๋ค)
HTTP Response Message ์์
Status Line
HTTP/1.1
: ํด๋น ๋ฒ์ ์ http๋ฅผ ์ฌ์ฉํ๊ณ ์์์ ๋ํ๋200
:status code
์ ํด๋นํจ. (HTTP Status Codes๋ก ๊ฒ์ํ๋ฉด ์๋ฏธ๋ฅผ ์ ์ ์์)
โ
200
์ ์๋ฒ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ตํ์์ ์๋ฏธํ๋ ์ฝ๋.OK
:phrase
์ ํด๋นํจ.
Response Headers
Content-Type
: ์น์๋ฒ๊ฐ ์๋ตํ ์ปจํ ์ธ ์ ๋ํ ์ ๋ณด๋ฅผ ๋ํ๋.
์น๋ธ๋ผ์ฐ์ ๋ ์ด ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ฉด์ ํด๋น ์๋ต์ ์ด๋ป๊ฒ ๋ํ๋ผ์ง ๊ฒฐ์ ํจ.Content-Type : text/html
์ ํด๋น ์๋ต์ด HTML๋ก ๋ textํ์ผ์์ ์๋ฏธ.Content-Length
: ์น์๋ฒ๊ฐ ์๋ตํ ์ปจํ ์ธ ์ ์ ์ฒด ๊ธธ์ด๋ฅผ ๋ํ๋. (๋จ์๋ byte)Content-Encoding
: ํด๋น ์ปจํ ์ธ ๊ฐ ์์ถ๋ ๋ฐฉ์์ ๋ํ๋.
์น๋ธ๋ผ์ฐ์ ๋ ์ด ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ปจํ ์ธ ์์ถ์ ํด์ ํด ํ๋ฉด์ ๋ํ๋.Last-Modified
: ํด๋น ์ปจํ ์ธ ๊ฐ ๋ง์ง๋ง์ผ๋ก ์์ ๋ ๋ ์ง๋ฅผ ๋ํ๋
+ HTTP์ ๋คํธ์ํฌ์ ๋ํด ๊ณต๋ถํด ๋ณผ ๋งํ ์ฃผ์ ๋ค
https
(SSL
), cache
, cookie
์web storage
, proxy
(์ค๊ฐ ์๋ฒ), ๋คํธ์ํฌ ๋ชจ๋ํฐ๋ง ๋๊ตฌ(ํฌ๋กฌ ๊ฐ๋ฐ์๋๊ตฌ ๋๋ wireshark)