Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ์ ๊ทํ ์ฅ๋จ์
- ์๊ณ ๋ฆฌ์ฆ 1000000007 ๋๋๊ธฐ
- ํ๋ก๊ทธ๋๋จธ์ค 142086
- ๋ฐฑํธ๋ํน
- MySQL LEFT()
- ๋น๋๊ด๋ฆฌ๋๊ตฌ
- ๋ชจ๋๋ก ์ฐ์ฐ
- ๊ธฐ์ฌ๋จ์์ ๋ฌด๊ธฐ ํ์ด์ฌ
- ํ๋ก์ธ์ค
- Python 1000000007
- ์คํ๋ง ๋ถํธ์ AWS๋ก ํผ์ ๊ตฌํํ๋ ์น ์๋น์ค
- Spring Security 5
- RDBMS์ NoSQL ์ฐจ์ด
- www.google.com๏ปฟ ๊ฒ์ํ๋ฉด ์ผ์ด๋๋ ์ผ
- ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ ํ์ด์ฌ
- finalize ์๋ ํธ์ถ
- ๊ธฐ์ฌ๋จ์์ ๋ฌด๊ธฐ ์ ๊ณฑ๊ทผ
- ์น ๋์ ๊ณผ์
- OOP์ ํน์ง
- Spring Security ๋ฒ์ ๋ฌธ์
- ์ด์ฝํ 2021
- PCB
- java ๋๊ธฐํ
- build.gradle ์ค์ ์ค๋ฅ
- ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ ํ์ด์ฌ ์๊ฐ์ด๊ณผ
- MySQL RIGHT()
- commit message convention
- ๋น๋๊ด๋ฆฌ๋๊ตฌ ์ฐจ์ด
- @RequestMapping๊ณผ @GetMapping
- DDL DML DCL ์ฐจ์ด
Archives
- Today
- Total
BUILD_SSO
[Network/๋คํธ์ํฌ] HTTP ๋ณธ๋ฌธ
HTTP
๐๐ปHTTP์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- HTTP(Hyper Text Transfer Protocol)์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ํ๋กํ ์ฝ์ด๋ฉฐ, ์๋ฒ/ํด๋ผ์ด์ธํธ ๋ชจ๋ธ์ ๋ฐ๋ฆ ๋๋ค.
- HTTP๋ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ์ง ์๋ Stateless์ ํน์ง๊ณผ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ง๋ ์๋ต์ ๋ณด๋ธ ํ ์ฐ๊ฒฐ์ ๋๋ Connectionless์ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- 80๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ค. http์๋ฒ๊ฐ 80๋ฒ ํฌํธ์์ ์์ฒญ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ผ๋ฉฐ, ํด๋ผ์ด์ธํธ๋ 80๋ฒ ํฌํธ๋ก ์์ฒญ์ ๋ณด๋ธ๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์ ํ๋กํ ์ฝ/ TCP/IP์์์ ์๋ํ๋ค.
- method, path, version, headers, body๋ฑ์ผ๋ก ๊ตฌ์ฑ๋์ด์๋ค.
๐๐ปStateless์ Connectionless์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
๋ฌด์ํ Stateless
- stateful์์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ด์ ์ํ๋ฅผ ๋ณด์กดํ๋ค๋ ์๋ฏธ์ด๋ค. ๋ฐ๋๋ก ๋ฌด์ํ(stateless)๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ด์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋๋ค๋ ์๋ฏธ์ด๋ค.
- stateless๋ ์ํ๋ฅผ ๋ณด๊ดํ์ง ์์ผ๋ฏ๋ก ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ด๋ ์๋ฒ๊ฐ ์๋ตํด๋ ์๊ด์ด ์๋ค. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ํญ ์ฆ๊ฐํด๋ ์๋ฒ๋ฅผ ์ฆ์คํด ํด๊ฒฐํ ์ ์๋ค.
- ํ์ง๋ง, ์ด์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๊ธฐ ๋๋ฌธ์ ๋จ์ํ ๋ก๊ทธ์ธ๋ง ๋ณด๋๋ผ๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ์ํ๋ฅผ ์๋ฒ์ ์ ์ง์์ผ ์ฃผ์ด์ผ ํ๋ค. ์ด ๊ฒฝ์ฐ์๋ ๋ธ๋ผ์ฐ์ ์ฟ ํค๋ ์๋ฒ ์ธ์ ๋ฑ์ ์ฌ์ฉํด ์ํ๋ฅผ ์ ์งํ๋ค.
๋น์ฐ๊ฒฐ์ฑ Connectionless
- ๋น์ฐ๊ฒฐ์ฑ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํ๊ณ ์๋ต์ ๋ฐ์ผ๋ฉด ๋ฐ๋ก TCP/IP ์ฐ๊ฒฐ์ ๋์ด ์ฐ๊ฒฐ์ ์ ์ง ํ์ง ์๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ํตํด ์๋ฒ์ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ์ ๋ง์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์๋ ๋์ํ ์ ์๊ฒ ํ๋ค.
๐๐ป์ HTTP๋ Stateless ๊ตฌ์กฐ๋ฅผ ์ฑํํ๊ณ ์์๊น์?
- ์๋ฒ ํ์ฅ์ฑ(์ค์ผ์ผ ์์)์ด ์ข๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ฌด์ํ ํ๋กํ ์ฝ์ ๋ง ๊ทธ๋๋ก ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๊ธฐ ๋๋ฌธ
๐๐ปHTTP Persistence Connection ์ด ๋ฌด์์ธ๊ฐ์?
- HTTP Connectionless์ ํ๊ณ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ค.
- Connectionless๋ ์ฐ๊ฒฐ์ด ๋์ด์ง์ ๋ฐ๋ผ ์๋ก ์ฐ๊ฒฐ๋ ๋ TCP/IP ์ฐ๊ฒฐ์ ์๋ก ๋งบ์ด์ผ ํ๋ฏ๋ก 3-way handshake์ ๋ฐ๋ฅธ ์๊ฐ์ด ์ถ๊ฐ๋๋ฉฐ, HTML ๋ฟ๋ง ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ, CSS, ์ด๋ฏธ์ง ๋ฑ ์ ๋ง์ ์์์ด ํจ๊ป ๋ค์ด๋ก๋ ๋๋ค๋ ํ๊ณ๊ฐ ์์๋ค.
- ์ด๋ฌํ ๋ฌธ์ ๋ฅผ HTTP ์ง์ ์ฐ๊ฒฐ(Persisten Connections)๋ก ํด๊ฒฐํ๋ค. ์ง์ ์ฐ๊ฒฐ์ ์์ฒญ์ ๋ฐ๋ผ ์ฐ๊ฒฐ์ด ๋ ์ดํ ์ผ์ ์๊ฐ ์ฐ๊ฒฐ์ ์ ์งํ๊ฑฐ๋ ์ฌ๋ฌ ๊ฐ์ ์์ฒญ(HTML, ์๋ฐ์คํฌ๋ฆฝํธ, ์ด๋ฏธ์ง ๋ฑ)์ ๋ํ ์๋ต์ด ๋ค ์ฌ ๋ ๊น์ง ๊ธฐ๋ค๋ฆฐ ํ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ๊ฒ์ด๋ค.
๐๐ปHTTP ์์ฒญ/์๋ต ํค๋
- HTTPํค๋๋, ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์์ฒญ ๋๋ ์๋ต์ผ๋ก ๋ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ์กํ ์ ์๋๋ก ํด์ค๋ค.
- HTTP ํค๋๋ 4๊ฐ์ง ์ข
๋ฅ๊ฐ ์์ผ๋ฉฐ ๋ค์๊ณผ ๊ฐ๋ค.
- General header : ์์ฒญ๊ณผ ์๋ต ๋ชจ๋์ ์ ์ฉ๋์ง๋ง ๋ฐ๋์์ ์ต์ข ์ ์ผ๋ก ์ ์ก๋๋ ๋ฐ์ดํฐ์๋ ๊ด๋ จ์ด ์๋ ํค๋.
- Request header : ํ์น๋ ๋ฆฌ์์ค๋ ํด๋ผ์ด์ธํธ ์์ฒด์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ํฌํจํ๋ ํค๋.(๋ด๊ฐ ๋ณด๋ด๋ ๋ฉ์ธ์ง์ ํค๋)
- Response header : ์์น ๋๋ ์๋ฒ ์์ฒด์ ๋ํ ์ ๋ณด(์ด๋ฆ, ๋ฒ์ ๋ฑ)์ ๊ฐ์ด ์๋ต์ ๋ํ ๋ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ๊ฐ๋ ํค๋.(๋ด๊ฐ ๋ฐ์ ๋ฉ์ธ์ง์ ํค๋)
- Entity header: ์ปจํ ์ธ ๊ธธ์ด๋ MIME ํ์ ๊ณผ ๊ฐ์ด ์ํฐํฐ ๋ฐ๋์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ํฌํจํ๋ ํค๋.(Entity Header๋ request, response์ ์ํด์๋ค)
๐๐ปHTTPS์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- HTTPS๋ HTTP์ ๋ฐ์ดํฐ ์ํธํ๊ฐ ์ถ๊ฐ๋ ํ๋กํ ์ฝ์ด๋ค. ์ฆ, HTTP + SSL
- HTTP์ ๋ค๋ฅด๊ฒ 443๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉ, ๋คํธ์ํฌ ์์์ ์ค๊ฐ์ ์ 3์๊ฐ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋๋ก ์ํธํ๋ฅผ ์ง์ํ๋ค.
- ๋์นญํค ์ํธํ์ ๋น๋์นญํค ์ํธํ๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ฉด์ ๋น ๋ฅธ ์ฐ์ฐ์๋์ ์์ ์ฑ์ ๋ชจ๋ ์ป์๋ค.
๐๐ปHTTP vs HTTPS
- HTTP๋ ํ๋ฌธ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ํ๋กํ ์ฝ์ด๊ธฐ ๋๋ฌธ์, HTTP๋ก ์ค์ํ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉด ์ 3์์ ์ํด ์กฐํ๋ ์ ์๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด HTTP์ ์ํธํ๋ฅผ ์ถ๊ฐํ HTTPS๊ฐ ํ์ํ๋ค.
- HTTPS๋ SSL์ ์น์ HTTP๋ผ๊ณ ํ ์ ์๋ค.
๐๐ปHTTP์ HTTPS ๋์ ๊ณผ์
HTTP
- ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์ URL์ ์ ๋ ฅ
- ๋ธ๋ผ์ฐ์ ๋ DNS๋ฅผ ํตํด ์๋ฒ์ ์ง์ง ์ฃผ์๋ฅผ ์ฐพ๋๋ค.
*DNS: ์ด์ ๊น์ง๋ ์ฐ๋ฆฌ๊ฐ IP๋ฅผ ์ด์ฉํด์ ํต์ ์ ํด๋ณด์๋ค. ํ์ง๋ง IP๋ ๊ธฐ์ตํ๊ธฐ๊ฐ ํ๋ค๊ณ ๋ณ๊ฒฝ๋ ์ ์๋ค. ๊ทธ๋์ DNS๋ผ๋๊ฒ ์๋ค. DNS๋ ์ค๊ฐ์ ์ ํ๋ฒํธ๋ถ๊ฐ์ ์๋ฒ๋ฅผ ์ ๊ณตํด์ค๋ค. ๋๋ฉ์ธ ๋ช ์ ๋ฑ๋กํ๊ณ ๊ทธ๊ฒ์ IP์ฃผ์๋ก ๋ฐ๊ฟ ์ ์๋ค. - HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ HTTP ์์ฒญ ๋ฉ์ธ์ง๋ฅผ ์์ฑํจ
- TCP/IP ์ฐ๊ฒฐ์ ํตํด HTTP์์ฒญ์ด ์๋ฒ๋ก ์ ์ก๋จ
- ์๋ฒ๋ HTTP ํ๋กํ ์ฝ์ ํ์ฉํด HTTP ์๋ต ๋ฉ์ธ์ง๋ฅผ ์์ฑํจ
- TCP/IP ์ฐ๊ฒฐ์ ํตํด ์์ฒญํ ์ปดํจํฐ๋ก ์ ์ก
- ๋์ฐฉํ HTTP ์๋ต ๋ฉ์ธ์ง๋ ์นํ์ด์ง ๋ฐ์ดํฐ๋ก ๋ณํ๋๊ณ , ์น ๋ธ๋ผ์ฐ์ ์ ์ํด ์ถ๋ ฅ๋์ด ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๊ฒ ๋๋ค.
HTTPS
- ๊ณต๊ฐํค ์ํธํ๋ฐฉ์์ ์ฌ์ฉ, ๋๊ฐ์ ํค๋ฅผ ๊ฐ์ง๋ค.
- aํค๋ก ์ํธํ bํค๋ก ๋ณตํธํ(๋ฐ๋)๊ฐ ๊ฐ๋ฅํ๋ฉฐ ๋ ๊ฐ์ ํค์ค ํ๋๋ ๊ณต๊ฐํค์ด๊ณ ํ๋๋ ๋น๊ณต๊ฐํค์ด๋ค.
- ๋น๊ณต๊ฐํค๋ privateํ ์ฌ์ฉ์๊ฐ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๊ณต๊ฐํค๋ ํ์ธ์๊ฒ ๊ณต๊ฐ๋๋ ํค์ด๋ค.
- ์ ์ ๊ฐ ๊ณต๊ฐํค๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ ๋ค ๋น๊ณต๊ฐํค์ ์์ ์์๊ฒ ์ ๋ฌํ๋ฉด ๋น๊ณต๊ฐํค์ ์์ ์๋ ๋น๊ณต๊ฐํค๋ก ๋ณตํธํํ์ฌ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ป๋๋ค.
- https๋ฅผ ์ด์ฉํ๋ฉด ์ํธํ/๋ณตํธํ์ ๊ณผ์ ๋๋ฌธ์ http๋ณด๋ค ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์๋ค.(์ค๋๋ ์๋ ์ฐจ์ด๋ฅผ ๊ฑฐ์ ๋ชป๋๋ ์ ๋์ด๊ธดํ๋ค.)
๐๐ปHTTPS์์ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
- ๋์นญํค ๋ฐฉ์๊ณผ ๊ณต๊ฐํค ๋ฐฉ์์ ํผ์ฉํ์ฌ ์๋ฒ์ ์ ์์ ๋ณด์ฆํ๊ณ , ๋ฐ์ดํฐ ํต์ ์ ์ํธํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
๐๐ป๊ณต๊ฐํค(๋น๋์นญํค)์ ๋์นญํค์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
๋์นญํค์ ๋น๋์นญํค๋ ์๋ฐฉํฅ ์ํธํ ๋ฐฉ์์ ๋๋ค.
๋์นญํค
- ๋์นญํค๋ ์ํธํ์ ๋ณตํธํ์ ๊ฐ์ ์ํธ ํค๋ฅผ ์ฐ๋ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค.
์ด๋ ์ค๊ฐ์ ๋๊ตฐ๊ฐ ์ํธ ํค๋ฅผ ๊ฐ๋ก์ฑ๋ฉด ์ํธํ๋ ์ ๋ณด๊ฐ ์ ์ถ๋ ์ ์๋ค๋ ๋จ์ ์ด ์๋๋ฐ, ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ณด์ํ ์๋ก์ด ๋ฐฉ์์ด ๊ณต๊ฐํค(๋น๋์นญํค)์ ๋๋ค.
๊ณต๊ฐํค(๋น๋์นญํค)
- ๊ณต๊ฐํค(๋น๋์นญํค)๋ ์ํธํ์ ๋ณตํธํํ ๋ ํค๋ฅผ ์๋ก ๋ค๋ฅธ ํค๋ก ์ฌ์ฉํ๋ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค.
ํ์ธ์๊ฒ ์ ๋ ๋ ธ์ถ๋์ด์๋ ์๋๋ ๊ฐ์ธํค(private key)์ ๊ณต๊ฐ์ ์ผ๋ก ๊ฐ๋ฐฉ๋์ด ์๋ ๊ณต๊ฐํค(public key)๋ฅผ ์์ผ๋ก ์ด๋ฃฌ ํํ์ ๋๋ค.
๐๐ป์ HTTPS Handshake ๊ณผ์ ์์๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๊น์?
- ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์์ ํ ํต์ ์ ๋ณด์ฅํ๊ธฐ ์ํจ์ด๋ค.
์ธ์ฆ์๋ SSL/TLS ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋๋ฐ, ์ด ํ๋กํ ์ฝ์ ์ํธํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ ๋๊ฐ ์ด ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋๋ค.
๐๐ปSSL์ TLS์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ์?
- SSL์ด๋, ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฌ์ด์ ๊ตํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ๋ณด์์ ์ ์งํ๋ ํ์ค ๊ธฐ์ ์ด๋ค.
- 1999๋ ์ SSL 3.0์ ์ ๊ทธ๋ ์ด๋ ๋ฒ์ ์ผ๋ก TLS 1.0์ด ๊ณต๊ฐ๋์๋ค. ์ดํ SSL์์ TLS๋ก ๋ช ์นญ์ด ๋ณ๊ฒฝ๋์์ผ๋, SSL์ด๋ผ๋ ๋ช ์นญ์ด ์์ง๊น์ง ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉ๋๊ณ ์์ด์ TLS/SSL์ ํผ์ฉํ์ฌ ์ฌ์ฉํ๋ค๊ณ ํ๋ค.*์ถ๊ฐ ํ์ต์ด ํ์ํ๋ค,,, SSL๊ณผ TLS์ ์ฐจ์ด๋ ๋ช ํํ๊ฒ ๊ท์ ํ ๊ฒ์ ์ฐพ์๋ณด์ง ๋ชปํ๋ค. ๋ค๋ง, ๋ง์ ๊ณณ์์ ๋ฒ์ ์ ์ฐจ์ด๋ผ๊ณ ์ค๋ช ํ๊ณ ์๋ค.
๐๐ปHTTP/1.1๊ณผ HTTP/2์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
HTTP/1.1
- http1.1์ 1997๋ ๋์๊ณ , ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ด ๋ค ๋ค์ด๊ฐ์๋ค.
- http1.1์ ๊ธฐ๋ณธ์ ์ผ๋ก connection๋น ํ๋์ ์์ฒญ(๊ณผ ์๋ต)์ ์ฒ๋ฆฌํ๋ค. -> ๋์์ ์ก์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ ํ๋์ ์์ฒญ์ ๋ํ ์๋ต์ด ์จ ํ ๋ค์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค. (network latency๋ฐ์)
- http pipelining์ด ๋์
๋์๋ค.
*http pipelining: TCP์์ ๋ ๊ฐ ์ด์์ http ์์ฒญ์ ๋ด์ network latency๋ฅผ ์ค์ด๋ ๋ฐฉ์ - ํ์ง๋ง, ์ ํํ ๊ตฌํ์ด ํ๋ค๊ณ HOL(head of line) blocking(=์์ ์์ฒญ์ ์ํด ๋ค์ ์์ฒญ์ด ์ง์ฐ๋๋๊ฒ)์ด ๋ฐ์ํ๋ค.
- RTT(round trip time)์ฆ๊ฐ, (์๋ฐฉํฅ ์ง์ฐ) -> ํค๋๊ฐ ํฌ๋ค(ํนํ ์ฟ ํค ๋๋ฌธ์)
HTTP/2.0
- http1.1์ด ๋๋ ค์ ๋ฒ์ ์ ๊ฐ์ ํ๊ฒ 2.0์ด๋ค.
- http1.1์ Connection Keep-Alive, Pipelining์ ๊ฐ์
- http2.0์ด ๋นจ๋ผ์ง์ด์ : multiplexed streams(ํ connection์ ์ฌ๋ฌ ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋์์ ์ฃผ๊ณ ๋ฐ์ ์ ์์) / ์์ฒญ์ด ์ปค๋ฅ์ ์์์ ๋ค์คํ ๋๋ฏ๋ก HOL Blocking์ด ๋ฐ์x / ์์ฒญ ๋ฆฌ์์ค๊ฐ์ ์์กด๊ด๊ณ๋ฅผ ์ค์ / ํ๋กํ ์ฝ ํ์ ๋ฉ์ปค๋์ฆ
- ํด๋ผ์ด์ธํธ๊ฐ ๋๋ฒ์ ์์ฒญ์ ๋ณด๋ธ๋ค๊ณ ๊ฐ์ ํ๋ฉด HTTP/1.x์ ๊ฒฝ์ฐ ๋๊ฐ์ ์์ฒญ Header์ ์ค๋ณต ๊ฐ์ด ์กด์ฌํด๋ ๊ทธ๋ฅ ์ค๋ณต ์ ์กํ๋ค. ํ์ง๋ง HTTP/2์์ Header์ ์ค๋ณต๊ฐ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ Static/Dynamic Header Table ๊ฐ๋ ์ ์ฌ์ฉํ์ฌ ์ค๋ณต Header๋ฅผ ๊ฒ์ถํ๊ณ ์ค๋ณต๋ Header๋ index๊ฐ๋ง ์ ์กํ๊ณ ์ค๋ณต๋์ง ์์ Header์ ๋ณด์ ๊ฐ์ Huffman Encoding ๊ธฐ๋ฒ์ผ๋ก ์ธ์ฝ๋ฉ ์ฒ๋ฆฌ ํ์ฌ ์ ์กํ๋ค.
*HTTP/3.0
- ๋ฐ์ ์ฌ์ ํ์งํ์ค: TCP๋์ ์ UDP์ฌ์ฉ, ์ฑ๋ฅ๊ฐ์
- http3์ QUIC๋ผ๋ ํ๋กํ ์ฝ ์์์ ๋์๊ฐ๋ http์ธ๋ฐ, QUIC์ quick UDP internet connection์ ์ฝ์๋ก UDP๋ฅผ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ์ด๋ค.
- tcp๋ 3way hand shake๋ฑ ์ค๋ฒํค๋์ HOLB๋ฑ์ ๋ฌธ์ ๋ฅผ ํผํ ์ ์์. QUIC์ ๊ทธ ๊ณผ์ ์ ์ต์ ํ ํ๋๊ฒ์ ์ด์ ์ ๋์ด ์ค๊ณ๋์๋ค.
- UDP๋ ๋ฐ์ดํฐ๊ทธ๋จ๋ฐฉ์์ ์ฌ์ฉํ๋ ํ๋ก์ฝํจ์ด๊ธฐ์ ๊ฐ๊ฐ์ ํจํท ๊ฐ ์์๊ฐ ์กด์ฌํ์ง ์๋ ๋ ๋ฆฝ์ ์ธ ํจํท์ด๋ค.
- UDP๋ TCP์ ๋นํด ํค์ด๊ฐ ๋ง์ด ๋น์ด์๊ธฐ์, ์ปค์คํฐ๋ง์ด์งํ ์ ์๋ ์ฌ์ง๊ฐ ๋ง๊ณ ์ด๋ฅผ ์ด์ฉํด ๊ฐ๋ฐ์๊ฐ ๊ตฌํ์ ์ด๋ป๊ฒ ํ๋์๋ฐ๋ผ ์ ๋ขฐ์ฑ ํ๋ณด๊ฐ ๋ฌ๋ผ์ง๋ค.
์ฆ, http1.1๊ณผ http2.0์ ์๋์ ์ฐจ์ด์ HOL ๊ฐ์ ์ฌํญ์ด ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
๐๐ปTCP์ keep-alive์ HTTP์ keep-alive์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ์?
๋ฉ์๋ Method
๐๐ปHTTP Method ์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
๋ฉ์๋๋, ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ญ๊ฐ ์์ฒญ์ ํ ๋ ๊ธฐ๋ํ๋ ํ๋์ ์ ์ํด๋์ ๊ฒ์ด๋ค.
- GET: ๋ฆฌ์์ค ์กฐํ
- POST: ์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ฃผ๋ก ๋ฑ๋ก์ ์ฌ์ฉ
- PUT: ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ญ๊ฐ๋ฅผ ๋ณด๋ผ ๋ ๋ฎ์ด์ฐ๊ธฐ, ๋ฆฌ์์ค ๋์ฒด → ๋ฆฌ์์ค๋ฅผ ๊ฐ์์น์ฐ๋ ๊ฒ์ด๋ฏ๋ก ์์ ์๋ ์ ํฉํ์ง ์๋ค. ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ฑํ๋ค.
- PATCH: ์์ (๋ฆฌ์์ค ๋ถ๋ถ ๋ณ๊ฒฝ)
- DELETE: ์ญ์ (๋ฆฌ์์ค ์ญ์ )
๐๐ปGET๊ณผ POST์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
Get
- GET์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํค๋์ ์ถ๊ฐํ์ฌ ์ ์กํ๋ ๋ฐฉ์์ด๋ค.
- URL์ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋๋ฏ๋ก ๋ณด์์ ์ผ๋ก ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์๋ ์๋ฉ๋๋ค.
Post
- POST๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ ๋๋ ์์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋์ ์ถ๊ฐํ์ฌ ์ ์กํ๋ ๋ฐฉ์์ด๋ค.
- ์์ ํ ์์ ํ๋ค๋ ๊ฒ์ ์๋์ง๋ง URL์ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋์ง ์์ GET ๋ณด๋ค๋ ์์ ํ๋ค๋ ํน์ง์ด ์๋ค.
๐บHTTP 1.1 ์ดํ๋ก, GET์๋ Body์ ๋ฐ์ดํฐ๋ฅผ ์ค์ ์ ์๊ฒ ๋์์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ ์์ง๋ ์ด๋ฐ ๋ฐฉ์์ ์ง์ํ๋ ๊ฒ์ผ๊น์?
- ๋ณด์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๐๐ปPOST vs PUT, PATCH
POST vs PUT
- ๋์ผํ ์์ฒญ์ ์ฌ๋ฌ๋ฒ ๋ณด๋ด๋ ๊ฒฐ๊ณผ PUT์ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ์ ์ ์งํ๋ ๋ฐ๋ฉด(๋ฉฑ๋ฑ์ ์ด๋ค) POST๋ ๋ณด๋ธ ์์ฒญ์ ๋ฐ๋ผ ๋ฆฌ์์ค๊ฐ ์์ฑ์ด ๋๋ค(๋ฉฑ๋ฑ์ด ์๋๋ค).
PATCH์ PUT์ ์ฐจ์ด๋?
- PATCH ๋ฉ์๋๋ CRUD์ U(Update)์ ์ํ๋ฉฐ, PUT๊ณผ ์ ์ฌํ์ง๋ง ๋ฉฑ๋ฑ์ฑ์ ๊ฐ์ง์ง ์์ ๋์ผํ ์์ฒญ์ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ผ๊ธฐํ ์ ์๋ค.
- PATCH๋ PUT๊ณผ๋ ๋ค๋ฅด๊ฒ ์์์ ๋ถ๋ถ์ ๊ต์ฒดํ๋ค. ์ฆ, ๋ชจ๋ ํ๋๋ฅผ ๋ถ๋ฌ์ค์ง ์์๋ ์ผ๋ถ๋ถ์ ํ๋๋ง ์์ฑํ์ฌ ๋ถ๋ถ ๊ต์ฒด๊ฐ ๊ฐ๋ฅํ๋ค.
๐๐ป๋ฉฑ๋ฑ์ฑ์ด๋?, HTTP Method์ ๋ฉฑ๋ฑ์ฑ์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
๋ฉฑ๋ฑ์ฑ
- ์ฌ์ ์ ์ ์๋ก, ๋ฉฑ๋ฑ๋ฒ์น(ๅช็ญๆณๅ) ๋๋ ๋ฉฑ๋ฑ์ฑ(ๅช็ญๆง, ์์ด: idempotent)์ ์ํ์ด๋ ์ ์ฐํ์์ ์ฐ์ฐ์ ํ ์ฑ์ง์ ๋ํ๋ด๋ ๊ฒ์ผ๋ก, ์ฐ์ฐ์ ์ฌ๋ฌ ๋ฒ ์ ์ฉํ๋๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง์ง ์๋ ์ฑ์ง์ ์๋ฏธํ๋ค.
- ์ฆ, ์ฌ๋ฌ๋ฒ ์์ฒญ/์์
์ ์ํํด๋ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์์ ๋ปํ๋๋ฐ,
์ด๋ฐ ์ ์์, GET์ ๋ฆฌ์์ค๋ฅผ ์กฐํํ๋ค๋ ์ ์์ ์ฌ๋ฌ ๋ฒ ์์ฒญํ๋๋ผ๋ ์๋ต์ด ๋๊ฐ์ ๊ฒ์ด๊ณ , ๋ฐ๋๋ก POST๋ ๋ฆฌ์์ค๋ฅผ ์๋ก ์์ฑํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ ๋ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ๋ฉฑ๋ฑ์ด ์๋๋ผ๊ณ ๋ณผ ์ ์๋ค.
์ํ์ฝ๋ Status code
๐๐ปHTTP ์๋ต์ฝ๋์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- 1XX (์ ๋ณด/์กฐ๊ฑด๋ถ ์๋ต) : ์์ฒญ์ ๋ฐ์์ผ๋ฉฐ ์์ ์ ๊ณ์ํ๋ค.
- 2XX (์ฑ๊ณต) : ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋์์ ์์ ํ์ฌ ์ดํดํ๊ณ ์น๋ํ์ผ๋ฉฐ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌํ์์ ๊ฐ๋ฆฌํจ๋ค.
- 3XX (๋ฆฌ๋ค์ด๋ ์
์๋ฃ) : ํด๋ผ์ด์ธํธ๋ ์์ฒญ์ ๋ง์น๊ธฐ ์ํด (์ ์ ์์ด์ ํธ์)์ถ๊ฐ ๋์์ ์ทจํด์ผ ํ๋ค.
- 4XX (์์ฒญ(ํด๋ผ์ด์ธํธ) ์ค๋ฅ) : ํด๋ผ์ด์ธํธ์ ์ค๋ฅ๊ฐ ์์์ ๋ํ๋ธ๋ค. ์ฆ, (ํด๋ผ์ด์ธํธ ์ธก์)๋๊ฐ์ ์ฌ์๋๋ ๋ฌด์กฐ๊ฑด ์คํจํ๋ค.
- 5XX (์๋ฒ ์ค๋ฅ) : ์๋ฒ๊ฐ ์ ํจํ ์์ฒญ์ ๋ช ๋ฐฑํ๊ฒ ์ํํ์ง ๋ชปํ์์ ๋ํ๋ธ๋ค. (์๋ฒ์ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์๋ํ๋ฉด ์ฑ๊ณตํ ์๋ ์์)
๐๐ป200(ok) ์ 201(created) ์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
- 200 : ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌํ์ ๋ ์ฐ์ธ๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ๋ณผ ์ ์๋ HTTP ์ํ
- 201 : POST ๋ PUT ์ผ๋ก ๊ฒ์๋ฌผ ์์ฑ์ด๋ ํ์ ๊ฐ์ ๋ฑ์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ์์ฑํ๋(์ฐ๋, ๋ฃ๋) ์์ ์ด ์ฑ๊ณตํ์ ๋ ๋ฐํํ๋ ๊ฒ
๐๐ป401(Unauthorized) ์ 403(Forbidden)์ ์๋ฏธ์ ์ผ๋ก ์ด๋ค ์ฐจ์ด๊ฐ ์๋์?
401
- ์ํ: ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ฆ๋์ง ์์๊ฑฐ๋, ์ ํจํ ์ธ์ฆ ์ ๋ณด๊ฐ ๋ถ์กฑํ์ฌ ์์ฒญ์ด ๊ฑฐ๋ถ๋จ
- ์์: ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ๋์ง ์์ ๊ฒฝ์ฐ
403
- ์ํ: ์๋ฒ๊ฐ ํด๋น ์์ฒญ์ ์ดํดํ์ง๋ง, ๊ถํ์ด ์์ด ์์ฒญ์ด ๊ฑฐ๋ถ๋จ
- ์์: ์ฌ์ฉ์๊ฐ ๊ถํ์ด ์๋ ์์ฒญ์ ํ๋ ๊ฒฝ์ฐ
๐บpre-defined ๊ฐ ์ ๋ status code?
์ ์๋์ง์์ ์ํ์ฝ๋? ๋ฌด์จ ์๋ฏธ์ธ๊ฑด์ง ๋ชจ๋ฅด๊ฒ ๋ค
'Tech Interview' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Network/๋คํธ์ํฌ] OSI 7๊ณ์ธต (0) | 2023.04.19 |
---|---|
[Network/๋คํธ์ํฌ] CORS, Frame/Packet/Segment/Datagram (0) | 2023.04.19 |
[Data Structure/์๋ฃ๊ตฌ์กฐ] ํ, ํธ๋ฆฌ, ๊ทธ๋ํ(Heap, Tree, Graph) (0) | 2023.04.05 |
[Data Structure/์๋ฃ๊ตฌ์กฐ] ์๊ฐ๋ณต์ก๋/๊ณต๊ฐ๋ณต์ก๋ (0) | 2023.04.05 |
[Data Structure/์๋ฃ๊ตฌ์กฐ] ์ ์ ์ค์ ํ์ ํ๊ธฐ๋ฒ(Prefix, Infix, Postfix) (0) | 2023.04.05 |
Comments