์ฑ ์ ์ฝ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๊ธฐ๋กํ ๊ธ์ ๋๋ค.
HTTP ํต์ ์ ์ ๋ขฐ์ฑ์๋ ํ๋กํ ์ฝ์ด๋ค. ์ด๋ง์ ๊ณง ๋ฐ์ ์ ๋ณด๊ฐ ๊ฒฐํจ์ด ์์์ ๋ฐฐ์ ํ๋ค๋ ๋ง๊ณผ ๊ฐ๋ค.
์น ํด๋ผ์ด์ธํธ์ ์๋ฒ
ํด๋ผ์ด์ธํธ๊ฐ HTTP ์์ฒญ์ ์๋ฒ๋ก ๋ณด๋ด๋ฉด, ์๋ฒ๋ HTTP ์๋ต์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ธ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ค๊ฐ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์กด์ฌํ๋ค.
stateDiagram-v2
client --> browser
browser --> client
browser --> server
server --> browser
๋ฆฌ์์ค
๋ฆฌ์์ค๋ ์น ์ฝํ ์ธ ์ ์์ฒ์ด๊ณ , ์น ์๋ฒ๊ฐ ์ด๋ฅผ ๊ด๋ฆฌํ๊ณ ์ ๊ณตํ๋ค. ์ ์ ํ์ผ์ผ ์๋, ๋์ ๋ฆฌ์์ค ์ผ ์๋ ์๋ค. ์ ์ ๋ฆฌ์์ค๊ฐ ๋ฌธ์ํ์ผ, ์ด๋ฏธ์ง, ์ด๋ฏธ ์ดฌ์๋์ด ์ ์ฅ๋ ์์ํ์ผ ๊ฐ์ ๊ฒ์ด๋ผ๋ฉด ๋์ ๋ฆฌ์์ค๋ ์ฌ์ฉ์์ ๋ฐ๋ผ, ์์ฒญ ๊ฐ์ ๋ฐ๋ผ, ์๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ฝํ ์ธ ๋ฅผ ๋ง๋ค์ด๋ธ๋ค. ์น ์๋ฒ์ ์กด์ฌํ๋ ๋ชจ๋ ์ฝํ ์ธ ๋ฅผ ๋ฆฌ์์ค๋ผ๊ณ ํฐ ๋ฒ์ฃผ์์ ๋ณผ ์ ์๋ค. ๋ ์น ํ์ด์ง๋ ํ๋์ ๊ฐ์ฒด๊ฐ ์๋๋ผ, ์ฌ๋ฌ ํธ๋์ญ์ ์ ํตํด ์ฌ๋ฌ ๊ฐ์ฒด๋ก ๊ตฌ์ฑ๋ ๋ฆฌ์์ค ๋ชจ์์ด๋ค.
๋ฆฌ์์ค ์ค HTTP๋ MIME(Multipurpose Internet Mail Extensions) ํ์ ์ด๋ผ๋ ๋ฐ์ดํฐ ํฌ๋งท ๋ผ๋ฒจ์ ๋ถ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. ์๋๋ ์ด๋ฉ์ผ์ ์ผ๊ณ HTTP๋ก ํ์ฅ๋์๋ค.
https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types
HTTP ํต์ ์ค Content-type์ ๋ถ๋ ๊ฒ MIME ํ์ ์ด๋ค.
POST /foo HTTP/1.1
Content-Length: 68137
Content-Type: multipart/form-data;
์ด๋ ์ผ์ชฝ์ด primary ํ์ (ํฐ ๋ฒ์ฃผ), ์ค๋ฅธ์ชฝ์ด sub ํ์ ์ด๋ค. ์์๋ก ๊ฐ์ ธ์จ ์ฝ๋๋ก๋ multipart์ด๊ณ form-data๋ฅผ POST๋ฐฉ์์ผ๋ก ์์ฒญํ๊ณ ์์์ ์ ์ ์๋ค.
URI, URL, URN
URI(uniform resource identifier)๋ ํตํฉ ์์ ์๋ณ์๋ก ์๋ฒ ๋ฆฌ์์ค์ด๋ค. ์ ๋ณด ๋ฆฌ์์ค๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ณ ์์น๋ฅผ ์ง์ ํ ์ ์๋ ์ผ์ข ์ ์ฐํธ๋ฒํธ ๊ฐ์ ๊ฐ๋ ์ด๋ค. ์ฒ์ ์ ํ์ ๋ URL๊ณผ ๊ณ์ ํท๊ฐ๋ ธ์๋ค. ๋ฆฌ์์ค์ ๋ํ ์ฃผ์๊ฐ์ด๋ผ๊ณ ์ดํดํ๋ ๊ฒ ๋น ๋ฅด๋ค.
HTTP๋ URI์ ์ ํ๋๋ก ๋ฆฌ์์ค ๊ฐ์ฒด๋ฅผ ์ฐพ์์จ๋ค.
URI๋ ํฐ ๊ฐ๋ ์ผ๋ก URL(ํตํฉ ์์ ์ง์์)์ URN์ผ๋ก ๋๋ ์ง๋ค.
flowchart TD
C{URI}
C -->|์ ์ผํ ์๋ณ ๋ช
| D[URN]
C -->|ํ๋กํ ์ฝ, ์๋ฒ์ฃผ์, ๋ฆฌ์์ค| F[URL]
URN์ ์ด๋์๋ ์ง์นญํด์ ๋ฆฌ์์ค ์์น๋ฅผ ํ์ ํด ์ฌ์ฉ๊ฐ๋ฅํ ์๋ณ์ ๊ฐ์๊ฑด๋ฐ ์ฌ์ค์ ์ ์์ฐ์ด๊ณ , URL์ ํน์ ์๋ฒ์ ํ ๋ฆฌ์์ค์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์์น๋ฅผ ํ๋กํ ์ฝ(scheme)๊ณผ ํจ๊ป ์ง์ ํด์ฃผ๋ ์์ฃผ ๊ตฌ์ฒด์ ์ธ ์๋ณ์๋ผ๊ณ ๋ณผ ์ ์๋ค. ํต์ URI = URL์ด๋ผ๊ณ ๋ณธ๋ค.
ํธ๋์ญ์
HTTP๋ HTTP ๋ฉ์์ง๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ ํํ๋ ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ(์์ฒญ๋ฉ์์ง - ์๋ต๋ฉ์์ง), ์ด๋ฅผ HTTP ํธ๋์ญ์ ์ด๋ผ๊ณ ํ๋ค.
์์ฒญํ ๋๋ URI์ ๋ช ๋ น์, ์๋ต์๋ ํธ๋์ญ์ ์ ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ๋ค.
๋ชจ๋ HTTP ์์ฒญ ๋ฉ์์ง(ํด๋ผ์ด์ธํธ -> ์๋ฒ)๋ ํ ๊ฐ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๋ฉฐ, ํํ GET/POST/DELETE/PUT/HEAD ๊ฐ ์์ฃผ ์ฐ์ด๊ณ , RESTful ํ์๋ ์์ ๋ค ๋ฉ์๋๋ก ์ ์๋๋ค.
๋ชจ๋ HTTP ์๋ต ๋ฉ์์ง(์๋ฒ -> ํด๋ผ์ด์ธํธ)๋ ์ํ์ฝ๋์ ํจ๊ป ๋ฐํ๋๋ค. ํํ ๋ณผ ์ ์๋ 403 forbidden, 404 not found ๊ฐ์ ๋ฉ์์ง๋ ์ํ์ฝ๋์ ์ํ๋ค.
1xx (์ ๋ณด): ์์ฒญ์ ๋ฐ์์ผ๋ฉฐ ํ๋ก์ธ์ค๋ฅผ ๊ณ์ํ๋ค
2xx (์ฑ๊ณต): ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ๋ฐ์์ผ๋ฉฐ ์ธ์ํ๊ณ ์์ฉํ์๋ค
3xx (๋ฆฌ๋ค์ด๋ ์ ): ์์ฒญ ์๋ฃ๋ฅผ ์ํด ์ถ๊ฐ ์์ ์กฐ์น๊ฐ ํ์ํ๋ค
4xx (ํด๋ผ์ด์ธํธ ์ค๋ฅ): ์์ฒญ์ ๋ฌธ๋ฒ์ด ์๋ชป๋์๊ฑฐ๋ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค
5xx (์๋ฒ ์ค๋ฅ): ์๋ฒ๊ฐ ๋ช ๋ฐฑํ ์ ํจํ ์์ฒญ์ ๋ํด ์ถฉ์กฑ์ ์คํจํ๋ค
https://developer.mozilla.org/ko/docs/Web/HTTP/Status
์ฒ์ 404๊ฐ ํด๋ผ์ด์ธํธ ์ค๋ฅ๋ผ๊ณ ํ์ ๋ ์๋ฌธ์ด์์ง๋ง ์๋ชป๋ ๊ณณ์ ์ก์ธ์คํ ๊ฒฐ๊ณผ์ง ์๋ฒ๋ ์๋ชป์ด ์๋ค๋ ๊ฑธ ์๊ณ ์ดํด๊ฐ ๋๋ค.
์ํ์ฝ๋์ reason phrase๋ฅผ ๋ถ์ฌ์ ๋ณด๋ด๋๋ฐ ์ด๊ฑด ์์ ํ ์ํ์ฝ๋์ ๋์ผํ ๊ฒ์ผ๋ก ๋ณด๊ณ , ์ํ์ฝ๋๋ง์ ์ด์ฉํด ์ฒ๋ฆฌํ๋ค.
์ด ๊ฐ๋ ์ ๋ชจ๋ฅด๊ณ ์์ด์ ๋ฐฑ์๋์ ์ฒซ ํ์ ๋ ์ด ๋ฉ์์ง๋ฅผ ์ก์์ ๋ญ ํ๋ ค๊ณ ํ๋ ๊ธฐ์ต์ด ๋๋ค.
๋ฉ์์ง
HTTP ๋ฉ์์ง๋ ์ธ ๋ถ๋ถ์ผ๋ก ๋๋๋ค. ์์์ค/ ํค๋/ ๋ณธ๋ฌธ์ผ๋ก ๊ฐ๊ฐ
- ์์์ค - HTTP ๋ฒ์ ๋ ํฌํจ๋๋ค.
์ด๋ค ์์ฒญ์ธ์ง(HTTP๋ฉ์๋ ์ด๋ฆ), ์ด๋ค ์ํ์ธ์ง(์ํ์ฝ๋) ๊ฐ ๋ด๊ฒจ์๋ค. - ํค๋
ํค๋๋ ์ฌ๋ฌ์ค๋ก ์ด๋ฃจ์ด์ ธ์๊ณ ์ด๋ค MIMEํ์ ์ ์ฝํ ์ธ ์ธ์ง ์๋ ค์ค๋ค. ํค๋์ ๋์ ์์๋ณด๋ ค๋ฉด ๋น์ค์ด ์๋ ์ง ๋ณด๋ฉด ๋๋ค. - ๋ณธ๋ฌธ
์์ฒญ์ ๋ณธ๋ฌธ์ POST์ PUT์ด ์ฌ์ฉํ๊ณ ์น์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ค์ด๋ณด๋ด๋ฉฐ, ์๋ต์ ๋ณธ๋ฌธ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ค. ์ด ๊ฒฝ์ฐ ์ด์งํ์ผ๋ก ์ธ์ฝ๋ฉ๋ ์ด๋ฏธ์ง, ์์๊ฐ์ ๊ฒ๋ ๋ฐํ ๊ฐ๋ฅํ๋ค.
TCP ์ปค๋ฅ์
๋คํธ์ํฌ ๊ณ์ธต ์๊ธฐ๋ก ์ ๊น ๋ด๋ ค์์, HTTP๋ Application layer๋ค. HTTP๊ฐ ์ ๋ขฐ์ฑ ์๋ ํต์ ์ ํ๋ค๋ ๊ฑด TCP๊ฐ ๋ฐฐ๊ฒฝ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
TCP/IP ํ๋กํ ์ฝ์ UDP์ ๋ค๋ฅด๊ฒ ์ค๋ฅ์๋ ๋ฐ์ดํฐ ์ ์ก, ์์๊ฐ ๊ผฌ์ด์ง ์๋ ๋ฐ์ดํฐ์กฐ๊ฐ๋ค, ๊นจ์ง์ง ์๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ(ํฌ๊ธฐ์ ํ, ์๊ฐ ์ ํ ๊ฐ์ ๊ฒฝ์ฐ) ๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ๊ณ ์๋ค.
HTTP๋ ํฌํธ๋ฒํธ 80, HTTPS(SSL์์ HTTP ๋์ด๊ฒ)๋ 443์ ์ฌ์ฉํ๋ค.
IP ์ฃผ์์ ํฌํธ๋ฒํธ๋ฅผ ์ด์ฉํด ํด๋ผ์ด์ธํธ-์๋ฒ ๊ฐ TCP/IP ์ปค๋ฅ์ ์ ๋งบ์ด ์์ฝ๊ฒ ํต์ ํ ์ ์๋ค. URL์ ์๋ ๋๋ฉ์ธ ์ฃผ์๋ DNS์๋ฒ๋ฅผ ํตํด IP์ฃผ์๋ก ๋ณํ๋์ด ๋๊ฐ๋ค.
์น ๋ธ๋ผ์ฐ์ ๋ ์ด๋ป๊ฒ ์ฌ์ฉ์์๊ฒ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ์ง์ ๋ํ ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ URL(๋๋ฉ์ธ)์์ ํธ์คํธ ๋ช ์ ์ถ์ถํ๋ค(์น ์ฃผ์)
- ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ํธ์คํธ ๋ช ์ IP์ฃผ์๋ก ๋ณํํ๋ค(DNS๋ฅผ ๊ฑฐ์ณ์)
- ํฌํธ๋ฒํธ๊ฐ ์๋ค๋ฉด ๊ทธ๊ฑธ ๊ฐ์ ธ๊ฐ๊ณ , ์์ผ๋ฉด 80์ ๊ธฐ๋ณธ์ผ๋ก ํ๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ ์น ์๋ฒ์์ TCP ์ปค๋ฅ์ ์ IP์ฃผ์์ ํฌํธ๋ฒํธ๋ฅผ ์ด์ฉํด ๋งบ๋๋ค.
- ๋งบ์ ์ปค๋ฅ์ ์ ์ด์ฉํด ์๋ฒ์ HTTP ์์ฒญ์ ๋ณด๋ธ๋ค.
- ์๋ฒ๊ฐ ๋ธ๋ผ์ฐ์ ์ HTTP ์๋ต์ ๋๋ ค์ฃผ๊ณ ์ปค๋ฅ์ ์ด ๋ซํ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ๋ฐ์ ๋ฆฌ์์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋ค.
๋์์ด ๋๋ค๋ฉด ๋๊ธ์ด๋ ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์ธ์! ๋ก๊ทธ์ธ ์ํด๋ ๋ฉ๋๋ค ^_^
'๐ > HTTP ์๋ฒฝ ๊ฐ์ด๋๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[6์ฅ] 6.1~ (0) | 2024.02.29 |
---|---|
[5์ฅ] 5.1~5.10 (0) | 2024.02.28 |
[3์ฅ ~ 4์ฅ] 3.4 ~ 4.7 (0) | 2024.02.16 |
[3์ฅ] 3 ~ 3.3 (0) | 2024.02.14 |
[1์ฅ ~ 2์ฅ] 1.7 ~ 2.4 (0) | 2024.02.12 |