๐ 1. HTTP ๋ฉ์์ง ๊ตฌ์กฐ
๐ 1. HTTP Requset ๊ตฌ์กฐ
- Start Line
[HTTP Method][Request Target][HTTP Version]๋ก ๊ตฌ์ฑ
HTTP Method : ์์ฒญ์ ์๋๋ฅผ ๋ด๊ณ ์๋ GET, POST, PUT, DELETE ๋ฑ์ด ํด๋น
Request Target : HTTP Request๊ฐ ์ ์ก๋๋ ๋ชฉํ ์ฃผ์
HTTP Version : version์ ๋ฐ๋ผ์ Request ๋ฉ์์ง ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅผ ์ ์์ด์ version์ ๋ช ์ํด์ผ ํจ - Http Headers
ํด๋น Request์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ถ๋ถ
์์ฒญํ๋ ค๋ ์๋ฒ ํธ์คํธ ์ด๋ฆ, ํฌํธ ๋ฒํธ, cookie, authorization ๋ฑ์ด ์กด์ฌ - Empty Line
Headers์ ๋์ ๋น ์ค๋ก ์๋ณ - Body
HTTP request๊ฐ ์ ์กํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ๋ถ๋ถ
๐ 2. HTTP Response ๊ตฌ์กฐ
- Status Line
[HTTP Version][Status Code][Status Text]๋ก ๊ตฌ์ฑ - Http Headers
ํด๋น Response์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ถ๋ถ
์๋ต ๊ฐ๋ฅ - Empty Line
Headers์ ๋์ ๋น ์ค๋ก ์๋ณ - Body
HTTP Response๊ฐ ์ ์กํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ๋ถ๋ถ
์๋ต ๊ฐ๋ฅ
๐ 2. HTTP๋ Stateless ํ๋ค
- HTTP๋ ์ํ๋ฅผ ์ ์งํ์ง ์๋ Stateless ํ๋กํ ์ฝ์ด๋ค.
- ์ด๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋งค์ฐ ๋น ๋ฅด๊ณ ํ์คํ๊ฒ ์ฒ๋ฆฌํ๋ ๋ฒ์์ฑ(Scalability)์ ํ๋ณดํ๊ธฐ ์ํด์ ์ด์ ๊ฐ์ด ๊ฐ๋จํ๊ฒ ์ค๊ณ๋์ด ์๋ ๊ฒ
- ์ํ๋ฅผ ๊ณ์ ์ ์งํ๊ณ ์ถ์ ์๊ตฌ์ ๋ถ์ํ๊ธฐ ์ํด์ ์ฟ ํค(Cookie)๋ผ๋ ๊ธฐ์ ์ด ๋์
๐ 3. ์์ฒญ URI๋ก ๋ฆฌ์์ค๋ฅผ ์๋ณ
- HTTP๋ URI(Uniform Resource Identifiers)๋ฅผ ์ฌ์ฉํ์ฌ ์ธํฐ๋ท์์ ๋ฆฌ์์ค๋ฅผ ์ง์
GET http://amenable.tistory.com HTTP/1.1
- ํน์ ๋ฆฌ์์ค๊ฐ ์๋ ์๋ฒ ์์ ์๊ฒ ๋ฆฌํ์คํธ๋ฅผ ์ก์ ํ๋ ๊ฒฝ์ฐ์๋ ๋ฆฌํ์คํธ URI์ '*'์ ์ง์ ํ ์ ์๋ค.
POST * HTTP/1.1
๐ 4. HTTP ๋ฉ์๋
- HTTP ๋ฉ์๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์์ฒญ์ ๋ชฉ์ ๋ฐ ์ข ๋ฅ๋ฅผ ์๋ฆฌ๋ ์๋จ
- ๋ฆฌ์์ค์ ์ํํ๊ธธ ์ํ๋ ํ๋, ์๋ฒ๊ฐ ์ํํด์ผ ํ ๋์์ ์ง์ ํ์ฌ ์์ฒญ์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ
๋ฉ์๋ | ์ค๋ช |
GET | ๋ฆฌ์์ค ํ๋ |
POST | ์ํฐํฐ ์ ์ก |
PUT | ํ์ผ ์ ์ก |
HEAD | ๋ฉ์์ง ํค๋ ์ทจ๋ |
DELETE | ํ์ผ ์ญ์ |
OPTIONS | ์ ๊ณตํ๊ณ ์๋ ๋ฉ์๋ ๋ฌธ์ |
TRACE | ๊ฒฝ๋ก ์กฐ์ฌ |
CONNECT | ํ๋ก์์ ํฐ๋๋ง ์๊ตฌ |
๐ 5. ์ง์ ์ฐ๊ฒฐ
- ํ๋์ HTML์ ์ฌ๋ฌ ์ด๋ฏธ์ง๊ฐ ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํด์ ๋ฆฌํ์คํธ๋ฅผ ํ๋ฉด HTML ๋ฌธ์์ ํฌํจ๋์ด ์๋ ์ด๋ฏธ์ง๋ฅผ ํ๋ํ๊ธฐ ์ํด์ ์ฌ๋ฌ ๋ฆฌํ์คํธ๋ฅผ ์ก์
- ์ง์ ์ฐ๊ฒฐ์ ํ์ง ์๋๋ค๋ฉด ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ผ ๋๋ง๋ค ๋งค๋ฒ TCP ์ฐ๊ฒฐ๊ณผ ์ข ๋ฃ๋ฅผ ํ๊ฒ ๋๋ ์ธ๋ชจ์๋ ์ผ์ด ๋ฐ์๋์ด ํต์ ๋์ด ๋์ด๋๊ฒ ๋จ
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ง์ ์ฐ๊ฒฐ(Persistent Connections)์ด๋ผ๋ ๋ฐฉ๋ฒ์ด ๊ณ ์
- ์ง์ ์ฐ๊ฒฐ์ ํ๋ฉด TCP ์ปค๋ฅ์ ์ ์ฐ๊ฒฐ๊ณผ ์ข ๋ฃ๋ก ๋ฐ๋ณต๋๋ ์ค๋ฒํค๋๋ฅผ ์ค์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ํ ๋ถํ๊ฐ ๊ฒฝ๊ฐ
- ๋ํ, ์ค๋ฒํค๋๋ฅผ ์ค์ธ ๋งํผ HTTP ๋ฆฌํ์คํธ์ ๋ฆฌ์คํฐ์ค๊ฐ ๋น ๋ฅด๊ฒ ์๋ฃ๋๊ธฐ ๋๋ฌธ์ ์น ํ์ด์ง๋ฅผ ๋น ๋ฅด๊ฒ ํ์ ๊ฐ๋ฅ
๐ 6. ํ์ดํ๋ผ์ธํ(HTTP Pipelining)
- ์ง์ ์ฐ๊ฒฐ์ ์ฌ๋ฌ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ผ ์ ์๋๋ก ํ๋ ํ์ดํ๋ผ์ธ(HTTP Pipelining)ํ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํจ
- ์ด๋ฅผ ํตํด ๋ฆฌ์คํฐ์ค๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ฐ๋ก ๋ค์ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ผ ์ ์์
- HTML ํ ํ์ด์ง์ 10๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ํฌํจํ ์น ํ์ด์ง๋ฅผ ๋ฆฌํ์คํธํ ๊ฒฝ์ฐ, ๊ฐ๋ณ ์ฐ๊ฒฐ๋ณด๋ค๋ ์ง์ ์ฐ๊ฒฐ์ด ๋น ๋ฅด๊ณ , ์ง์ ์ฐ๊ฒฐ๋ณด๋ค๋ ํ์ดํ๋ผ์ธํ๊ฐ ๋น ๋ฆ (๋ฆฌํ์คํธ์ ์๊ฐ ๋์ด๋ ์๋ก ์ฐจ์ด๊ฐ ์ปค์ง)
๐ 7. ์ฟ ํค๋ฅผ ์ฌ์ฉํ ์ํ๊ด๋ฆฌ
- ์ฟ ํค๋ ๋ฆฌํ์คํธ์ ๋ฆฌ์คํฐ์ค์ ์ฟ ํค ์ ๋ณด๋ฅผ ์ถ๊ฐํด์ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ํ์ ํ๊ธฐ ์ํ ์์คํ
- ์๋ฒ์์ ๋ฆฌ์คํฐ์ค๋ก ๋ณด๋ด์ง Set-Cookie๋ผ๋ ํค๋ ํ๋์ ์ํด ์ฟ ํค๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ณด์กด
- ๋ค์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ ์๋ฒ๋ก ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ผ ๋, ์๋์ผ๋ก ์ฟ ํค ๊ฐ์ ๋ฃ์ด์ ์ก์
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ด์จ ์ฟ ํค๋ฅผ ํ์ธํ์ฌ ์ด๋ ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ๋์ง ํ์ธ ๊ฐ๋ฅ
[์ฐธ๊ณ ์๋ฃ]
99C0RN ๋์ '[๊ฐ๋จ์ ๋ฆฌ] HTTP Request/Response ๊ตฌ์กฐ'
'๐ ๊ฐ๋ฐ ์์ > ๊ทธ๋ฆผ์ผ๋ก ๋ฐฐ์ฐ๋ HTTP&Network Basic' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ 6์ฅ. HTTP ํค๋ (0) | 2023.05.31 |
---|---|
์ 5์ฅ. HTTP์ ์ฐ๊ณํ๋ ์น ์๋ฒ (0) | 2023.05.31 |
์ 4์ฅ. ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌํ๋ HTTP ์ํ ์ฝ๋ (0) | 2023.05.30 |
์ 3์ฅ. HTTP ์ ๋ณด๋ HTTP ๋ฉ์์ง์ ์๋ค. (0) | 2023.05.30 |
์ 1์ฅ. ์น๊ณผ ๋คํธ์ํฌ์ ๊ธฐ๋ณธ์ ๋ํด ์์๋ณด์ (0) | 2023.05.30 |