HTTP
HTTP?
HyperText Transfer Protocol์ ์ฝ์์ด๊ณ , protocol์ด ๋ค์ด๊ฐ๋ค๋ ์๋ฏธ๋ ์ฝ์, ๊ท์ฝ์ ์๋ฏธํ๋ค.
๊ทธ๋ฆฌ๊ณ ํฌ๊ฒ request์ response ์ผ๋ก ์ฃผ๊ณ ๋ฐ๋๋ค.
๊ทธ๋ฆฌ๊ณ OSI 7 layer์์ 7์ธต์ธ application layer์์ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ์ด๋ค.
์ธํฐ๋ท์์๋ TCP ์ผ๋ก ์ธํฐ๋ท์ ๊ฑฐ์น๋ค.
OSI 7 layer
(Physical)๋ฌผ๋ฆฌ ๊ณ์ธต
(DataLink)๋ฐ์ดํฐ๋งํฌ ๊ณ์ธต
(Network)๋คํธ์ํฌ ๊ณ์ธต
(Transfer)์ ์ก ๊ณ์ธต
(Session)์ธ์ ๊ณ์ธต
(Presentation)ํํ ๊ณ์ธต
(Application)์์ฉ ๊ณ์ธต
์ด๋ ๊ฒ ๊ตฌ์ฑ๋์ด ์๋ค.
๋ค์ HTTP์ ํน์ง์ผ๋ก ๋์๊ฐ์, HTTP๋ ๊ธฐ๋ณธ์ ์ผ๋ก stateless ๋ฅผ ์ ์งํ๊ณ ์์ผ๋ฉฐ connectless ๋ฐฉ์์ผ๋ก ์๋ํ๋ค.
connectless๋ ์๋ฒ์ ์ฐ๊ฒฐ์ ์์ฒญํ๊ณ ์์ฒญ์ ๋ํ ์๋ต์ ๋ฐ์ผ๋ฉด ์ฐ๊ฒฐ์ ๋์ด๋ฒ๋ฆฐ๋ค๋ ๊ฒ์ด๋ค.
stateless๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํต์ ์, ์์ ์๋ ์ด์ ์ ์์ฒญ์ ๊ธฐ์ต(์ ์ง)ํ์ง ์๋ค๋ ๊ฒ์ด๋ค.
์ฆ, ๊ฐ๊ฐ์ ํต์ ์ด ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ์ด์ ์ ํต์ ๊ณผ๋ ์๋ฌด๋ฐ ์๊ด์ด ์๋ค๊ณ ๋ณผ ์ ์๋ค.
์ด๋ฌํ ํน์ง์ผ๋ก ๊ฐ์ง ์ ์๋ ์ฅ์ ์
์์ ์ฑ : ๋ถ๋ถ์ ์คํจ์ ๋ํด์ ๋ณต๊ตฌํ๋ ๊ฒ์ด ์ฌ์์ง๋ค
ํ์ฅ์ฑ : ์ธ์ ์ํ๋ฅผ ์ ์งํ ํ์๊ฐ ์์ด์ง๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ถ๋ด์ด ์ค๋ค
์ด๋ฌํ stateless์ ๋ณด์ํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฟ ํค / ์ธ์ ์ด๋ค.
HTTP ๊ตฌ์ฑ
Request = start line + headers + body
start line = http method + request target + http version
GET /login HTTP/1.1 โ ์ด๋ ๊ฒ ์๊น
http method : ์ฃผ์ด์ง ๋ฆฌ์์ค์ ์ํํ๊ธธ ์ํ๋ ํ๋์ ์๋ฏธํ๊ณ , ์ข ๋ฅ๋ก๋ GET, POST, PUT, DELETE ๋ฑ์ด ์๋ค.
request target : ํด๋น request๊ฐ ์ ์ก๋ url
headers
ํด๋น request์ ๋ํ ์ถ๊ฐ ์ ๋ณด๊ฐ ๋ค์ด์์, key : value ํํ๋ก ๊ตฌ์ฑ๋์ด ์์
body
ํด๋น request์ ์ค์ ๋ด์ฉ์ด ๋ด๊ฒจ์์
Response = status line + headers + body
status line = http version + status code + status text
HTTP/1.1 404 Not Found โ ์ด๋ ๊ฒ ์๊น
status code : ์๋ต ์ํ๋ฅผ ๋ํ๋ด๋ ์ฝ๋๋ก, ๋๋์๋ฉด
1xx : ์ ๋ณด / ์์ฒญ์ ๋ฐ์์ผ๋ฉฐ, ํ๋ก์ธ์ค๋ฅผ ๊ณ์ํ๋ค.
ex) 100(continue) : ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ๋ณด๋ธ ์์ฒญ์ ๋ฌธ์ ๊ฐ ์์ผ๋ ๋ค์ ์์ฒญ์ ์ด์ด์ ๋ณด๋ด๋ ๋๋ค๋ ์๋ฏธ
2xx : ์ฑ๊ณต / ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ๋ฐ์๋ค.
3xx : ๋ฆฌ๋ค์ด๋ ์ / ์์ฒญ ์๋ฃ๋ฅผ ์ํด ์ถ๊ฐ ์์ ์กฐ์น๊ฐ ํ์ํ๋ค.
4xx : ํด๋ผ์ด์ธํธ ์ค๋ฅ
5xx : ์๋ฒ ์ค๋ฅ
headers : ์๋ฒ์ ๋์ผํ ๊ฐ๋
body : ์๋ฒ์๋ ๋ค๋ฅด๊ฒ ๋น์ด์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค
HTTP ContentType
Application/x-www-form-urlencoded : HTML Form ํํ
Application/json : JSON ํํ ๊ฐ
multipart/form-data : ํ์ผ ์ฒจ๋ถ
text/* : ๋จ์ html, css, javascript ํ์ผ
HTTP ํต์ ์๋ฆฌ
๊ฐ ๊ธฐ๊ธฐ์๋ ์ธํฐ๋ท์์ ์๋ก๋ฅผ ๊ตฌ๋ณํ๊ธฐ ์ํ ๊ณ ์ ์ฃผ์๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๊ณ ์ ์ฃผ์๋ฅผ IP์ฃผ์๋ผ๊ณ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด IP์ฃผ์๋ฅผ ๋งค๋ฒ ๊ธฐ์ตํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ๊ฒ์ด ๋๋ฉ์ธ ์ด๋ฆ์ด๋ค.
๋๋ฉ์ธ ์ด๋ฆ๋ ์ซ์์ ์กฐํฉ์ผ๋ก ๋์ด์๋ IP์ฃผ์๋ฅผ ์๊ธฐํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ฐฉ์์ผ๋ก ํ์ด๋ ๊ฒ์ด๋ค.
๋๋ฉ์ธ ์ด๋ฆ์ ์ ๋ ฅํ๋ฉด, ํด๋น ์ด๋ฆ์ ํด๋นํ๋ IP์ฃผ์๋ฅผ DNS(Domain Name System)์์ ์ฐพ๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ HTTP๋ก ์ฐ๊ฒฐํ๊ฒ ๋๋ฉด TCP์์์ ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ ์ฐ๊ฒฐ์ 3-way-handshake ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐํ๊ฒ ๋๋ค.
3-way-handshake ๋ฐฉ์์ ์๋ก๊ฐ ์ค๋น๋์๋ค๋ ๊ฒ์ ํ์ธ ๊ณผ์ ์ ๊ฑฐ์น๊ณ ํต์ ์ ์งํํ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค.
TCP๋ ์ฐ๊ฒฐ ์งํฅ ํ๋กํ ์ฝ์ด๊ธฐ ๋๋ฌธ์ ์๋ฐฉํฅ์ด ๋ชจ๋ ์ฐ๊ฒฐ๋๊ณ ๋์ ํต์ ์ ์์ํ๋ ๋ฐฉ์์ด๋ค.
์ฐ๊ฒฐ์ ์ข ๋ฃ๋ 4-way-handshake ๋ฐฉ์์ ์ฌ์ฉํ๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ ํด๋ผ์ด์ธํธ์์ ๋ณด๋๋ request์ ์๋ฒ์๊ฒ ๋ณด๋ด๊ฒ ๋๊ณ
์๋ฒ์์ ์ฒ๋ฆฌํ๊ณ
ํด๋ผ์ด์ธํธ์๊ฒ response์ ๋ณด๋ด์ค๋ค.
Last updated
Was this helpful?