์น์ 7. ์์กด๊ด๊ณ ์๋ ์ฃผ์ ์๊ฐ ์๋ฃ!!
์์กด๊ด๊ณ ์ฃผ์ ๋ฐฉ๋ฒ
@Autowired
๋ฅผ ์๋ตํด๋ ์๋์ผ๋ก ์ฃผ์
๋๋ค.@Autowired
์์ ์ฌ๋ฌ ๋น์ด ๋งค์นญ๋๋ฉด @Primary
๊ฐ ์ฐ์ ๊ถ์ ๊ฐ์ง๋ค.
@Primary
๋ณด๋ค @Qualifier
๊ฐ ์ฐ์ ๊ถ์ด ๋๋ค.
ํ๋ก์ธ์ค ๋๊ธฐํ
ํ๋ก์ธ์ค ๋ด๋ถ ๋ฐ์ดํฐ ํต์ : ํ๋์ ํ๋ก์ธ์ค ๋ด์ 2๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ์ ํต์ . ํ๋ก์ธ์ค ๋ด๋ถ์ ์ค๋ ๋๋ ์ ์ญ ๋ณ์๋ ํ์ผ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
ํ๋ก์ธ์ค ๊ฐ ๋ฐ์ดํฐ ํต์ : ๊ฐ์ ์ปดํจํฐ์ ์๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ผ๋ฆฌ ํต์ ํ๋ ๊ฒฝ์ฐ. ๊ณต์ฉ ํ์ผ ๋๋ ์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ ํ์ดํ๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ํ๋ค.
๋คํธ์ํฌ๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ ํต์ : ์ฌ๋ฌ ์ปดํจํฐ๊ฐ ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐ๋์ด ์์ ๋, ํ๋ก์ธ์ค๋ ์์ผ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. ์์ผ์ ์ด์ฉํ๋ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ๋คํธ์ํน์ด๋ผ๊ณ ํ๋ค.
ํต์ ๋ฐฉํฅ์ ๋ฐ๋ฅธ ๋ถ๋ฅ
์๋ฐฉํฅ ํต์ (duplex communication): ๋ฐ์ดํฐ๋ฅผ ๋์์ ์์ชฝ ๋ฐฉํฅ์ผ๋ก ์ ์กํ ์ ์๋ ๊ตฌ์กฐ. ์์ผ ํต์ ์ด ์๋ฐฉํฅ ํต์ ์ ํด๋นํ๋ค.
๋ฐ์๋ฐฉํฅ ํต์ (half-duplex communication): ๋ฐ์ดํฐ๋ฅผ ์์ชฝ ๋ฐฉํฅ์ผ๋ก ์ ์กํ ์ ์์ง๋ง ๋์ ์ ์ก์ ๋ถ๊ฐ๋ฅํ๊ณ , ํน์ ์์ ์ ํ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ์ ์กํ ์ ์๋ ๊ตฌ์กฐ๋ค. (์: ๋ฌด์ ๊ธฐ)
๋จ๋ฐฉํฅ ํต์ (simplex communication): ๋ชจ์ค ์ ํธ์ฒ๋ผ ํ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ ๊ตฌ์กฐ. ์ ์ญ ๋ณ์์ ํ์ดํ๊ฐ ๋จ๋ฐฉํฅ ํต์ ์ ํด๋นํ๋ค.
ํต์ ๊ตฌํ ๋ฐฉ์์ ๋ฐ๋ฅธ ๋ถ๋ฅ
์ ์ญ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ํต์ ๋ฐฉ์์ ๋ฌธ์ ์ : ์ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ์ง ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ์ชฝ์์๋ ๋ชจ๋ฅธ๋ค. โ ๋ฐ๋ณต์ ์ผ๋ก ์ ์ญ ๋ณ์์ ๊ฐ์ ์ ๊ฒํ๋ ์๋ฐ์ ์๋ค.
๋ฐ์ ๋๊ธฐ(busy waiting): ์ํ ๋ณํ๋ฅผ ์ดํด๋ณด๊ธฐ ์ํด ๋ฐ๋ณต๋ฌธ์ ๋ฌดํ ์คํํ๋ฉฐ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ. โ ์์ ๋ญ๋น๊ฐ ์ฌํ๋ค.
๋ฐ์ ๋๊ธฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ์์ ์๋ ค์ฃผ๋ ๋๊ธฐํ(synchronization)๋ฅผ ์ฌ์ฉํ๋ค. (์: ๋ฉ์ ์ ์์ ๋ฉ์์ง๊ฐ ๋์ฐฉํ๋ค๊ณ ์๋ ค์ฃผ๋ ์๋ฆผ)
๋๊ธฐ๊ฐ ์๋ ํต์ (== ๋๊ธฐํ ํต์ ): ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ์ชฝ์ ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ ๋๊น์ง ์๋์ผ๋ก ๋๊ธฐ ์ํ์ ๋จธ๋ฌผ๋ฌ ์๋ค.
๋๊ธฐ๊ฐ ์๋ ํต์ (== ๋น๋๊ธฐํ ํต์ ): ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ์ชฝ์ ๋ฐ์ ๋๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ์ธํ๋ค. (์: ์ ์ญ ๋ณ์์ ํ์ผ์ ์ด์ฉํ ํต์ )
ํ๋ก์ธ์ค ๊ฐ ํต์ ์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ํ๋ก์ธ์ค ๋๊ธฐํ์ด๋ค.
์ ์ญ ๋ณ์๋ฅผ ์ด์ฉํ ํต์
๊ณต๋์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ด๋ค.
์ ์ญ ๋ณ์๋ฅผ ์ด์ฉํ ํต์ ๋ฐฉ์์ ์ฃผ๋ก ์ง์ ์ ์ผ๋ก ๊ด๋ จ์ด ์๋ ํ๋ก์ธ์ค ๊ฐ์ ์ฌ์ฉํ๋ค.
์๋ฅผ ๋ค์ด, ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ์ ์ญ ๋ณ์๋ฅผ ์ ์ธํ ํ ์์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๋ฉด ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์ ํ๋ก์ธ์ค๊ฐ ํต์ ์ ํ ์ ์๋ค.
โ ํ๋ก์ธ์ค P๊ฐ ์ ์ญ ๋ณ์ R์ ๋ฐ์ดํฐ๋ฅผ ์ธ์ ์ธ์ง ์ ์ ์๋ค. ๋ฐ๋ผ์ ํ๋ก์ธ์ค C๋ ์ ์ญ ๋ณ์์ ๊ฐ์ด ๋ณํ ๋๊น์ง ๋ฐ์ ๋๊ธฐ๋ฅผ ๋๋ฉด์ ๊ณ์ ํ์ธํด์ผ ํ๋ค.
ํ์ผ์ ์ด์ฉํ ํต์
fd = open()
write()
read()
close()
ํ์ผ์ ์ด์ฉํ ํต์ ์ ๋ถ๋ชจ-์์ ๊ด๊ณ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค ๋๊ธฐํ๋ฅผ ์ ๊ณตํ์ง ์๋๋ค.
โ ํ๋ก์ธ์ค๊ฐ ์์์ ๋๊ธฐํ๋ฅผ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฃผ๋ก ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ wait() ํจ์๋ฅผ ์ด์ฉํ์ฌ ์์ ํ๋ก์ธ์ค์ ์์
์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์์
์ ์์ํ๋ค.
ํ์ดํ๋ฅผ ์ด์ฉํ ํต์
์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ ๋๊ธฐํ ํต์ ๋ฐฉ์์ผ๋ก, ํ์ผ ์
์ถ๋ ฅ๊ณผ ๊ฐ์ด open() ํจ์๋ก ๊ธฐ์ ์๋ฅผ ์ป๊ณ ์์
์ ํ ํ, close() ํจ์๋ก ๋ง๋ฌด๋ฆฌํ๋ค.
ํ์ดํ๋ฅผ ์ด์ฉํ ํต์ ์ ๋จ๋ฐฉํฅ ํต์ ์ด๋ค. ์๋ฐฉํฅ ํต์ ์ ํ๋ ค๋ฉด ํ์ดํ 2๊ฐ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๋ง์ฝ ํ๋ก์ธ์ค B๊ฐ ํ์ดํ 1์ ๋ํด ์ฝ๊ธฐ ์ฐ์ฐ์ ์ํํ๋๋ฐ ํ๋ก์ธ์ค A๊ฐ ํ์ดํ 1์ ์์ง ์ฐ๊ธฐ ์ฐ์ฐ์ ํ์ง ์์๋ค๋ฉด B๋ ๋๊ธฐ ์ํ๊ฐ ๋๋ค.
โ A๊ฐ 1์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ์๊ฐ ์๋์ผ๋ก ๋๊ธฐ๊ฐ ํ๋ ค ๋๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง๋ค.
์ด๋ฆ ์๋ ํ์ดํ: ์ผ๋ฐ์ ์ธ ํ์ดํ. ๋ถ๋ชจ-์์ ๊ฐ์ด ์๋ก ๊ด๋ จ ์๋ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ์ฌ์ฉ.
์ด๋ฆ ์๋ ํ์ดํ: ์๋ก ๊ด๋ จ ์๋ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ์ฌ์ฉ.
์์ผ์ ์ด์ฉํ ํต์
์ผ๋ฐ์ ์ผ๋ก ์๊ฒฉ ํ๋ก์์ ํธ์ถ์ ์์ผ์ ์ด์ฉํ์ฌ ๊ตฌํํ๋ค.
๋ค๋ฅธ ์ปดํจํฐ์ ์๋ ํ๋ก์ธ์ค์ ํต์ ์ ํ๋ ค๋ฉด ๊ทธ ์ปดํจํฐ์ ์์น๋ฅผ ํ์
ํ๊ณ , ์๊ฒฉ์ง์ ์์คํ
๋ด ์ฌ๋ฌ ํ๋ก์ธ์ค ์ค ์ด๋ค ํ๋ก์ธ์ค์ ํต์ ํ ์ง๋ ๊ฒฐ์ ํด์ผ ํ๋ค.
์ด๋ ํต์ ํ๊ณ ์ ํ๋ ํ๋ก์ธ์ค๋ ์์ ์ ์์ผ๊ณผ ์๋์ ์์ผ์ ์ฐ๊ฒฐํ๋ค.
ํ๋ก์ธ์ค๊ฐ ์์ผ์ ๋ฐ์ธ๋ฉํ ํ ์์ผ์ ์ฐ๊ธฐ ์ฐ์ฐ์ ํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๊ณ , ์ฝ๊ธฐ ์ฐ์ฐ์ ํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ฒ ๋๋ค.
์์ผ์ ํ๋๋ง ์ฌ์ฉํด๋ ์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํ๋ค. (โ ํ๋ก์ธ์ค ๋๊ธฐํ๋ ์ง์ํ๋ค.)
ํ๋ก์ธ์ค ๊ฐ ํต์ ์์ฝ
์ข ๋ฅ | ์ด์์ฒด์ ๋๊ธฐํ ์ง์ | open()/close() ์ฌ์ฉ |
---|---|---|
์ ์ญ ๋ณ์ | X (๋ฐ์ ๋๊ธฐ) | X |
ํ์ผ | X (wait() ํจ์ ์ด์ฉ) | O |
ํ์ดํ | O | O |
์์ผ | O | O |
๊ณต์ ์์(shared resource): ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๊ณต๋์ผ๋ก ์ด์ฉํ๋ ๋ณ์, ๋ฉ๋ชจ๋ฆฌ, ํ์ผ ๋ฑ์ ๋งํ๋ค.
โ ๊ณต๋์ผ๋ก ์ด์ฉ๋๊ธฐ ๋๋ฌธ์ ๋๊ฐ ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ฐ๋๋์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค. ๋ฐ๋ผ์ ํ๋ก์ธ์ค๋ค์ ๊ณต์ ์์ ์ ๊ทผ ์์๋ฅผ ์ ํ์ฌ ์์์น ๋ชปํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํด์ผ ํ๋ค.
2๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ๋ณํ์ ์ผ๋ก ์ฝ๊ฑฐ๋ ์ฐ๋ ์ํฉ์ โ๊ฒฝ์ ์กฐ๊ฑด(race condition)์ด ๋ฐ์ํ๋คโ๊ณ ํ๋ค.
โ ๊ฒฝ์ ์กฐ๊ฑด์ด ๋ฐ์ํ๋ฉด ๊ณต์ ์์ ์ ๊ทผ ์์์ ๋ฐ๋ผ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค.
์๊ณ๊ตฌ์ญ(critical section): ๊ณต์ ์์ ์ ๊ทผ ์์์ ๋ฐ๋ผ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ ํ๋ก๊ทธ๋จ์ ์์ญ.
์๊ณ๊ตฌ์ญ์์๋ ํ๋ก์ธ์ค๋ค์ด ๋์์ ์์
ํ๋ฉด ์ ๋๋ค.
์๊ณ๊ตฌ์ญ ํด๊ฒฐ ์กฐ๊ฑด
์ํธ ๋ฐฐ์ (mutual exclusion): ํ ํ๋ก์ธ์ค๊ฐ ์๊ณ๊ตฌ์ญ์ ๋ค์ด๊ฐ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์๊ณ๊ตฌ์ญ์ ๋ค์ด๊ฐ ์ ์๋ค.
ํ์ ๋๊ธฐ(bounded waiting): ์ด๋ค ํ๋ก์ธ์ค๋ ๋ฌดํ ๋๊ธฐ(infinite postpone)ํ์ง ์์์ผ ํ๋ค. ์ฆ, ํน์ ํ๋ก์ธ์ค๊ฐ ์๊ณ๊ตฌ์ญ์ ์ง์ ํ์ง ๋ชปํ๋ฉด ์ ๋๋ค. (ํ ๋์ด ๋ ์ ํ๋ฉด ์ ๋จ.)
์งํ์ ์ตํต์ฑ(progress flexibility): ํ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์งํ์ ๋ฐฉํดํด์๋ ์ ๋๋ค.
์๊ณ๊ตฌ์ญ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋จ์ํ ๋ฐฉ๋ฒ์ ์ ๊ธ(lock)์ ์ด์ฉํ๋ ๊ฒ์ด๋ค.
์ ๊ธ ํด์ ์ ๋์์ ๋๊ธฐํ ์ ํธ(์ฌ์ฉํด๋ ์ข๋ค๋ ์ ํธ)๋ฅผ ๋ณด๋ธ๋ค.
์ธ๋งํฌ์ด
์๊ณ๊ตฌ์ญ์ ์ง์
ํ๊ธฐ ์ ์ ์ค์์น๋ฅผ ์ฌ์ฉ ์ค์ผ๋ก ๋๊ณ ์๊ณ๊ตฌ์ญ์ผ๋ก ๋ค์ด๊ฐ๋ค.
์ดํ ๋์ฐฉํ๋ ํ๋ก์ธ์ค๋ ์์ ํ๋ก์ธ์ค๊ฐ ์์
์ ๋ง์น ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค.
ํ๋ก์ธ์ค๊ฐ ์์
์ ๋ง์น๋ฉด ์ธ๋งํฌ์ด๋ ๋ค์ ํ๋ก์ธ์ค์ ์๊ณ๊ตฌ์ญ์ ์ฌ์ฉํ๋ผ๋ ๋๊ธฐํ ์ ํธ๋ฅผ ๋ณด๋ธ๋ค.
โ ์๊ณ๊ตฌ์ญ์ด ์ ๊ฒผ๋์ง ์ง์ ์ ๊ฒํ๊ฑฐ๋, ๋ฐ์ ๋๊ธฐ๋ฅผ ํ๊ฑฐ๋, ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋๊ธฐํ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ํ์๊ฐ ์๋ค.
์ธ๋งํฌ์ด์์ ์ ๊ธ์ด ํด์ ๋๊ธธ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๋ ์ธ๋งํฌ์ด ํ์ ์ ์ฅ๋์ด ์๋ค๊ฐ wake_up ์ ํธ๋ฅผ ๋ฐ์ผ๋ฉด ํ์์ ๋์ ์๊ณ๊ตฌ์ญ์ ์ง์
ํ๋ค.
โ ๋ฐ์ ๋๊ธฐ๋ฅผ ํ๋ ํ๋ก์ธ์ค๊ฐ ์๋ค.
๊ทธ๋ฌ๋ ์ธ๋งํฌ์ด์ ๋ด๋ถ ์ฝ๋๊ฐ ์คํ๋๋ ๋์ค์ ๋ค๋ฅธ ์ฝ๋๊ฐ ์คํ๋๋ฉด ์ํธ ๋ฐฐ์ ์ ํ์ ๋๊ธฐ ์กฐ๊ฑด์ ๋ณด์ฅํ์ง ๋ชปํ๋ค.
์ธ๋งํฌ์ด์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ์๋ชป๋ ์ฌ์ฉ์ผ๋ก ์ธํด ์๊ณ๊ตฌ์ญ์ด ๋ณดํธ๋ฐ์ง ๋ชปํ๋ค๋ ๊ฒ์ด๋ค.
๋ชจ๋ํฐ
๊ณต์ ์์์ ๋ด๋ถ์ ์ผ๋ก ์จ๊ธฐ๊ณ ๊ณต์ ์์์ ์ ๊ทผํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ง ์ ๊ณตํจ์ผ๋ก์จ ์์์ ๋ณดํธํ๊ณ ํ๋ก์ธ์ค ๊ฐ์ ๋๊ธฐํ๋ฅผ ์ํจ๋ค.
์์คํ
ํธ์ถ๊ณผ ๊ฐ์ ๊ฐ๋
์ด๋ค.
โ ๋ชจ๋ํฐ๋ ์์ฒญ๋ฐ์ ์์
์ ๋ชจ๋ํฐ ํ์ ์ ์ฅํ ํ ์์๋๋ก ์ฒ๋ฆฌํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ง ํด๋น ํ๋ก์ธ์ค์ ์๋ ค์ค๋ค.
+) 22. 07. 05. ์ถ๊ฐ
SELECT NAME, COUNT(NAME) FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >= 2 ORDER BY NAME
SELECT HOUR(DATETIME), COUNT(HOUR(DATETIME)) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) >= 9 AND HOUR(DATETIME) < 20 GROUP BY HOUR(DATETIME) ORDER BY HOUR(DATETIME)
โก๏ธ ์ด๊ฑด BETWEEN์ ์ฐ๋ ๊ฒ ๋ ๊น๋ํ์ ๋ฏ...
SET @hour = -1;
SELECT (@hour := @hour + 1) as HOUR,
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) as COUNT
FROM ANIMAL_OUTS
WHERE @hour < 23
โก๏ธ ์ด๊ฑฐ ์ง์ง ๊ฐ์ด๋ ค์์ ๊ตฌ๊ธ๋ง ํจ... ๋ญ ๋ฌด์จ ์กฐ์ธ ์ฐ๋ ๊ฒ๋ ์๋๋ฐ ๊ทธ๊ฑด ์ง์ง ๋ณต์กํด ๋ณด์ฌ์;; ์ด ๋ฐฉ๋ฒ์ด ๋ ๊ฐ๋จํ๊ธด ํ๋ฐ ์ฌ์ค ์ดํด๊ฐ ์ ์ ๋๋ค.
+) 22. 07. 05. ์ถ๊ฐ ์!
Internet Protocol
3๊ณ์ธต์์ ๋
ผ๋ฆฌ ์ฃผ์์ธ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ค.
์ธํฐ๋ท์์ ๋ค๋ฅธ ์ปดํจํฐ์ ํต์ ํ ๋ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ.
IP ์ฃผ์๋ ํฌ๊ธฐ๊ฐ 32๋นํธ(IPv4)์ธ ์ฃผ์๋ฅผ ๋ค ๋ถ๋ถ์ผ๋ก ๋๋ 8๋นํธ์ 10์ง์ ํ์์ผ๋ก ํํํ๋ค.
IPv4๋ก๋ ์ ์ธ๊ณ์ ๋ชจ๋ ์ปดํจํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ IPv6๋ผ๋ ์๋ก์ด ์ฃผ์ ์ฒด๊ณ๊ฐ ๋ฑ์ฅํ์๋ค.
IP์ ๋ถ๋ฅ
์ฌ์ฉ ๋ฒ์์ ๋ฐ๋ฅธ ๊ตฌ๋ถ
๊ณต์ธ IP: ๊ณต์ธ ๊ธฐ๊ด์์ ์ธ์ฆํ ๊ณต๊ฐํ(public) IP ์ฃผ์. ์ธ๋ถ์ ๊ณต๊ฐ๋์ด ์์ด ๋ค๋ฅธ ์ปดํจํฐ ๋ฑ์์ ๊ฒ์, ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. ์ ์ธ๊ณ์์ ๋จ ํ๋๋ง ์กด์ฌํ๋ค.
์ฌ์ค IP(๊ฐ์ IP): ๊ณต์ ๊ธฐ๋ฅผ ์ด์ฉํด ๋ง๋ค ์ ์๋ ๊ฐ์์ IP ์ฃผ์. ์ธ๋ถ์ ๊ณต๊ฐ๋์ง ์์ ์ธ๋ถ์์ ๊ฒ์ ๋ฐ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๊ฐ์ IP ์ฃผ์๋ ์ฃผ์ ๋์ญ์ด 3๊ฐ๋ก ๊ณ ์ ๋์ด ์๋ค.
192.168.xxx.xxx
172.10.xxx.xxx
10.xxx.xxx.xxx
ํ ๋น ๋ฐฉ์์ ๋ฐ๋ฅธ ๊ตฌ๋ถ
๊ณ ์ IP: ์ฌ์ฉ์๊ฐ ์ง์ IP ์ฃผ์๋ฅผ ์ ๋ ฅํด ์ฃผ์๋ฅผ ์ค์ ํ๋ค. ํด๋น ์ปดํจํฐ์ IP ์ฃผ์๋ฅผ ๊ณ ์ ์ ์ผ๋ก ์ฌ์ฉํ๋ฉฐ, IP ์ฃผ์๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ ๋๋ ์ปดํจํฐ(ํ์ผ ๊ณต์ ์๋ฒ ๋ฑ) ๋ฑ์ ์ ํฉํ๋ค.
์ ๋ IP: IP ์ฃผ์๋ฅผ ํ ๋นํ๋ ํน์ ์๋ฒ๊ฐ ๋ณด๋ด์ฃผ๋ ์ ๋ณด ๊ทธ๋๋ก ์ปดํจํฐ์ ์๋ ์ค์ ๋๋ ๋ฐฉ์(Dynamic Host Configuration Protocol). IP ์ฃผ์๊ฐ ์์๋ก ๋ณ๊ฒฝ๋๋ค.
๊ณต์ธ IP๊ฐ ํ์ํ ๋
๋ง์ฝ ํฌํธ ์ฌ์ดํธ์ IP๊ฐ ์ ๋ ์ฌ์ค IP๋ผ๋ฉด, ์ด์ ์ ์ ์ํ๋ IP ์ฃผ์๋ก ์ ์ํ๋ ค ํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ์๋ฒ ์ญํ ์ ํ๋ ์ปดํจํฐ๋ ๋ฐ๋์ ๊ณ ์ ํ ์ฃผ์๊ฐ ํ์ํ๋ค.
์๋ฒ๊ฐ ์ ๋ IP์ผ ๊ฒฝ์ฐ์ DDNS(Dynamic DNS)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌธ์ ๊ฐ ์๋ค.
โ DNS ์๋ฒ๊ฐ ๋ฐ๋ IP๋ฅผ ์ ์ฅํ๊ณ ์๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ๋ ๋๋ฉ์ธ ๋ค์์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
์ฌ์ค IP์ ํน์ง
ํ๋๋ง ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์์ ๋ด ์ปดํจํฐ๋ฅผ ์ฐพ์ ์ ์๋ค. (๊ณต์ค์ ํ๊ธฐ๋ฅผ ์๊ฐํด ๋ณด์. ๊ณต์ค์ ํ๋ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์ ํ๊ธฐ๋ก ์ ํ๋ฅผ ๊ฑธ ์ ์์ง๋ง ์๋๋ฐฉ์ด ๊ณต์ค์ ํ๊ธฐ๋ก ์ ํ๋ฅผ ๊ฑฐ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.)
*ํฌํธ ํฌ์๋ฉ์ ์ฌ์ฉํ๋ฉด ์ฌ์ค IP๋ก๋ ์๋ฒ๋ฅผ ์ด์ํ ์ ์๋ค.
*ํน์ ํฌํธ๋ก ๋ค์ด์ค๋ ํจํท์ ๋ด๋ถ ์ปดํจํฐ๋ก ๋๊ฒจ์ฃผ๋ ๊ฒ.
Transmission Control Protocol
TCP ํ๋กํ ์ฝ์ ์ ๋ขฐํ ์ ์๋ ๊ณต์ฉ๋ง์์๋ ์ ๋ณด์ ์ค ์๋ ํต์ ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ธ์ ์ ์์ ํ๊ฒ ์ฐ๊ฒฐํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํ๊ณ , ๋ถํ ๋ ํจํท์ด ์ ์ ์ก๋์๋์ง ํ์ธํ๋ ๊ธฐ๋ฅ์ด ์๋ค.
TCP์์๋ ๋ถํ ๋ ํจํท์ ์ ๋ถํ ํ๊ณ ์์ ์ธก์ด ์ ์กฐํฉํ๋๋ก ํจํท์ ์์๋ฅผ ์ฃผ๊ณ ์๋ต ๋ฒํธ๋ฅผ ๋ถ์ฌํ๋ค.
๋ ๋ฒํธ๊ฐ ์ํธ์์ฉํด ์์๊ฐ ๋ฐ๋๊ฑฐ๋ ์ค๊ฐ์ ํจํท์ด ์์ค๋ ๊ฒ์ ํ์ ํ ์ ์๋ค.
์ก์ ์ | ์์ ์
1๋ฒ ์ ์ก โ 1๋ฒ ์์
ACK 2 ์์ โ ACK 2 ์ ์ก
2๋ฒ ์ ์ก โ 2๋ฒ ์์
ACK 3 ์์ โ ACK 3 ์ ์ก
์ก์ ์ธก์ด 1๋ฒ ํจํท์ ๋ณด๋ด๊ณ ์์ ์ธก์ด ์ด ํจํท์ ์ ๋ฐ์๋ค๋ฉด 1๋ฒ์ ์ ๋ฐ์์ผ๋ ๋ค์์๋ 2๋ฒ์ ๋ฌ๋ผ๋ ํ์๋ก ACK ๋ฒํธ 2๋ฅผ ์ค๋ค.
์๋ ์ฌ์ด์ฆ์ ์ฌ๋ผ์ด๋ฉ ์๋
ํจํท์ด ์ ์ ์ก๋๋์ง ํ์ธํ๊ธฐ ์ํด ๋ณ๋ ํจํท์ ๋ฐ๋ ๊ฒ ์์ฒด๊ฐ ํต์ ์๊ฐ์ ๋๋ฆฐ๋ค. ์ก์ ์์ ์์ ์๊ฐ ๋จผ ๊ฑฐ๋ฆฌ์ ๋จ์ด์ ธ ์์ผ๋ฉด ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ๋ ๊ธธ์ด์ง ๊ฒ์ด๋ค.
๊ทธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ํจํท์ ํ๋๋ง ๋ณด๋ด๋ ๊ฒ์ด ์๋๋ผ ๋ง์ ํจํท์ ํ๊บผ๋ฒ์ ๋ณด๋ด๊ณ ์๋ต์ ํ๋๋ง ๋ฐ๋๋ค.
๊ฐ๋ฅํ๋ฉด ์ต๋ํ ๋ง์ ํจํท์ ํ๊บผ๋ฒ์ ๋ณด๋ด๋ ๊ฒ์ด ํจ์จ์ ์ด์ง๋ง ๋คํธ์ํฌ ์ํ๊ฐ ์ ์ข์ผ๋ฉด ํจํท ์ ์ค ๊ฐ๋ฅ์ฑ์ด ์ปค์ง๋ฏ๋ก ์ ์ ํ ์ก์ ๋์ ๊ฒฐ์ ํด์ผ ํ๋ค.
TCP๋ ๋ฐ์ดํฐ์ ์ ์ค์ด ๋ฐ์ํ๋ฉด ์๋ ์ฌ์ด์ฆ๋ฅผ ์ ๋ฐ์ผ๋ก ๋จ์ด๋จ๋ฆฌ๊ณ ์ ์์ ์ธ ํต์ ์ด ๋๋ ๊ฒฝ์ฐ ์์ํ ํ๋์ฉ ๋๋ฆฐ๋ค.
3-Way Handshake
TCP๋ ํต์ ์ , ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ณด๋ด๊ณ ๋ฐ์ ์ ์๋์ง ๋ฏธ๋ฆฌ ํ์ธํ๋ ์์
์ ๊ฑฐ์น๋ค.
3๋ฒ์ ํจํท์ ์ฃผ๊ณ ๋ฐ์ผ๋ฉด์ ํต์ ์ ์๋ก ์ค๋นํ๋ฏ๋ก โ3๋ฐฉํฅ ํธ๋์
ฐ์ดํฌโ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ ์์ ๋ฐ์๋ค์ผ ์ ์๋ LISTEN ์ํ๋ก ๋๊ธฐํ๋ค.
ํด๋ผ์ด์ธํธ์์ ํต์ ์ ์๋ํ ๋ SYN ํจํท์ ๋ณด๋ด๋๋ฐ, ์ด ์ํ๋ฅผ SYN-SENT๋ผ๊ณ ํ๋ค.
SYN์ ๋ฐ์ ์๋ฒ๋ SYN-RECEIVE ์ํ๋ก ๋ณ๊ฒฝ๋๊ณ SYN, ACK๋ก ์๋ตํ๋ค.
์ด ์๋ต์ ๋ฐ์ ํด๋ผ์ด์ธํธ๋ ESTABLISHED ์ํ๋ก ๋ณ๊ฒฝํ๊ณ ๊ทธ์ ๋ํ ์๋ต์ ๋ค์ ์๋ฒ๋ก ๋ณด๋ธ๋ค.
์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์๋ต์ ๋ฐ๊ณ ESTABLISHED ์ํ๋ก ๋ณ๊ฒฝ๋๋ค.
ESTABLISHED ์ํ๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ฐ๊ฒฐ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์์ ๋ํ๋ธ๋ค.
User Datagram Protocol
TCP์ ๋ฌ๋ฆฌ UDP๋ 4๊ณ์ธต ํ๋กํ ์ฝ์ด ๊ฐ์ ธ์ผ ํ ํน์ง์ด ๊ฑฐ์ ์๋ค.
UDP ํค๋๋ TCP์ ๋น๊ตํ๋ฉด ๋ด์ฉ์ด ๊ฑฐ์ ์๋ค. 4๊ณ์ธต์ ํน์ง์ธ ์ ๋ขฐ ํต์ ์ ์ํ ๋ด์ฉ(์ํ์ค ๋ฒํธ, ACK ๋ฒํธ, ํ๋๊ทธ, ์๋ ์ฌ์ด์ฆ)์ด ์๋ค.
UDP๋ ๋ฐ์ดํฐ ์ ์ก์ ๋ณด์ฅํ์ง ์๋ ํ๋กํ ์ฝ์ด๋ฏ๋ก ์ ํ๋ ์ฉ๋๋ก๋ง ์ฌ์ฉ๋๋ค.
์์ฑ ๋ฐ์ดํฐ๋ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ๊ณผ ๊ฐ์ด ์๊ฐ์ ๋ฏผ๊ฐํ ํ๋กํ ์ฝ์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋, ์ฌ๋ด ๋ฐฉ์ก ํน์ ์ฆ๊ถ ์์ธ ๋ฐ์ดํฐ ์ ์ก์ ์ฌ์ฉ๋๋ ๋ฉํฐ์บ์คํธ์ฒ๋ผ ๋จ๋ฐฉํฅ์ผ๋ก ๋ค์์ ๋จ๋ง๊ณผ ํต์ ํด ์๋ต์ ๋ฐ๊ธฐ ์ด๋ ค์ด ํ๊ฒฝ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
์์ฑ, ๋์์์ ๋์งํธ ํ๊ฒฝ์์๋ ์ฐ์๋ ๋ฐ์ดํฐ๊ฐ ์๋ ๋งค์ฐ ์งง์ ์๊ฐ ๋จ์๋ก ์๊ฒ ๋ถํ ํ ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ ํํ๋ค.
์ค์ธ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋์งํธํํ ๋๋ ์๊ฐ์ ์๊ฒ ์ชผ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ํ๋งํ๋๋ฐ, ์ด๋ฐ ๋ฐ์ดํฐ๋ค์ ๋ค๋ฅธ ์ผ๋ฐ ๋ฐ์ดํฐ์ฒ๋ผ ์ทจ๊ธํ๋ฉด ์๊ฐ ์ง์ฐ์ ๋ฐ๋ฅธ ์ด๋ ค์์ด ์๋ค.
์ค๊ฐ์ ๋ฐ์ดํฐ ๋ช ๊ฐ๊ฐ ์ ์ค๋๋ ๊ฒ๋ณด๋ค ์ฌ์ ์กํ๊ธฐ ์ํด ์ ์ ๋์์์ด๋ ์์ฑ์ด ๋ฉ์ถ๋ ๊ฒ์ ๋ ์ด์ํ๊ฒ ๋๋ ์ ์๋ค.
์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐ ์ ๋ขฐ์ฑ๋ณด๋ค ์ผ๋ถ ๋ฐ์ดํฐ๊ฐ ์ ์ค๋๋๋ผ๋ ์๊ฐ์ ๋ง์ถ์ด ๊ณ์ ์ ์กํ๋ ๊ฒ์ด ์ค์ํ ํ์ํ์ ์์คํ
๊ณผ ๊ฐ์ ์๋น์ค์ธ ๊ฒฝ์ฐ, UDP๋ฅผ ์ฌ์ฉํ๋ค.
30ํ๋ ์์ง๋ฆฌ ๋์์์์ 1ํ๋ ์์ด ์๋ฆฐ 29ํ๋ ์๋ง์ผ๋ก๋ ์ฌ๋๋ค์ ๋์๋ ์ด์ง๊ฐ์ด ๋ณ๋ก ์์ง๋ง ์ค์๊ฐ ๋์์์ ์ ์กํ๋ ๊ฒฝ์ฐ, ์๋ฆฐ 1๊ฐ ํ๋ ์์ ์ฌ์ ์กํ๊ธฐ ์ํด ์ผ์์ ์ผ๋ก ํ๋ฉด์ด ๋ฉ์ถ๋ฉด ์์ฑ๊ณผ ์์์ด ๋ค๋ฆ๊ฒ ์ ๋ฌ๋์ด ์ฌ์ฉ์๋ ๋คํธ์ํฌ ํ์ง์ด ๋จ์ด์ง๋ค๊ณ ์๊ฐํ๋ค.
UDP๋ TCP์ ๋ฌ๋ฆฌ ํต์ ์์ ์ 3-Way Handshake์ฒ๋ผ ์ฌ์ ์ ์ฐ๊ฒฐ์ ํ๋ฆฝํ๋ ์ ์ฐจ๊ฐ ์๋ค.
๋์ UDP์์ ์ฒซ ๋ฐ์ดํฐ๋ ๋ฆฌ์์ค ํ๋ณด๋ฅผ ์ํด ์ธํฐ๋ฝํธ(Interrupt)๋ฅผ ๊ฑฐ๋ ์ฉ๋๋ก ์ฌ์ฉํ๊ณ ์ ์ค๋๋ค.
๊ทธ๋์ UDP ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋๋ถ๋ถ ์ด๋ฐ ์ํฉ์ ์ธ์งํ๊ณ ๋์ํ๊ฑฐ๋, ์ฐ๊ฒฐ ํ๋ฆฝ์ TCP ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ณ ์ ํ๋ฆฌ์ผ์ด์
๋ผ๋ฆฌ ๋ชจ๋ ์ค๋น๋ฅผ ๋ง์น ํ ์ค์ ๋ฐ์ดํฐ๋ง UDP๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ค.
TCP | UDP |
---|---|
์ฐ๊ฒฐ ์งํฅ(Connected Oriented) | ๋น์ฐ๊ฒฐํ(Connectionless) |
์ค๋ฅ ์ ์ด ์ํํจ | ์ค๋ฅ ์ ์ด ์ํ ์ ํจ |
ํ๋ฆ ์ ์ด ์ํํจ | ํ๋ฆ ์ ์ด ์ํ ์ ํจ |
์ ๋์บ์คํธ | ์ ๋์บ์คํธ, ๋ฉํฐ์บ์คํธ, ๋ธ๋ก๋์บ์คํธ |
์ ์ด์ค(Full Duplex) | ๋ฐ์ด์ค(Half Duplex) |
๋ฐ์ดํฐ ์ ์ก | ์ค์๊ฐ ํธ๋ํฝ ์ ์ก |
HyperText Transfer Protocol
๋ถ์ฐ ํ์ดํผ๋ฏธ๋์ด ํ๊ฒฝ์์ ๋น ๋ฅด๊ณ ๊ฐํธํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ํ๋กํ ์ฝ.
์น ์๋ฒ์ ์ฌ์ฉ์์ ์ธํฐ๋ท ๋ธ๋ผ์ฐ์ ์ฌ์ด์ ๋ฌธ์๋ฅผ ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํต์ ๊ท์ฝ์ ๋งํ๋ค.
์ธํฐ๋ท ์ฃผ์๋ฅผ ์ง์ ํ ๋ http://wwwโฆ
์ ๊ฐ์ด ํ๋ ๊ฒ์ www๋ก ์์๋๋ ์ธํฐ๋ท ์ฃผ์์์ ํ์ดํผํ
์คํธ ๋ฌธ์์ ๊ตํ์ http ํต์ ๊ท์ฝ์ผ๋ก ์ฒ๋ฆฌํ๋ผ๋ ๋ป์ด๋ค.
HTTP๋ Request / Response (์์ฒญ / ์๋ต) ๋์์ ๊ธฐ๋ฐํ์ฌ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
HTTP์ ๋ช
๋ น์ ํด๋นํ๋ HTTP Method๋ฅผ ์ด์ฉํด ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ , ๋ฐ๋๋ก ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ๋ฐ์ดํฐ๋ฅผ ํ์ ํ ์ ์๋ค.
์ฃผ์ ๋ช ๋ น
GET
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ URL์ด ๊ฐ๋ฆฌํค๋ ์น ๋ฌธ์์ ๋ด์ฉ์ ์ ์กํ๋๋ก ์๊ตฌํ๋ค.
GET ๋ฐฉ์์ ๋ฐ์ดํฐ๊ฐ ์ฃผ์ ์
๋ ฅ๋์ ํ์๋๊ธฐ ๋๋ฌธ์ ๋ณด์์ ๋งค์ฐ ์ทจ์ฝํ๋ค.
POST
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ๋ณด๋ฅผ ์ ์กํ ์ ์๋๋ก ํ๋ค.
๋ณดํต ๊ฒ์ํ์ฒ๋ผ ์ฌ์ฉ์๋ก๋ถํฐ ์
๋ ฅ๋ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ๋ฌํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
GET ๋ฐฉ์๊ณผ๋ ๋ฌ๋ฆฌ ๋ณด๋ด๋ ค๋ ๋ฐ์ดํฐ๊ฐ URL์ ํตํด์ ๋
ธ์ถ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ต์ํ์ ๋ณด์์ฑ์ ๊ฐ์ถ๊ณ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ๊ฒ์ํ์ ๋ชฉ๋ก์ด๋ ๊ธ ๋ณด๊ธฐ ํ๋ฉด์ ์ ๊ทผ ์์ ๋๋ฅผ ๋ถ์ฌํ๊ธฐ ์ํด GET ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ๊ธ ์ ์ฅ, ์์ , ์ญ์ ๋ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋๋ POST ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
HTTP๋ 0.9 ๋ฒ์ ๋ถํฐ ์ฌ์ฉ๋์๋ค.
0.9 ๋ฒ์ ์ ์๋ฒ๋ก๋ถํฐ์ ๋จ์ ์ฝ๊ธฐ ๊ธฐ๋ฅ๋ง ์ง์ํ๋ค. (GET ๋ฉ์๋๋ง ์ง์)
โฌ๏ธ HTTP 0.9 ๋ฒ์ ์ ์ฐ๊ฒฐ
ํด๋ผ์ด์ธํธ๊ฐ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด์ฉํด ์๋ฒ์ ์ฐ๊ฒฐ์ ์์ฒญํ๋ฉด ์๋ฒ๋ ์๋น์ค๋ฅผ ์ค๋นํ๋ค.
์๋ฒ๊ฐ ์ค๋น ์ํ๊ฐ ๋๋ฉด(Connect) ํด๋ผ์ด์ธํธ๋ ์ฝ๊ณ ์ ํ๋ ๋ฌธ์๋ฅผ ์๋ฒ์ ์์ฒญ(Request)ํ๋ค.
์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฌธ์๋ฅผ ์ ์ก(Response)ํ๊ณ ์ฐ๊ฒฐ์ ๋๋๋ค.(Close)
์ด ๊ธฐ๋ณธ ์ฐ๊ฒฐ ๊ธฐ๋ฅ์ HTTP์ ๋ฒ์ ์ ๊ด๊ณ์์ด ๋์ผํ๋ค.
ํ์ง๋ง HTTP 0.9๋ ํ๋์ ์น ํ์ด์ง ์์์๋ ํ
์คํธ์ ๊ทธ๋ฆผ๋ง๋ค Connect ๊ณผ์ ์ ๋ฐ๋ณตํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋นํจ์จ์ ์ด๊ณ ์ค๋ ์ฌ์ฉ๋์ง ๋ชปํ๋ค.
1.0 ๋ฒ์ ๋ถํฐ๋ ํค๋๊ฐ ์๊ฒผ๋ค.
์์ฒญ๋ฌธ์ GET์ ์์ฒญ ๋ฉ์๋๊ณ , /index.php๋ URL, HTTP/1.1์ HTTP ๋ฒ์ ์ด๋ค.
Response์๋ ์ํ ์ฝ๋๋ ๋ถ์๋ค.
ํ์ง๋ง ์ปค๋ฅ์ ํ๋ ๋น ์์ฒญ ํ๋๋ ์๋ต ํ๋๋ง ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ์ ํ๋๊ณ ํต์ ๋ถํ ๋ฌธ์ ๋ ๋ฐ์ํ์๋ค.
HTTP Response์ ์ฃผ์ ์ํ ์ฝ๋
๊ทธ๋์ 1.1 ๋ฒ์ ์์๋ *Persistent Connection์ด๋ผ๋ ๊ฐ๋
์ ๋์
ํ์๋ค.
*์ง์ ํ timeout ๋์ ์ปค๋ฅ์
์ ๋ซ์ง ์๋ ๋ฐฉ์
โ ํ ์ปค๋ฅ์ ์ ์ด์ด๋๋ฉด ์ฌ๋ฌ ์์ฒญ์ด ์ปค๋ฅ์ ์ ์ฌ์ฉํ ์ ์๋ค.
ํ์ง๋ง HTTP๋ ์์ฐจ์ ์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ 1๋ฒ ์์ฒญ์ ๋ํ ์๋ต์ด ๋ค์ด์์ผ์ง๋ง ๋ค์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค. ์ด ๋๊ธฐ ์๊ฐ์ ํด๊ฒฐํ๊ธฐ ์ํด ํ์ดํ๋ผ์ด๋ ๊ธฐ๋ฒ์ ๋์ ํ๋ค.
Pipelining์ด๋, ํ๋์ ์ปค๋ฅ์ ์์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์์ฐจ์ ์ธ ์ฌ๋ฌ ์์ฒญ์ ์ฐ์์ ์ผ๋ก ๋ณด๋ด ๊ทธ ์์์ ๋ง์ถฐ ์๋ต์ ๋ฐ๋ ๋ฐฉ์์ผ๋ก ์ง์ฐ ์๊ฐ์ ์ค์ด๋ ๋ฐฉ๋ฒ์ด๋ค.
ํ์ง๋ง ํ์ดํ๋ผ์ด๋์๋ ๋ฌธ์ ๋ ์๋ค.
๋ฐ๋ก Head Of Line Blocking์ด๋ค.
์ฒซ ๋ฒ์งธ ์์ฒญ์ด ์๋๋ฐ ์๋ฒ์์ ์ฒ๋ฆฌํ๋ ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๋ฉด ๋ ๋ฒ์งธ ์์ฒญ, ์ธ ๋ฒ์งธ ์์ฒญ๋ ๊ธฐ๋ค๋ ค์ผ ํ๋ค๋ ์ ์ด๋ค. ๋ค์ ์์ฒญ์ด ๋ ์งง๊ฒ ๊ฑธ๋ฆฌ๋๋ฐ๋ ์์ ์์ฒญ์ด ์ฒ๋ฆฌ๊ฐ ์ ๋๊ณ ์์ผ๋ฉด ๋ค์ ๋์ ๊ฟ๋ ๋ชป ๊พผ๋ค๋ ๊ฑฐ๋ค.
๋ ๋ค๋ฅธ ๋ฌธ์ ๋ก๋ Header ๊ตฌ์กฐ์ ์ค๋ณต์ด ์๋ค.
์ฐ์๋ ์์ฒญ ๊ฐ์ ๊ฒฝ์ฐ์๋ ํค๋์ ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ๋ ์ค๋ณต์ ๊ฑฐ๋ฅด์ง ์๊ณ ๊ทธ๋๋ก ์ ์กํด ๋ฒ๋ฆฐ๋ค.
๊ทธ๋์ ๋์จ HTTP 2์ ๊ฐ์ฅ ํฐ ํน์ง์ ๋ฉ์์ง ์ ์ก ๋ฐฉ์์ ๋ฐ๊ฟจ๋ค๋ ๊ฒ์ด๋ค.
๊ธฐ์กด์๋ ์ผ๋ฐ ํ
์คํธ ํ์์ ๋ฉ์์ง๋ฅผ ๋ณด๋์ง๋ง 2 ๋ฒ์ ์์๋ ๋ฐ์ด๋๋ฆฌ ํ๋ ์์ด๋ผ๋ ๊ณ์ธต์ด ์๊ฒผ๋ค.
๋ฉ์์ง๋ฅผ ํ๋ ์์ด๋ ๋จ์๋ก ๋ถํ ํ๊ณ ๋ฐ์ด๋๋ฆฌ๋ก ์ธ์ฝ๋ฉํ๋ค.
๊ทธ๋์ ์ผ๋ฐ ํ
์คํธ๋ก ์ ์กํ ๋๋ณด๋ค ์ ์ก ์๋๊ฐ ๋นจ๋ผ์ง๊ณ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์์ก๋ค.
์ด๋ฅผ ๋ฐํ์ผ๋ก Request์ Response์ Multiplexing์ด ๊ฐ๋ฅํด์ก๋ค.
ํ๋ ์ ๋จ์๋ก ์ชผ๊ฐ์ ธ์ ์์๊ฐ ์์ด์ก๊ธฐ ๋๋ฌธ์ด๋ค. (ํ๋ ์์ ์ธํฐ๋ฆฌ๋น์ด๋ผ๋ ์คํฌ์ ๊ฐ๊ณ ์์ด์, ๋จผ์ ๋๋ ํ๋ ์์ด ๋ผ์ด๋ค์ด ์กฐ๋ฆฝํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.)
โ Head Of Line Blocking ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๊ฒ ๋๋ค.
HTTP 2์ ๋ ๋ค๋ฅธ ํน์ง์ผ๋ก๋ Stream Prioritization์ด ์๋ค.
๋ฆฌ์์ค ๊ฐ์ ์ฐ์ ์์๋ฅผ ์ค์ ํ ์ ์๋ ๊ฒ์ด๋ค.
๋จผ์ ๋๋ด์ผ ํ ๋ํํ
์ฐ์ ์์ ๊ฐ์ค์น๋ฅผ ์ค์ ๋จผ์ ์๋ตํ๊ฒ๋ ๋ง๋ ๋ค.
๋ํ Server Push๋ผ๋, ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ์ง ์์ ๋ฆฌ์์ค๋ฅผ ์๋ฒ์์ ์์์ Pushํด ๋ณด๋ด์ค ์ ์๋ ๊ธฐ๋ฅ๋ ์๊ฒผ๋ค.
ํด๋ผ์ด์ธํธ๊ฐ /page.html์ ์์ฒญํ๋๋ฐ /script.js๋ /style.css๋ ๋ค์ผ๋ก ๊ฐ์ด ๋ณด๋ด๋ ๊ฒ์ด๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ๋์ค์ ์์ฒญํ ๊ฒ์ด๋ผ ์๊ฐํ๊ณ ๋ฏธ๋ฆฌ ์ค ๋ฒ๋ฆฌ๋ ๊ฒ์ด๋ค.
๋ง์ง๋ง ํน์ง! Header Compression
Static Dynamic Table์ ํตํด ์ค๋ณต์ ๊ฒ์ถํ๋ค.
์ค๋ณต๋์ง ์์ ๋ฐ์ดํฐ๋ง ์ธ์ฝ๋ฉํ์ฌ, ํค๋์ ํฌ๊ธฐ๋ฅผ ์ค์ฌ ํ์ด์ง์ ๋ก๋ ์๊ฐ์ ๊ฐ์์์ผฐ๋ค.
์ฐธ๊ณ ์๋ฃ
๊ณ ์ฌ์ฑ ยท ์ด์ํ, IT ์์ง๋์ด๋ฅผ ์ํ ๋คํธ์ํฌ ์ ๋ฌธ
์๋์ผ, ์ ๋ณด ๋ณด์ ๊ฐ๋ก : ํ ๊ถ์ผ๋ก ๋ฐฐ์ฐ๋ ๋ณด์ ์ด๋ก ์ ๋ชจ๋ ๊ฒ
๋ฐ๊ธฐํ, ๋ฐ์ดํฐ ํต์ ๊ณผ ์ปดํจํฐ ๋คํธ์ํฌ
์ด๋ฌธ๊ท, โ์ฉ์ด๋ก ๋ณด๋ ITโ, https://terms.naver.com/list.naver?categoryId=59096
๋ฐ๋ผํ๋ฉด์ ๋ฐฐ์ฐ๋ IT, โHTTP ํ๋กํ ์ฝ์ด๋?โ, https://youtu.be/TwsQX1AnWJU
์ฐ์ํTech, โ์ฟจ๋ผ์์ HTTP/1.1, HTTP/2, ๊ทธ๋ฆฌ๊ณ QUICโ, https://youtu.be/xcrjamphIp4
๋๋น๋, โ์์ดํผ ์ฃผ์(IP Address)์ ๊ฐ๋ ์ ์์ธํ ์ดํดํด๋ณด์โ, https://youtu.be/pRWD7oTeuFw