์ฑ ์ ์ฝ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๊ธฐ๋กํ ๊ธ์ ๋๋ค.
์ํ์ฝ๋
HTTP ์ํ์ฝ๋๋ ์๋ต๋ฉ์์ง์ ๋ถ์ด ๋์ค๋ ๊ฒ์ผ๋ก 100,200,300,400,500 ์ด๋ ๊ฒ ํฌ๊ฒ ๋ค์ฏ ๊ฐ์ง๋ก ๋๋๋ค.
- 100๋ฒ๋: ์ ๋ณด์ฑ ์ํ์ฝ๋
- ์ ๋ณด์ฑ ์ํ์ฝ๋์ด๊ณ HTTP/1.1์ ๋์ ๋์๋ค. (์ด์ ๋ฒ์ ์์ ์ธ์ํ์ง ๋ชปํ๋ค.)
- ๊ทธ ์ค 100 ์ Continue๋ฅผ ์๋ฏธํ๋ฉฐ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ entity ๋ณธ๋ฌธ์ ๋ณด๋ด๊ธฐ ์ ์ ์๋ฒ๊ฐ ํด๋น ๋ณธ๋ฌธ์ ๋ฐ์ ๋ค์ผ๊ฑด์ง ํ์ธํ๊ธฐ ์ํ ํ๋๊ทธ ๊ฐ์ ์ฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ 100-continue Expectํค๋๋ฅผ ๋ด์ ๋ณด๋ด๊ณ , ์๋ต์ ๊ธฐ๋ค๋ฆด ์ ์์ง๋ง ๋ฌดํ์ ๊ธฐ๋ค๋ฆด ์ ๋ ์์ผ๋ ํ์์์ ์ ๊ทธ๋ฅ ๋ณธ๋ฌธ์ ๋ณด๋ด์ผํ๋ค.
- ์๋ฒ๋ 100-continue Expect๋ฅผ ์์ฒญํ ํด๋ผ์ด์ธํธ์๊ฒ๋ง 100์ ๋ณด๋ด์ผ๋๊ณ ๊ทธ๊ฒ ์๋๋ผ๋ฉด ๋ณด๋ด๋ฉด ์๋๋ค.
- ๋ง์ฝ 100-continue Expect ์์ฒญ์ ๋ฐ๊ณ , ์๋ฒ๊ฐ ๋ณธ๋ฌธ์ ์ฝ๊ธฐ์ ์ ์์ฒญ์ด ๋์ด์ก์ ๊ฒฝ์ฐ ์๋ฒ์์ ์ผ๋ฐฉ์ ์ผ๋ก ์๋ต์ ๋ณด๋ด๊ณ ์ปค๋ฅ์ ์ ๋ซ์ผ๋ฉด ์๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ๋ฌดํ๋๊ธฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ด๋ค
- 200๋ฒ๋: ์ฑ๊ณต ์ํ ์ฝ๋
- 200: OK
- 201: Created (PUT๊ณผ ๊ฐ์ ์์ฒญ์ ์๋ต์ผ๋ก)
- 202: Accepted (์์ฒญ์ ๋ฐ์๋ค์์ง๋ง ์๋ฒ๊ฐ ์ํํ๋์ง๋ ์ ์ ์์)
- 203: ๋ฆฌ์์ค์ ๋ํ ๊ฒ์ฆ์ด ์๋์ ๊ฒฝ์ฐ
- 204: No Content - Entity ๋ณธ๋ฌธ์ด ์๋ ์๋ต์ผ๋ก ์๋ก๊ณ ์นจ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
- 205: Reset Content ๋ธ๋ผ์ฐ์ ์๊ฒ ํ์ฌ Html form์ ์๋ ๋ชจ๋ ๊ฐ์ ๋ฆฌ์ ํ๋ผ๊ณ ์ง์
- 206: ๋ถ๋ถ/๋ฒ์ ์์ฒญ์ด ์ฑ๊ณตํ์ ๊ฒฝ์ฐ
- 300๋ฒ๋: ๋ฆฌ๋ค์ด๋ ์
์ํ์ฝ๋
๋ฆฌ์์ค์ ๋ํ ๋ณํ๊ฐ ์๊ธธ ๊ฒฝ์ฐ ์๋ ค์ฃผ๊ธฐ ์ํ ์ํ์ฝ๋, ๊ด์ฌ์ฌ๊ฐ ๋ณ๊ฒฝ๋ ๋ฆฌ์์ค์ ๋ํ ์๋ต๋ ๋ด๋นํ์ง๋ง ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ์ฉ๋๋ก๋ ์ฌ์ฉํ ์ ์๋ค.
- 300: Mutiple Choices -> ์ฌ๋ฌ ๋ฆฌ์์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ์์ฒญ์ด ๋ค์ด์ฌ ๊ฒฝ์ฐ ๋ฆฌ์์ค ๋ชฉ๋ก๊ณผ ํจ๊ป ๋ฐํ.
- 301: ์์ฒญํ URL์ด ์๊ตฌ์ ์ผ๋ก ์ฎ๊ฒจ์ก์๋. ์๋ต์ location ํค๋์ ํ์ฌ ๋ฆฌ์์ค๊ฐ ์กด์ฌ ์ค์ธ URL์ ํฌํจํด์ผ๋๋ค.
- 302: 301์ด๋ ๋น์ท์ง๋ง ์์๋ก ์ฌ์ฉํด์ผ๋๊ณ , ์ดํ ์์ฒญ์์๋ ์๋ URL์ ์ด์ฉํด ์ ๊ทผํด์ผ๋๋ค.
- 303(HTTP/1.1๋ถํฐ 302๋์ ์ฌ์ฉ): ๋ฆฌ์์ค๋ฅผ ๋ค๋ฅธ URL์์ ๊ฐ์ ธ์์ผํ ๋ ์๋ต. -> POST ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก ์ ์ ํ๋ค
- 304: Not Modified ๋ก ์์ฒญํ ๋ฆฌ์์ค์ ๋ํ ์์ ์ด ์์ ๋ ๋ฐํํ๋ค.
- 305: Use Proxy - ๋ฆฌ์์ค๊ฐ ๋ฐ๋์ ํ๋ฝ์๋ฅผ ๊ฑฐ์ณ ์ ๊ทผ๋์ผํจ์ ์๋ฏธ
- 307 (HTTP/1.1๋ถํฐ 302๋์ ์ฌ์ฉ) : Temporary Redirect == 302
- 400๋ฒ๋: ํด๋ผ์ด์ธํธ ์๋ฌ ์ํ์ฝ๋
- 400: Bad Request ์๋ชป๋ ์์ฒญ
- 401: Unauthorized ๊ถํ์ด ์๋ ๋ฆฌ์์ค์ ๋ํ ์์ฒญ - ์ธ์ฆ์ ๋ณด๊ฐ ํ์ํจ
- 403: Forbidden ์๋ฒ๊ฐ ๊ฑฐ์ ํ ์์ฒญ
- 404: Not found ์๋ฒ์์ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์
- 405: ๋ฉ์๋๊ฐ ์ง์๋์ง์์
- 406: ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์๋ค์ผ ์ ์๋ ๋ฆฌ์์ค์ผ ๊ฒฝ์ฐ
- 407: ํ๋ฝ์๋ฅผ ๊ฑฐ์ณ์ ์ธ์ฆํด์ผ๋ ๋
- 408: ํ์์์(์์ฒญ์ ์ํํ๊ธฐ ์ํ ์๊ฐ์ด ๋๋ฌด ์ค๋๊ฑธ๋ฆด ๋)
- 409: ์ถฉ๋ ์ฐ๋ ค
- 410: ์์ ์๋ ๊ฐ๊ณ ์๋ ๋ฆฌ์์ค์ธ๋ฐ ์ง๊ธ์ ์๋ค.
- 411: Content-Length ํค๋๋ฅผ ์ถ๊ฐํด์ผ๋๋ค
- 412: ์์ฒญ ์กฐ๊ฑด ์ค ํ๋๊ฐ ์คํจํ ๋
- 413: ์์ฒญ ๋ณธ๋ฌธํฌ๊ธฐ๊ฐ ๋๋ฌด ํผ
- 414: ์์ฒญ URI ํฌ๊ธฐ๊ฐ ๋๋ฌด ํผ
- 415: ์๋ฒ๊ฐ ์์๋ค์ ์ ์๋ entity๊ฐ ์์ฒญ์ ํฌํจ๋๋ค.
- 416: ๋ฆฌ์์ค ์์ฒญ๋ฒ์๊ฐ ์๋ชป๋๋ค.
- 417: Expect ์์ฒญํค๋์ ์๋ฒ๊ฐ ์๋ตํ ์ ์์ ๊ฒฝ์ฐ
- 500๋ฒ๋: ์๋ฒ ์๋ฌ ์ํ์ฝ๋
ํ๋ฝ์๊ฐ ํด๋ผ์ด์ธํธ ์ ์ฅ์์ ์๋ฒ์ ๋ํ๋ฅผ ์๋ํ ๋, ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด 500๋ฒ๋ ์๋ฌ์ฝ๋๋ฅผ ์์ฑํ๋ค.
- 500: Internal Server Error ์๋ฒ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค
- 501: Not Implemented ์๋ฒ๊ฐ ์ง์ํ์ง ์๋ ์์ฒญ์ด ๋ค์ด๊ฐ ์๋ค
- 502: Bad Gateway ์์ฒญ ์๋ต์ฐ์๋ฅผ ํ๊ณ ๋ค์ด๊ฐ ๋ ์ ์์ด ์๋ ๊ฒฝ์ฐ
- 503: Service Unavailable ํ์ฌ ์์ฒญ์ ์ฒ๋ฆฌํด์ค ์ ์์ง๋ง ๋์ค์๋ ๊ฐ๋ฅํจ. ์ข ๋ ๊ตฌ์ฒด์ ์ผ๋ก๋ ์๋ฒ๊ฐ Retry-Afterํค๋๋ฅผ ํฌํจ์์ผ ์๋ตํ๋ฉด ์ธ์ ๊ทธ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์๋์ง์ ๋ํ ์ ๋ณด๋ ์ป์ ์ ์๋ค.
- 504: Gateway Timeout - 408์ด๋ ๊ฐ์๋ฐ, ํ๋ฝ์๋ ๊ฒ์ดํธ์จ์ด๊ฐ ์ํํ๋ค ๋ฐ์ํ 408์ 504๋ก ์๋ตํด์ ํด๋ผ์ด์ธํธ์๊ฒ ๋๊ฒจ์ค๋ค.
- 505: HTTP ๋ฒ์ ์ด ์๋ง๋๋ค.
ํค๋
์์ด ๋๋ฌด ๋ง์์ MDN ๋ฌธ์๋ฅผ ์ผ๋จ ์ฒจ๋ถํ๊ฒ ๋ค.
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers
HTTP ํค๋ - HTTP | MDN
HTTP ํค๋๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์์ฒญ ๋๋ ์๋ต์ผ๋ก ๋ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ์กํ ์ ์๋๋ก ํด์ค๋๋ค. HTTP ํค๋๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋ ์ด๋ฆ๊ณผ ์ฝ๋ก ':' ๋ค์์ ์ค๋ ๊ฐ(์ค ๋ฐ๊ฟ ์์ด)์ผ๋ก ์ด๋ฃจ
developer.mozilla.org
ํค๋๋ ํฌ๊ฒ ๋ค์ฏ๊ฐ์ง๋ก ๋ถ๋ฅ๋๋ค.
- ์ผ๋ฐ ํค๋ - ์๋ฒ, ํด๋ผ์ด์ธํธ ๋ชจ๋ ์ฌ์ฉํ๋ค.
- ์ผ๋ฐ ์บ์ฑ ํค๋ - HTTP/1.0๋๋ถํฐ ์๊ฒจ์ ๋ก์ปฌ ๋ณต์ฌ๋ณธ์์ ์บ์ํ ์ ์๊ฒ ํด์ฃผ๋ ํค๋๋ค.
- ์์ฒญ ํค๋ - ์์ฒญ ๋ฉ์์ง์์๋ง ์๋ฏธ๋ฅผ ๊ฐ๋๋ค.
- Accept ๊ด๋ จํค๋ (์๋ฒ๊ฐ ํํฐ๋ง ํ ์ ์๋๋ก)
- ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋ - Expect ํค๋๊ฐ ์ฌ๊ธฐ์ ์ํ๋ค. Range๋ ์ฌ๊ธฐ ๋ค์ด์์.
- ์์ฒญ๋ณด์ ํค๋ - Cookie, Authorization ์ด ์ฌ๊ธฐ ์๋ค. JWT ํ ํฐ์ ์ด์ฉํ ํต์ ํ ๋ ์จ๋ดค๋ ๊ธฐ์ต์ด ์๋ค.
- ํ๋ฝ์ ์์ฒญ ํค๋
- ์๋ต ํค๋ - ์๋ต ๋ฉ์์ง์์๋ง ์๋ฏธ๋ฅผ ๊ฐ๋๋ค.
- ํ์ ํค๋ - ๋ค๊ตญ์ด ์ง์์ ์ด๋ค ์ธ์ด๋ฅผ ๋ฐ์๋ค์ผ ์ง ํ์ํ๋ ๊ฒ ๊ฐ๋ค.
- ์๋ต๋ณด์ ํค๋ - ๋ณด์์ฑ์ ๋์ผ ์ ์๋ Set-Cookie๊ฐ ์ฌ๊ธฐ ์๋ค. ๋ฌผ๋ก ์์ ๋ฐฉํธ์ด๋ผ ๋์ค์๋ Session Cookie๋ก ๋ค์ด๊ฐ์ผ๋๋ค.
- Entity ํค๋ - Entity ๋ณธ๋ฌธ์ ๋ํ ํค๋๋ก Content-Type, Content-Length๊ฐ์๊ฒ ์ฌ๊ธฐ ์ํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ํฐํฐ ํค๋๋ ๋ฉ์์ง ์์ ์์๊ฒ ํ์ฌ ๋ด๊ฐ ๋ค๋ฃจ๊ณ ์๋ ๊ฒ ๋ญ์ง ์๋ ค์ฃผ๋ ์ญํ ์ ํ๋ค.
- ์ฝํ ์ธ ํค๋ - ์ ๋์ฌ๊ฐ Content์ธ ํค๋๋ค์ด ์ฌ๊ธฐ ์ํ๋ค.
- ์ํฐํฐ ์บ์ฑ ํค๋ - ์ผ๋ฐ ์บ์ฑ ํค๋๊ฐ ์ธ์ ์ด๋ป๊ฒ ์บ์ํด์ผํ๋ ์ง์ ๋ํ ์ ๋ณด๋ฉด, ์ด๊ฑด ์ํฐํฐ์ ๋ํ ์ ๋ณด๋ค. ์ํฐํฐ๊ฐ ์บ์ฑ๋ ์ํ๋ก ์ ํจํ์ง ํ์ธํ๋ ์ฉ๋๋ก ์ธ ์ ์๋ค.
- ํ์ฅ ํค๋ - ์์ง HTTP ๋ช ์ธ์๋ ์ถ๊ฐ๋์ง์์ ์ฌ์ฉ์ ์ ์ ๋นํ์ค ํค๋
์ปค๋ฅ์ ๊ด๋ฆฌ
TCP ์ปค๋ฅ์
HTTP ํต์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ ์์นํ๋ฉฐ ์ปดํจํฐ๋ ๋คํธ์ํฌ๊ฐ ๊ณ ์ฅ๋๋ ์ด์๊ฐ ์๋๋ฉด ๋ฉ์์ง ์๊ณก์ด๋ ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์๋ ์ ๋ขฐ์ฑ์๋ ํต์ ์ด๋ค. ์ด๋ฐ ํต์ ์ TCP ์ปค๋ฅ์ ์์์ ๋์๊ฐ๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ URL์ ํตํด ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ฌ ์๋ฒ์ IP์ฃผ์์ ํฌํธ๋ฒํธ๋ฅผ ๋ฐ์ ๋จผ์ TCP ์ปค๋ฅ์ ์ ์์ฑํ๋ค.
- ์ปค๋ฅ์ ์ ์์ฑํ ๋ค
- GET์ด๋ POST๋ ๋ฉ์๋๋ฅผ ์ด์ฉํด ์๋ฒ๋ก ์์ฒญ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ,
- ์๋ต์ด ์ค๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ๊ทธ๊ฑธ ์ฝ์ ๋ค ์ปค๋ฅ์ ์ ๋๋๋ค.
์ด๋ฐ TCP ์คํธ๋ฆผ์ ์ธ๊ทธ๋จผํธ(์ ์ก๊ณ์ธต์ ๋จ์)๋ก ๋๋์ด์ IPํจํท(๋คํธ์ํฌ ๊ณ์ธต ๋จ์)์ ํตํด ์ ์ก๋๋๋ฐ,
TCP ์ธ๊ทธ๋จผํธ ํค๋๋ TCP ํฌํธ๋ฒํธ, TCP ์ ์ด ํ๋๊ทธ, TCP ์์๋ฒํธ์ ๋ฌด๊ฒฐ์ฑ์ ๊ฒ์ฌํ๋ ์ซ์ ๊ฐ(Checksum)์ ๊ฐ๊ณ ์๊ณ IP ํจํท ํค๋๋ ์ก์ , ์์ IP ์ฃผ์, ํฌ๊ธฐ ๋ฑ์ ํฌํจํ๋ค.
์ปดํจํฐ๋ ํญ์ TCP ์ปค๋ฅ์ ์ ์ฌ๋ฌ๊ฐ ์ ์งํ๋ ๋ฐ, ์ด๊ฑด ํฌํธ๋ฒํธ๋ฅผ ํตํด ์ด๋ค์ง๋ค. ํฌํธ๋ฒํธ๋ ์ผ์ข ์ ๊ฒ์ดํธ์จ์ด ์ญํ ์ ํ๋ค. TCP ์ปค๋ฅ์ ์ ๋ฐ์ ์ง IP์ฃผ์, ๋ฐ์ ์ง ํฌํธ, ์์ ์ง IP์ฃผ์, ์์ ์ง ํฌํธ ๋ฆฌ์๊ฒ 4๊ฐ์ ๊ฐ์ผ๋ก ์๋ณํด ์ ์ผํ ์ปค๋ฅ์ ์ ์์ฑํ๋ค. 4๊ฐ ์ค ์ผ๋ถ๊ฐ ๊ฐ์ ์ปค๋ฅ์ ์ ์์ ์ ์์ง๋ง ๋ชจ๋ ๊ฐ์ ์ปค๋ฅ์ ์ ์ ์ผํ๋ค.
๊ทธ๋์ ์๋ก ๋ค๋ฅธ ์ปค๋ฅ์ ์ด ๊ฐ์ ํฌํธ๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋ค. HTTP๋ ๋ณดํต ํฌํธ๋ฒํธ 80์ ์ฌ์ฉํ๋๋ฐ HTTP ํต์ ์ ์ฌ์ฉ๋๋ TCP ์ปค๋ฅ์ ์ ํฌํธ๋ฒํธ 80์ ๊ฐ๋ฆฌํค๊ณ ์๋ค๊ณ ํ ์ ์๋ค.
์์ผ ํต์ ๋ ์ค์ต์ผ๋ก ์ ๊น ํ์๋๋ฐ, ์๋ ๋์์ ์ฐธ๊ณ ํ๋ฉด ์ดํด๊ฐ ์ ๋๋ค.
Client๊ฐ connectํ๋ ค๋ฉด Server๊ฐ listen(์์ผ ์ปค๋ฅ์ ์ ์์ฑํ๊ณ ์์ฒญ ๋๊ธฐ) ์ค์ด์ด์ผ ํจ์ ์์ฐ์ค๋ฝ๋ค.
HTTP ํธ๋์ญ์ ์ ์์์๋ ์์ ํ๋๋ฐ, TCP ์ฑ๋ฅ์ ์ํฅ์ ๋ฐ๋๋ค.
sequenceDiagram
Client-->Client: ๋ธ๋ผ์ฐ์ ์์ DNS๋ฅผ ์ฐพ์ hostname์ IP์ฃผ์๋ก ๋ณํํ๋ค.
Client->> Server: TCP์ปค๋ฅ์
์์ฒญ
Server->>Client: TCP์ปค๋ฅ์
ํ๊ฐ ์๋ต -- ์ด ๊ณผ์ ์์ ์ปค๋ฅ์
์ด ๋ง์์ง๋ฉด delay ์๊น
Client->> Server: HTTP ์์ฒญ
Client->> Server: ๋น์ฐํ ์ด๋๋ ์๊ฐ์ด ์์๋๋ค.
Server->> Client:
Server->> Client: HTTP ์๋ต
Client-->Client: ์ข
๋ฃ
์์๋๋ ์๊ฐ์ ํ๋์จ์ด, ๋คํธ์ํฌ, ๋ฉ์์ง ํฌ๊ธฐ, ์๋ฒ-ํด๋ผ์ด์ธํธ ๊ฐ ๋ฌผ๋ฆฌ์ ๊ฑฐ๋ฆฌ ๋ฑ ๋ง์ ์์๋ก๋ถํฐ ์ํฅ์ ๋ฐ๋๋ค.
์ด๋ฐ ์ฑ๋ฅ์ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ ์ฑ๋ฅ๊ด๋ จ ์์๋ฅผ ์๊ณ ์์ด์ผํ๋ค.
- TCP ์ปค๋ฅ์ ์ handshake ์ค์
- ํผ์ก ์ ์ด์ฉ TCP Slow-start
- nagle ์๊ณ ๋ฆฌ์ฆ
- ํ์ธ ์๋ต ์ง์ฐ ์๊ณ ๋ฆฌ์ฆ
- time-wait ์ง์ฐ๊ณผ ํฌํธ ๊ณ ๊ฐ
// ์ถํ ์ถ๊ฐ [4.2.3~ 4.3)
HTTP ์ปค๋ฅ์ ๊ด๋ฆฌ
HTTP๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ์ค๊ฐ์๋ฒ๊ฐ ๋์ด๋ ๊ฑธ ํ๋ฝํ๋๋ฐ, ์ค๊ฐ์๋ฒ๋์ ์ต์ ์ ์ ์ฉํ์ง ์๊ณ , ์ธ์ ํ ์ปค๋ฅ์ ์๋ง ์ต์ ์ด ์ ์ฉ๋๋ ๊ฒ์ ์ํ ๋๊ฐ ์๋ค. ์ด๋ HTTP Connection ํค๋ํ๋๋ ์ปค๋ฅ์ ํ ํฐ์ ์ฝํ๋ก ๊ตฌ๋ถํด ๊ฐ๊ณ ์๋ค.
Connection ํค๋์๋
- HTTP ํค๋ ํ๋ ๋ช - ์ด ์ปค๋ฅ์ ์๋ง ํด๋น๋๋ ํค๋ ๋์ด
- ์์ ํ ํฐ ๊ฐ - ์ปค๋ฅ์ ์ ๋ํ ๋น ํ์ค ์ต์
- close ๊ฐ - ์์ ์ด ์๋ฃ๋๋ฉด ์ปค๋ฅ์ ์ ์ข ๋ฃ์ํฌ์ง์ ๋ํ ํ๋.
์ด ์ธ ์ข ๋ฅ์ ํ ํฐ์ด ์ ๋ฌ๋ ์ ์๋ค. Connection ํค๋์๋ ํ(๊ฐ ์๋ฒ, ๋ผ์ฐํฐ) ๋ณ ํค๋๋ช ์ ๊ธฐ์ ํ๊ณ , ์ด ํ ๋ณ ํค๋๋ช ์ ํตํด ์๋ Connection ํค๋๊ฐ ์ต์ข ์์ ์๊ฐ ์๋ ์์น์์ ์ ๋ฌ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ค(ํค๋ ๋ณดํธํ๊ธฐ). ๋ชจ๋ ํค๋ ํ๋๋ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ ์์ ์ ์ญ์ ๋ผ์ผํ๋ค. ์์ ์๋ ์ ๋ฌ๋ฐ์ ์ปค๋ฅ์ ํค๋์ ๋ฉ์์ง๋ฅผ ํตํด ๊ธฐ์ ๋์ด์๋ ์ต์ ์ ์ ์ฉํ๋ค.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Connection
Connection - HTTP | MDN
The Connection general header controls whether the network connection stays open after the current transaction finishes. If the value sent is keep-alive, the connection is persistent and not closed, allowing for subsequent requests to the same server to be
developer.mozilla.org
Warning: Connection-specific header fields such as Connection and Keep-Alive are prohibited in HTTP/2 and HTTP/3. Chrome and Firefox ignore them in HTTP/2 responses, but Safari conforms to the HTTP/2 spec requirements and does not load any response that contains them.
HTTP/1.1์์๋ Connectionํค๋๋ฅผ ์ฌ์ฉํด ์ต์ ์ ์ง์ ํ๋ ๊ฒ์ด ํ์ฉ๋์ง๋ง ์ด์ 2, 3๋ฒ์ ์์๋ ๋ฌด์๋๋ค.
ํธ๋์ญ์ ์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค๊ณ ๊ฐ์ ํ์. ์ฌ๋ฌ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ผ๋๋๋ฐ ์์ฐจ์ ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ค๋ฉด ๋ฌผ๋ฆฌ์ ์ง์ฐ๋ ์์ง๋ง, ์ฌ์ฉ์๊ฐ ๋๋ ๋ ๋์์ ์กฐ๊ธ์ฉ ๋์ค๋ ๊ฒ๋ณด๋ค ๋๋ฆฌ๋ค๊ณ ์๊ฐํ ๊ฒ์ด๋ค. ๋ ๊ฐ์ฒด๊ฐ ๋ค ๋๋ฌํด์ผ ํ๋ฉด์ ๊ทธ๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ ๊ทธ ์ ์๋ ํ๋ฉด์ด ๋น์ด์๋ค๋ ๋จ์ ๋ ์๋ค.
์์ฐจ์ฒ๋ฆฌ ๋ง๊ณ ์ด๋ป๊ฒ ํธ๋์ญ์ ์ ์ฒ๋ฆฌํด์ผ ์ฑ๋ฅ์ ๋์ผ ์ ์์๊น?
๋ณ๋ ฌ ์ปค๋ฅ์
์ฌ๋ฌ๊ฐ์ TCP ์ปค๋ฅ์ ์ ๋งบ๊ณ ๋์์ HTTP ์์ฒญ์ ๋ณด๋ธ๋ค.
graph LR
Server --> Client
์ด๊ฒ ์๋ ๋ฐฉ์์ด์๋ค๋ฉด
graph LR
Server --> Client
Server --> Client
Server --> Client
Server --> Client
Server --> Client
์ปค๋ฅ์ ์ ์ฌ๋ฌ๊ฐ ๋ฌ์์, ๊ฐ ์ปค๋ฅ์ ๋ง๋ค ์ปดํฌ๋ํธ๋ฅผ ๋ด๋ ค๋ฐ์์ ์น ํ์ด์ง๊ฐ ๋ฆฌ์์ค ๊ฐ์ ธ์ค๋ ์๋๋ฅผ ๋ ๋น ๋ฅด๊ฒ ํ๋ค.
์ด๋ฌ๋ฉด ์์ฐจ๋ก ๋๋ ์ด*N ํ ๊ฑธ๋ฆฌ๋ ๊ฒ ๊ฐ ์ปค๋ฅ์ ์ ์ง์ฐ์๊ฐ์ ๊ฒน์น๊ฒ ํ ์ ์์ผ๋ฏ๋ก ์๋๊ฐ ๋นจ๋ผ์ง๊ณ , ์ธํฐ๋ท ๋์ญํญ๋ ํ ์ปค๋ฅ์ ์ด ์ ์ ํ๋ ๊ฒ ์๋๋ผ ๋๋ ์ ์ด๋ค.
sequenceDiagram
Client->> Server: ์์ฒญ
Server->>Client: ์๋ต
Server-->>Client: ์๋ต
Server-->>Client: ์๋ต
Server-->>Client: ์๋ต
๊ทธ๋ฌ๋ฉด ๋ณ๋ ฌ ์ปค๋ฅ์ ์ ํญ์ ๋น ๋ฅผ๊น? ๋ฌผ๋ฆฌ์ ์ธ ์ด์ ๋ก ์๋ฒ์ ์ฑ๋ฅ์ด ์ข์ง ์๊ฑฐ๋(๋ฒํธ ์ ์๋ ๋ถํ์ ์์ด ์ ์ ๊ฒฝ์ฐ) ๋คํธ์ํฌ ๋์ญํญ์ด ์ข์ ๊ฒฝ์ฐ ๊ฐ ๊ฐ์ฒด๋ฅผ ๋ด๋ ค๋ฐ๋ ์๋ ์์ฒด๊ฐ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ์คํ๋ ค ์ปค๋ฅ์ ์ ์์ฑํ๋ ์๊ฐ์ด ์ฑ๋ฅ์ ๋ ์ ํ์ํฌ ์ ์๋ค.
์ง์ ์ปค๋ฅ์
์ปค๋ฅ์ ์ ์ฌํ์ฉํ๋ฉด์ ๋งค๋ฒ ์์ฑ/์ข ๋ฃ ํ๋ ์๊ฐ์ ์ค์ธ๋ค. ์น ํด๋ผ์ด์ธํธ๋ ๋ณดํต ๊ฐ์ ์ฌ์ดํธ์์ ์ฌ๋ฌ๊ฐ ์ปค๋ฅ์ ์ ๋งบ๋๋ค. (ํน์ ๋ฆฌ์์ค์ ์์ฃผ ์ฐธ์กฐํ๋๊น ์ฐธ์กฐ ์ง์ญ์ฑ์ด๋ ๋น์ทํ ๊ฐ๋ ์ด๋ผ๋ ์๊ฐ์ด ๋ ๋ค.) ์ด๊ฑธ ์น์์๋ ์ฌ์ดํธ ์ง์ญ์ฑ์ด๋ผ๊ณ ํ๋๋ฐ HTTP/1.1์์๋ ์ฒ๋ฆฌ๊ฐ ๋๋๋ ์๋ฒ, ํด๋ผ์ด์ธํธ ๋ ์ค ์ด๋ ํ ์ชฝ์ด ๋์ง ์๋ ์ด์ ์ปค๋ฅ์ ์ ์ ์งํด์ ์ฌ์ฌ์ฉํ ์ ์๊ณ ์ด๊ฑธ ์ง์ ์ปค๋ฅ์ ์ด๋ผ๊ณ ํ๋ค. ์ด๋ฌ๋ฉด ์ปค๋ฅ์ ์ ์์ฑ/์๋ฉธํ๋ ๋ฐ ๋๋ ๋น์ฉ์ ์ค ์ผ ์ ์์ผ๋ฏ๋ก ์ฑ๋ฅ์ ์กฐ๊ธ ๋ ์ฌ๋ฆด ์ ์๋ค. ๋จ์ ์ ์ปค๋ฅ์ ์ด ์ ์ง๋๊ธฐ ๋๋ฌธ์ ์ปค๋ฅ์ ์ด ์์ด๋ฉด์ ๋ฐ์ํ ๋ฆฌ์์ค ์๋ชจ๋ฅผ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ๊ฒ์ธ์ง์ ๋ํ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ด๋ค.
๋ณ๋ ฌ+์ง์์ ์ฌ์ฉํ๋ฉด ์ ์ ์์ ๋ณ๋ ฌ์ปค๋ฅ์ ์ ์ง์ ์ปค๋ฅ์ ์ผ๋ก ์ฐ๋ฉด์ ์ฅ์ ์ ๊ทน๋ํ ์ํฌ ์ ์๋ค. ์ปค๋ฅ์ ํ์ ์ผ๋ก๋ keep-alive(1.0+)์ persistent ์ปค๋ฅ์ (1.1)์ด ์๋ค.
Keep-Alive
HTTP/1.1 200 OK
Connection: Keep-Alive
1.0 ๋ฒ์ ์์ ์ง์ ์ปค๋ฅ์ ์ ์ํด ์ฌ์ฉ๋ ํค๋๋ค. 1.1๋ถํฐ๋ keep-alive๊ฐ ๊ธฐ๋ณธ์ด๋ผ์ ๋ช ์ธ์๋ ๋บ์ง๋ง ์์ง๋ ์ฌ์ฉ๋๊ณ ์๊ณ keep-alive๋ฅผ ํค๋์ ๋ด์์ ์์ฒญ๋ณด๋ธ ํด๋ผ์ด์ธํธ๋ ์๋ฒ ์๋ต์ Keep-Alive ์ฌ๋ถ์ ๋ฐ๋ผ ์ปค๋ฅ์ ์ ๋์์ง ๋ง์ง ๊ฒฐ์ ํ๋ค. ์๋ค๋ฉด ์๋ฒ๊ฐ ๋์ ๊ฒ์ผ๋ก ์ถ์ ํ๊ณ ํด๋ผ์ด์ธํธ๋ ์ปค๋ฅ์ ์ ์ ์งํ์ง์๋๋ค. ์ด ๋ชจ๋ ๊ณผ์ ์ ๊ฐ์ ์ฑ์ด ์๋ค. ๋จ์ํ ์์ฒญ์ผ ๋ฟ์ด๊ณ keep-alive ์์ฒด์ ๋ํ ์ต์ ๋ Keep-Aliveํค๋๋ฅผ ์ด์ฉํด ์ค์ ํ ์ ์๋ค.
Keep-Alive: timeout=5, max=10
์ต๋ 10๊ฐ์ ํธ๋์ญ์ ์ด ์ฒ๋ฆฌ๋ ๋์ ์ปค๋ฅ์ ์ ์ ์งํ๊ณ , ์ต์ 5์ด๊ฐ ์ปค๋ฅ์ ์ ์ ์งํ๋ผ๋ ์ต์ ์ด๋ค.
์ปค๋ฅ์ ์ ์ง๋ Content-Length๋ฅผ ํตํด ์ด๋ค์ง๋๋ฐ ๊ทธ ์ด์ ๋ ์ํฐํฐ ๋ณธ๋ฌธ ๊ธธ์ด๋ฅผ ํตํด ํธ๋์ญ์ ์ค์ ๊ธฐ์กด ๋ฉ์์ง ์์์ ๊ณผ ๋์ ์ ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฌธ์ ๋ ๋ค๋ฅธ ๊ณณ์์ ์๊ธด๋ค.
์ค๋๋ ํ๋ฝ์ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, Connection ํค๋๋ฅผ ์ธ์ํ์ง ๋ชปํด keep-alive๋ฅผ ์์๋ฃ์ง ๋ชปํ๋ค. ๋ฌด์กฐ๊ฑด ์ ๋ฌ์ ์ํํ๋ ํ๋ฝ์ ํน์ฑ ์ ์ดํดํ์ง ๋ชปํ์ฑ๋ก ์์ฒญ ๊ทธ๋๋ก ๋ค์ ํ๋ฝ์๋ก ์ ๋ฌํ๊ณ ๊ณ์ ์ ๋ฌํ๋ค๊ฐ ์น ์๋ฒ๊น์ง๋ก ๋ฉ์์ง๊ฐ ๋์ฐฉํ๋ค.
๋ฌธ์ ์์ธ๋ Connection ํค๋๊ฐ hop ๋ณ ํค๋๊ธฐ ๋๋ฌธ์ ํ ๊ฐ์ ์ ์ก๋งํฌ์๋ง ์ ์ฉ๋๋ค๋ ์ ์ด๋ค. ์ด ๋ง์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ keep-alive๋ฅผ ๋งบ๋๊ฒ์๋๋ผ ํ๋ฝ์๋ ๋งบ๋ ๋ค๋ ๋ง์ด๋ค. ๊ทธ๋ฌ๋ฉด ํ๋ฝ์๋ keep-alive๋ฅผ ์ค ์ ์๋๋ฐ ์๋ฒ๋ keep-alive ์ปค๋ฅ์ ์ ๋งบ๊ณ ์์ผ๋ ๋ค์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์๋ ์๋ฒ์ ๋ค์ด๊ฐ์ง ์๊ณ ๋๊ธฐ์ํ(Hang)๋ก ๋ค์ด๊ฐ๋ฒ๋ฆฌ๊ณ ํ์์์์ด ๋ ๋๊น์ง ์ปค๋ฅ์ ์ ์ ์งํ๋ค.
=> ๋ฐฉ์ง์ฑ ์ ํ๋ฝ์ํํ Connection ํค๋ ๊ด๋ จ์ ์ผ์ฒด ์ ๋ฌํ์ง ์๋ ๊ฒ์ด๋ค.
Proxy-Connection
Proxy-Connection ํค๋๊ฐ ๋ฑ์ฅํ ์ดํ๋ก๋ ์ ์ํฉ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๊ฑฑ์ ํ์ง ์์๋ ๋๋ค. Proxy-Connection์ ํ์ฅํค๋๋ก ์ด๊ฑด ์น ์๋ฒ์ ์ ๋ฌํด๋ ๋ฌด์๋๋ ํค๋๋ค. dumb proxy๊ฐ ์๋ ํ๋ฝ์ ์๋ฒ(Connection ํค๋๋ฅผ ์ดํดํ๋)๊ฐ Proxy-Connectionํค๋์์ keep-alive๋ฅผ ์ฝ์ด Connection ํค๋๋ก ๋ฐ๊ฟ ์น ์๋ฒ๋ก ์ ๋ฌํ๊ฒ ๋๋ฉด Hang์์ด ์ ์๋ํ ๊ฒ์ด๋ค.
ํ์ง๋ง ๋ฌธ์ ๊ฐ ์์ง ์กด์ฌํ๋ค. ํ๋์ ํ๋ฝ์๋ง ์๋ฒ-ํด๋ผ์ด์ธํธ ์ฌ์ด์ ์กด์ฌํ๋ค๋ฉด ๋ฌธ์ ๊ฐ ์๋๋ฐ, ๋๊ฐ์ ํ๋ฝ์๋ฅผ ๊ฑฐ์น๋ค๊ณ ๊ฐ์ ํ๋ฉด ์ด์ ์ ์๋ ๋ฌธ์ ๊ฐ ์ฌ์ ํ ๋ฐ์ํ๋ค.
์ด๋ฐ ์ค๊ณ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ 1.1๋ฒ์ ๋ถํฐ persistent ์ปค๋ฅ์ ์ ์ง์ํ๋ค. default๊ฐ ๋ชจ๋ persistent ์ปค๋ฅ์ ์ผ๋ก ์ค์ ๋์ด์๊ณ ์ปค๋ฅ์ ์ ๋์ผ๋ ค๋ฉด ํค๋์ Connection: close๋ฅผ ๋ช ์ํด์ผ๋๋ค.
ํ์ดํ๋ผ์ธ ์ปค๋ฅ์
๊ณต์ TCP ์ปค๋ฅ์ ์ ํ๋ ๋๊ณ ๊ทธ๊ฑธ๋ก ๋ณ๋ ฌ HTTP ์์ฒญ์ ๋ณด๋ธ๋ค. ์ด๋ ์ฌ์ฉ๋๋ ์ปค๋ฅ์ ์ด ์ง์ ์ปค๋ฅ์ (persistent)์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์๋ต์ด ๋์ฐฉํ๊ธฐ ์ ์ ์์ฒญ์ ์๋ฒ ํ์ ์์๋๊ณ ์๋ต๋ ํ๋ฒ์ ์ฃผ๋ฅด๋ฅต ๋ฐ๋๋ค.
์ง์์ปค๋ฅ์ ์ด ์๋๋ฉด ํ์ดํ๋ผ์ธ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์๊ณ (์์๋ฒํธ๊ฐ ์์ด์ ์์๋ฅผ ์ ์งํ ์ ์๊ธฐ ๋๋ฌธ์) ์์ฒญ-์๋ต์์๋ ๋๊ฐ์์ผ๋๋ค. ๋ ํ์ดํ๋ผ์ด๋ ์ค๊ฐ์ ๋๊ธฐ๋ฉด, ๋ค์ ์ปค๋ฅ์ ์ ๋งบ์ด ์์ฒญ์ ์ด์ด๊ฐ ์ ์์ด์ผํ๋ค.
ํ์ดํ๋ผ์ธ์ผ๋ก ๋ณด๋ด๋ ์๋ฌ๊ฐ ๋์ง๋ ์์ง๋ง ์ํํ ์์ฒญ์ผ๋ก๋ POST๊ฐ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ณํ์ํค๋ ์์ฒญ์ด๋ค. ์ด๋ฐ ์์ฒญ์ ์๋ฒ ๋ฐ์ดํฐ์ ๋ณํ๋ฅผ ์ฃผ๊ธฐ ๋๋ฌธ์ ํ์ดํ๋ผ์ธ์ ํตํด ๋ณด๋ด๋ฉด ์ํํ๋ค. ์๋ฒ ๋ฐ์ดํฐ์ ์ํฅ์ ๋ผ์น์ง ์๋(๋ฑ๋ก ์ญ์ ๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ์ง๋ง POST๋ ์ค๋ณต์ผ๋ก ๋ค์ด๊ฐ ์๋ ์์ผ๋ฏ๋ก ๋งค๋ฒ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ์ ์๋ค.) ํธ๋์ญ์ ์ ๋ฉฑ๋ฑํ๋ค๊ณ ํ๋ค. GET์ด ๋ฉฑ๋ฑํ๋ค๊ณ ๋ ํ์ง๋ง ๋์ ์ธ ๊ฐ์ GETํด์ค๋ ๊ฒฝ์ฐ์๋ ๋น๋ฉฑ๋ฑ์ด๋ผ๊ณ ํ ์ ์๋ค.
์ปค๋ฅ์ ๋๊ธฐ
๋ณดํต ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ๋๊ธฐ๋ ๊ฒ ์ธ์๋, ์๋ฌ๊ฐ ์์ด๋ ์ธ์ ๋ ๋์ ์ ์๋ค. ์์ฒญ ๋ฐ์ดํฐ ์ ์ก ํ ์๋ต์ด ์ค๊ธฐ ์ ์ ์ปค๋ฅ์ ์ด ๋๊ธฐ๋ฉด ์๋ฒ์์ ์์ฒญ์ ์ผ๋ง๋ ์ฒ๋ฆฌํ๋์ง ์ ํ ์ ์ ์๋ค. ๊ทธ๋๋ ๋์ ์ ์๋ค...
HTTP ์๋ต์๋ Content-Length ํค๋๊ฐ ์๊ณ , ์ด ํฌ๊ธฐ์ ๋ณด๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ ์ ์ก์ด ์์ง ๋จ์๋์ง(์ปค๋ฅ์ ์ ์ ์งํด์ผํ๋์ง) ํ๋จํ๋ ๊ทผ๊ฑฐ๊ฐ ๋๊ธฐ๋ ํ๋ค.
์ฐ์ํ ์ปค๋ฅ์ ๋๊ธฐ
์ ํ๋ฆฌ์ผ์ด์ ์ TCP ์ ๋ ฅ ์ฑ๋๊ณผ ์ถ๋ ฅ ์ฑ๋ ์ค ํ ๊ฐ๋ง ๋๊ฑฐ๋ ๋ ๋ค ๋์ ์ ์๋ค.
- ์ ์ฒด ๋๊ธฐ: close()๋ฅผ ํธ์ถํ์ฌ TCP ์ปค๋ฅ์ ์ ์ ๋ ฅ ์ฑ๋๊ณผ ์ถ๋ ฅ ์ฑ๋์ ์ปค๋ฅ์ ์ ๋ชจ๋ ๋์
- ์ ๋ฐ ๋๊ธฐ: shutdown()์ ํธ์ถํ์ฌ ์ ๋ ฅ ์ฑ๋์ด๋ ์ถ๋ ฅ ์ฑ๋ ์ค์ ํ๋๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๋์
ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฏธ ๋๊ธด ์ ๋ ฅ ์ฑ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ฉด connection reset by peer ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ , ๋๋ถ๋ถ์ ์ด์์ฒด์ ์์ ์ด๋ฅผ ์ฌ๊ฐํ ์๋ฌ๋ก ์ทจ๊ธํ์ฌ ์์ง ์ฝํ์ง ์์ ๋ฒํผ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ญ์ ํ๋ค. ํ์ดํ๋ผ์ธ ์ปค๋ฅ์ ์์๋ ์ด ์ํฉ์ด ํนํ ๋ ์ ํ๋๋ค. ์ด๊ฒ ๋ฆฌ์ ์๋ฌ๋ค. ๊ทธ๋์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ ๋ณด๋ด์ง ์์ ๊ฒ์์ ํ์ ํ ์ ์๋ค๋ฉด ์ปค๋ฅ์ ์ ์ ๋ ฅ์ฑ๋์ ๋๋ ๊ฑด ์ํํ๋ค.
์๋ฌ ๋ฐ์์ ์์ํ๊ธฐ ์ํด ‘์ ๋ฐ ๋๊ธฐ’๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ์ด๊ฑธ ์ฐ์ํ๋ค๊ณ (?) ํํํ๋ค. ๋ณดํต ์์ ์ ์ถ๋ ฅ ์ฑ๋์ ๋๊ณ ๋ค๋ฅธ ์ชฝ์ ์ถ๋ ฅ ์ฑ๋์ด ๋๊ธฐ๋ ๊ฑธ ๊ธฐ๋ค๋ฆฐ๋ค. ์ ์ชฝ์์ ๋ชจ๋ ๋์ด๋๋ฉด ๋ฆฌ์ ์ํ ์์ด ์ปค๋ฅ์ ์ด ์์ ํ ์ข ๋ฃ๋๋ค. ๋ฌธ์ ๋ ์๋๋ฐฉ์ด ์ ๋ฐ๋๊ธฐ๋ฅผ ๊ตฌํํ์ง ์์ ๊ฒฝ์ฐ์ธ๋ฐ ์ด ์ํฉ์ ๋๋นํ๋ ค๋ฉด ์ก์ ์ธก์์ ์ ๋ฐ๋๊ธฐ๋ฅผ ํ๊ณ , ๋ค๋ฅธ ์ชฝ ์ ๋ ฅ์ฑ๋์ ๋ํ ์ํ๊ฒ์ฌ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํ๋ฉด์ ๋๊ฒผ๋ ํ์ธํด์ผ๋๋ค. ๋ง์ฝ ์ ๋ ฅ ์ฑ๋์ด ํน์ ํ์์์ ๋ด ๋์ด์ง์ง ์์ผ๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฆฌ์์ค ๋ณดํธ๋ฅผ ์ํด ๊ฐ์ ๋ก ์ปค๋ฅ์ ์ ๋์ ์๋ ์๋ค.
๋์์ด ๋๋ค๋ฉด ๋๊ธ์ด๋ ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์ธ์! ๋ก๊ทธ์ธ ์ํด๋ ๋ฉ๋๋ค ^_^
'๐๐๏ธ > HTTP ์๋ฒฝ ๊ฐ์ด๋๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[6์ฅ] 6.1~ (0) | 2024.02.29 |
---|---|
[5์ฅ] 5.1~5.10 (0) | 2024.02.28 |
[3์ฅ] 3 ~ 3.3 (0) | 2024.02.14 |
[1์ฅ ~ 2์ฅ] 1.7 ~ 2.4 (1) | 2024.02.12 |
[1์ฅ] 1.1 ~ 1.6 (1) | 2024.02.06 |