HTTP
HTTP๋?
HyperText Transfer Protocol์ ์ฝ์
โข
ํด๋ผ์ด์ธํธ ๋ชจ๋ธ
โฆ
ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๋ ์์ฒญ, ์์ ๊ทธ๋ฆฌ๊ณ ์น ์ค๋ธ์ ํธ ํํ์ ๋ด๋นํ๋ค.
โข
์๋ฒ ๋ชจ๋ธ
โฆ
์๋ฒ๋ ์์ฒญ์ ๋ฐ๋ฅธ ์๋ต์ ๋ณด๋ธ๋ค.
HTTP๋ stateless ํ๋ค.
์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๊ณผ๊ฑฐ์๋ต์ ๋ํ ์ ๋ณด๋ฅผ ์ ์งํ์ง ์๋๋ค.
์๋ํ๋ฉด ์๋๋ฅผ ์ ์งํ๋๊ฒ์ ๋ณต์กํ๊ธฐ ๋๋ฌธ์ด๋ค.
Non-Persistent HTTP
์๋ฒ์ชฝ์์ ํ๋์ ์ค๋ธ์ ํธ๋ง ๋ณด๋ธ ๋ค, TPC ์ปค๋ฅ์
์ ์ข
๋ฃํ๋ HTTP
HTTP์ ์์ฒญ ํ๋ฆ
1.
์ ์ ๊ฐ URL์ ์
๋ ฅ (www.someSchool.edu/someDepartment/home.index)
2.
HTTP ํด๋ผ์ด์ธํธ (๋ธ๋ผ์ฐ์ )๋ HTTP์๋ฒ์ TCP์ปค๋ฅ์
์ ๋งบ์ (:80 ํฌํธ)
a.
HTTP์ ๊ฒฝ์ฐ well known port ๋ฒํธ๋ฅผ ์ด์ฉํ๋ค. 80๋ฒ
3.
์๋ฒ๋ 80๋ฒ ํฌํธ์ ์ปค๋ฅ์
์ ๊ธฐ๋ค๋ฆฐ๋ค. ์ปค๋ฅ์
์ด ๋งบ์ด์ง ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ฆผ
4.
๊ทธ๋ฌ๋ฉด ํด๋ผ์ด์ธํธ๋ TCP ์์ผ์ ํตํด์ HTTP ๋ฉ์ธ์ง๋ฅผ ๋ณด๋. ์ ์์ฒญ์์๋ someDepartment/home.index๋ฅผ ๋ํ๋ด๊ธธ ์ํ๋ค๋ ๋ฉ์ธ์ง์
5.
HTTP์๋ฒ๋ ์์ฒญ ๋ฉ์ธ์ง๋ฅผ ์์ ํจ, ๊ทธ๋ฆฌ๊ณ ์์ฒญ์ ๋ง๋ Response ๋ฉ์ธ์ง๋ฅผ ์์ผ์ ํตํด ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด์ค
6.
ํด๋น ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ธ ์๋ฒ๋ TCP์ปค๋ฅ์
์ ์ข
๋ฃํจ
7.
HTTP ํด๋ผ์ด์ธํธ๋ ์๋ต์ ๋ฐ๊ณ HTML์ ํ์ฑํ๊ณ ํ๋ฉด์ ํ์ํจ, ๊ทธ๋ฆฌ๊ณ ํ์ฑ์ค ์ฌ๋ฌ ๋ค๋ฅธ ํ์ผ๋ค(์ด๋ฏธ์ง)๋ฅผ ๋ฐ๊ฒฌํจ
HTTP์ ์๋ต ์๊ฐ
RTT์ ๊ดํ ์ค๋ช
์ด๋ฏธ์ง
์๋ต์๊ฐ(Response Time)์ด๋? ์ ์ ๊ฐ ๋ณด๋ธ ์๋ต์ด server๋ฅผ ๊ฑฐ์ณ ์ ์ ์๊ฒ display ๋ ๋ ๊น์ง์ ์๊ฐ
โข
RTT(Round Trip Time) : ์์ ํจํท์ด ํด๋ผ์ด์ธํธ์์ ๋ณด๋ด ์๋ฒ์์ ๋๋์์ฌ๋๊น์ง์ ์๊ฐ
โข
HTTP Response Time
โฆ
TCP ์ปค๋ฅ์
์ ์ํ ํ๋์ RTT
โฆ
HTTP ์์ฒญ๊ณผ ์์ ์๋ต ๋ฐ์ดํธ๊ฐ ๋์์ฌ๋ ๊น์ง์ RTT
โฆ
ํ์ผ ์ ์ก ์๊ฐ
โฆ
์๋ต์๊ฐ = 2RTT + ํ์ผ ์ ์ก ์๊ฐ
Persistent HTTP
Non-Persistent HTTP Issues (A.K.A. HTTP 1.0)
โข
๋งค ์ค๋ธ์ ํธ ์์ฒญ๋ง๋ค 2๊ฐ์ RTT๊ฐ ํ์ํ๋ค.
โข
์ด๋ฐ ๋๋ ์ด๋ฅผ ๋ง๊ธฐ์ํด ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ณ๋ ฌ์ TCP์ปค๋ฅ์
์ ๋งบ๊ธฐ๋ ํ๋ค.
โข
OS๋ ์ด๋ฐ ๊ฐ๊ฐ์ ์ปค๋ฅ์
์ ์ค๋ฒํค๋๋ฅผ ๊ฒช๋๋ค.
โฆ
๊ฐ ์์ผ๋ง๋ค ๋ฒํผ, TCP ์ปค๋ฅ์
์ ํ ๋นํด์ค์ผ ํ๋ฏ๋ก!
Persistent HTTP (A.K.A. HTTP 1.1)
โข
์๋ฒ๋ ์๋ต์ ์ ์กํ ํ ์ฐ๊ฒฐ๋ ์ปค๋ฅ์
์ ๋ซ๋๋ค.
โข
HTTP ๋ฉ์ธ์ง๋ฅผ ์ด๋ฏธ ์ด๋ ค์ ธ ์๋ ์ปค๋ฅ์
์ ํตํด์ ์์ฒญํ๋ค.
โข
๋๋ฌธ์ ๋ชจ๋ ์ฐธ์กฐ ์ค๋ธ์ ํธ์ ๋ํด ์ต์ ํ๋์ RTT๋ง์ ์ฌ์ฉํ๋ค.
HTTP Message
HTTP์๋ 2๊ฐ์ง ์ข
๋ฅ์ ๋ฉ์ธ์ง ํ์
์ด ์๋ค. (Request, Response)
HTTP Request Message
HTTP ์์ฒญ์ ๋ํ ๋ฉ์ธ์ง
HTTP ์์ฒญ์ ์ผ๋ฐ์ ์ธ ํฌ๋ฉง
โข
HTTP ์์ฒญ ๋ฉ์ธ์ง๋ ASCII ์ฝ๋๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
POST ๋ฉ์๋
โข
์นํ์ด์ง๋ ๊ฐ๋ ์ฌ์ฉ์์ ์
๋ ฅ์ ๋ฐ์์ผํ ๋๊ฐ ์๋ค.
โข
์
๋ ฅ์ entry body์ ์
๋ ฅ๋์ด ์๋ฒ๋ก ์ ์ก๋๋ค.
URL ๋ฉ์๋
โข
GET ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ค.
โข
URL ํ๋์ ์์ฒญ์ ๋ณด๋ธ๋ค. (์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ)
์์ฒญ ํ์ ์ ํธํ์ฑ
โข
HTTP 1.0
โฆ
GET, POST, HEAD
โข
HTTP 1.1
โฆ
GET, POST, HEAD, DELETE, PUT
HTTP Response Message
HTTP Status Code
์ํ์ฝ๋๋ ์๋ต์ ์ฒซ๋ฒ์งธ ์ค์ ์์นํด์์ต๋๋ค.
โข
200 : OK
โข
301 : Moved Permently
โข
400 : Bad Request
โข
404 : Not Found
โข
505 : HTTP Version Not Support
์ฐธ๊ณ ํ๊ธฐ ์ข์ ์๋ฃ
1) well known port list - https://ko.wikipedia.org/wiki/TCP/UDP์_ํฌํธ_๋ชฉ๋ก
2) ๋ชจ์ง๋ผ ๊ฐ๋ฐ์ ์ํ์ฝ๋ ๋ฌธ์ - https://developer.mozilla.org/ko/docs/Web/HTTP/Status
3) Multipart/form-data๋ GET๊ณผ POST๋ง ์ง์ํ๋ค : https://mangkyu.tistory.com/218
4) HTTP 3.0 QUIC ํ๋กํ ์ฝ : https://blog.naver.com/PostView.nhn?blogId=renucs&logNo=220887163028





