[Web] ๋ธ๋ผ์ฐ์ ์ URL์ ์ ๋ ฅํ๋ฉด ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ๊น์?
๐ ๋ค์ด๊ฐ๋ฉฐ
๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ url์ ์ ๋ ฅํ๋ฉด ์๊ธฐ๋ ๊ณผ์ ๋ค์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
DNS ๋ ์ฝ๋ ํ์ธ
์ฒซ ๋ฒ์งธ๋ก, ๋ธ๋ผ์ฐ์ ๋ DNS(Domain Name Server) ๋ ์ฝ๋์ ์บ์๋ฅผ ํ์ธํ์ฌ ํด๋น URL์ IP ์ฃผ์๋ฅผ ์ฐพ๊ฒ ๋ฉ๋๋ค.
DNS(Domain Name Server)๋?
DNS๋ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๋๋ค. DNS๋ ๋๋ฉ์ธ ์ด๋ฆ๊ณผ IP ์ฃผ์๋ฅผ ๋งคํํด์ฃผ๋ ์๋ฒ๋ก, ๋ธ๋ผ์ฐ์ ๊ฐ ์ธํฐ๋ท ์์์ ๋ก๋ํ ์ ์๋๋ก ๋์์ค๋๋ค.
์ฆ, DNS๋ ์ ํ๋ฒํธ๋ถ์ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค. ์ฌ๋๋ค์ด ์ด๋ฆ์ผ๋ก ๋ค๋ฅธ ์ฌ๋์ ์ฐพ๋ฏ์ด, ์ปดํจํฐ๋ DNS๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ์ ๋๋ฉ์ธ ์ด๋ฆ์ ํด๋น IP ์ฃผ์๋ก ๋ณํํฉ๋๋ค.
ํด๋น ๊ณผ์ ์์ ์๋์ ์์๋ก ํ์ธ์ ํ๊ฒ ๋ฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ์บ์ ํ์ธ: ๋ธ๋ผ์ฐ์ ๋ ์ด์ ์ ๋ฐฉ๋ฌธํ ์น์ฌ์ดํธ์ ๋ํด ๊ณ ์ ๋ ๊ธฐ๊ฐ ๋์ DNS ๋ ์ฝ๋ ์ ์ฅ์๋ฅผ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค. ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ ๊ณผ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ๋จผ์ ํ์ธํฉ๋๋ค.
- OS ์บ์ ํ์ธ: ๋ธ๋ผ์ฐ์ ์บ์์ ์๋ ๊ฒฝ์ฐ, OS๋ DNS ๋ ์ฝ๋ ์บ์๋ ์ ์งํ๋ฏ๋ก ๋ธ๋ผ์ฐ์ ๋ ๊ธฐ๋ณธ ์ปดํจํฐ OS์ ์์คํ ํธ์ถ(์: Windows์ ๊ฒฝ์ฐ gethostname )์ ๋ณด๋ด ๋ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ๋ผ์ฐํฐ ์บ์ ํ์ธ: ์ปดํจํฐ์ ์์ผ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์์ฒด DNS ๋ ์ฝ๋ ์บ์๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ๋ผ์ฐํฐ์ ํต์ ํ์ฌ ํ์ธํฉ๋๋ค.
- ISP(์ธํฐ๋ท ์๋น์ค ์ ๊ณต ์ ์ฒด) ์บ์ ํ์ธ: ISP๋ DNS ๋ ์ฝ๋ ์บ์๋ฅผ ํฌํจํ๋ ์์ฒด DNS ์๋ฒ๋ฅผ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค. ์ด์ ๋จ๊ณ์์ ์ฐพ์ง ๋ชปํ๋ค๋ฉด ๋ง์ง๋ง์ผ๋ก ISP ์บ์๋ฅผ ํ์ธํฉ๋๋ค.
ISP์ DNS ์๋ฒ์ DNS ์ฟผ๋ฆฌ ์์
์์ฒญํ URL์ DNS ๋ ์ฝ๋ ์บ์ ๋ํด ISP ์บ์์๋ ์๋ค๋ฉด ISP์ DNS ์๋ฒ๋ DNS ์ฟผ๋ฆฌ๋ฅผ ์์ํ์ฌ ํด๋น url์ ํธ์คํ ํ๋ ์๋ฒ์ IP ์ฃผ์๋ฅผ ์ฐพ์ต๋๋ค.
maps.google.com์ ์์๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- maps.google.com์ ๊ฒฝ์ฐ ๋จผ์ DNS recursor๊ฐ Root name ์๋ฒ์ ์ ์ํฉ๋๋ค.
- Root domain ์๋ฒ๋ ์ด๋ฅผ .com domain name ์๋ฒ๋ก ๋ฆฌ๋ค์ด๋ ์ ํฉ๋๋ค.
- com name ์๋ฒ๋ ์ด๋ฅผ google.com name์๋ฒ ๋ก ๋ฆฌ๋ค์ด๋ ์ ํฉ๋๋ค
- google.com name ์๋ฒ๋ DNS ๋ ์ฝ๋์์ maps.google.com๊ณผ ์ผ์นํ๋ IP ์ฃผ์๋ฅผ ์ฐพ์ ์ด๋ฅผ DNS recursor์๊ฒ ๋ฐํํ๊ณ , DNS recursor๋ ์ด๋ฅผ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ๋ก ๋ค์ ๋ณด๋ ๋๋ค.
๋ฃจํธ ๋ค์์๋ฒ๋ถํฐ ์์ํ์ฌ TLD(์ต์์ ๋๋ฉ์ธ) ๋ค์์๋ฒ, ๊ทธ๋ฆฌ๊ณ ์ค์ ๋๋ฉ์ธ์ ๊ด๋ฆฌํ๋ ๋ค์์๋ฒ๊น์ง ์ฌ๊ท์ ์ผ๋ก ์งํ๋๊ณ , ํ์ํ IP ์ฃผ์๋ฅผ ์ฐพ๊ฑฐ๋ ์ฐพ์ ์ ์๋ค๋ ์ค๋ฅ ์๋ต์ ๋ฐํํ ๋๊น์ง ์งํ๋ฉ๋๋ค.
์๋ฒ์์ TCP ์ฐ๊ฒฐ ์์
๋ธ๋ผ์ฐ์ ๋ ์ฐพ์ IP ์ฃผ์์ ๋ํด TCP ์ฐ๊ฒฐ์ ์์ํฉ๋๋ค.
์ด ๊ณผ์ ์ TCP์ 3-way handshake ๊ณผ์ ์ ํตํด ์ด๋ฃจ์ด์ง๋๋ค.
- SYN(Synchronize) ๋จ๊ณ : ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์๊ฒ SYN ํจํท์ ๋ณด๋ด ์ฐ๊ฒฐ์ ์์ฒญ. ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์์ ์ฐ๊ฒฐ์ ์์ํ๊ณ ์ ํ๋ค๋ ๊ฒ์ ์๋ฆฌ๋ ์ ํธ
- SYN-ACK(Synchronize-Acknowledge) ๋จ๊ณ: ์๋ฒ๊ฐ SYN ํจํท์ ๋ฐ์ผ๋ฉด, ํด๋ผ์ด์ธํธ์๊ฒ ์ฐ๊ฒฐ ์์ฒญ์ ์๋ฝํ๋ค๋ ์๋ฏธ์ SYN-ACK ํจํท์ ์ ์ก
- ACK(Acknowledge) ๋จ๊ณ:๋ง์ง๋ง์ผ๋ก, ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ACK ํจํท์ ๋ณด๋ด ์ฐ๊ฒฐ์ ํ์
์ฐ๊ฒฐ์ ์ข ๋ฃ๋ 4-way handshake ๊ณผ์ ์ ํตํด ์ข ๋ฃ๋ฉ๋๋ค.
(ํ์ฌ ๊ณผ์ ์์ ์ฐ๊ฒฐ ์ข ๋ฃ๋ ๋์ง ์์ต๋๋ค.)
- FIN(Finish) ํจํท ์ ์ก: ํด๋ผ์ด์ธํธ๊ฐ ๋จผ์ ์๋ฒ์๊ฒ FIN(Finish) ํจํท์ ๋ณด๋ด ์ฐ๊ฒฐ ์ข ๋ฃ๋ฅผ ์์ฒญํฉ๋๋ค. ์ด ํจํท์ ํด๋ผ์ด์ธํธ๊ฐ ๋ ์ด์ ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์์์ ์๋ฒ์ ์๋ฆฌ๋ ์ ํธ์ ๋๋ค.
- ACK(Acknowledge) ํจํท ์๋ต: ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ FIN ํจํท์ ๋ฐ๊ณ , ์ด๋ฅผ ํ์ธํ์์ ์๋ฆฌ๋ ACK(Acknowledge) ํจํท์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ ๋๋ค.
- ์๋ฒ์ FIN ํจํท ์ ์ก: ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ผ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ก ์๋ฃํ๋ฉด, ์๋ฒ ์ญ์ ํด๋ผ์ด์ธํธ์๊ฒ FIN ํจํท์ ๋ณด๋ ๋๋ค.
- ํด๋ผ์ด์ธํธ์ ACK ํจํท ์๋ต: ๋ง์ง๋ง์ผ๋ก, ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ FIN ํจํท์ ๋ฐ๊ณ ACK ํจํท์ ๋ณด๋ด ์ฐ๊ฒฐ ์ข ๋ฃ๋ฅผ ํ์ ํฉ๋๋ค.
HTTP ์์ฒญ ์ ์ก
TCP ์ฐ๊ฒฐ์ด ์ฑ๊ณต์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ํด๋น url์ ์น ํ์ด์ง์ ๋ํ HTTP ์์ฒญ์ ์น ์๋ฒ์๊ฒ ๋ณด๋ด๊ฒ ๋ฉ๋๋ค.
ํด๋น ๊ณผ์ ์์ ์์ฒญ์ ์ฃผ๋ก GET ์์ฒญ์ด ๋ฐ์ํฉ๋๋ค.
์๋ฒ ์๋ต ์ฒ๋ฆฌ
์น ์๋ฒ๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ HTTP ์๋ต์ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋
๋๋ค.
์๋ต์๋ ์์ฒญํ ์น ํ์ด์ง ๋ฟ๋ง ์๋๋ผ ์ํ ์ฝ๋,ํ์ด์ง ์บ์ ๋ฐฉ๋ฒ( Cache-Control ), ์ค์ ํ ์ฟ ํค, ๊ฐ์ธ์ ๋ณด ์ ๋ณด ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ๋๋ง
๋ง์ง๋ง์ผ๋ก, ๋ธ๋ผ์ฐ์ ๋ ์๋ต ๋ฐ์ HTML์ ๋ ๋๋ง ํ์ฌ ์ฌ์ฉ์์๊ฒ ํ์ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํฌ๋ฆฌํฐ์ปฌ ๋ ๋๋ง ํจ์ค(Critical Rendering Path)๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค.
- DOM ์์ฑ: ๋ธ๋ผ์ฐ์ ๋ HTML์ ๋ฐ์์ Document Object Model(DOM) ํธ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค. ์ด ๋จ๊ณ์์๋ HTML ํ๊ทธ๋ค์ด ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์นํ์ด์ง์ ๊ตฌ์กฐ๋ฅผ ์ ์ํฉ๋๋ค.
- CSSOM ์์ฑ: ๋ธ๋ผ์ฐ์ ๋ CSS๋ฅผ ๋ฐ์์ CSS Object Model(CSSOM) ํธ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค. CSSOM์ ์นํ์ด์ง์ ๊ฐ ์์์ ๋ํ ์คํ์ผ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
- ๋ ๋ ํธ๋ฆฌ ์์ฑ: DOM๊ณผ CSSOM์ ๊ฒฐํฉํ์ฌ ๋ ๋ ํธ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค. ๋ ๋ ํธ๋ฆฌ๋ ์ค์ ๋ก ํ๋ฉด์ ๊ทธ๋ ค์ง ์์๋ค๊ณผ ๊ทธ ์์๋ค์ ์คํ์ผ์ ๋ด๊ณ ์์ต๋๋ค.
- ๋ ์ด์์: ๋ ๋ ํธ๋ฆฌ๋ฅผ ๋ฐํ์ผ๋ก ๋ธ๋ผ์ฐ์ ๋ ๊ฐ ์์์ ํฌ๊ธฐ์ ์์น๋ฅผ ๊ณ์ฐํฉ๋๋ค. ์ด ๋จ๊ณ๋ฅผ ํตํด ์นํ์ด์ง์ ๋ ์ด์์์ด ๊ฒฐ์ ๋ฉ๋๋ค.
- ํ์ธํธ: ๋ง์ง๋ง์ผ๋ก, ๋ธ๋ผ์ฐ์ ๋ ๋ ์ด์์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ ์์๋ฅผ ํ๋ฉด์ ๊ทธ๋ฆฝ๋๋ค.
- ์ถ๊ฐ์ ์ผ๋ก, JavaScript๋ DOM ํธ๋ฆฌ๋ CSSOM ํธ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ, ์ด๋ฐ ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ๋ ๋ ํธ๋ฆฌ๋ฅผ ๋ค์ ๊ณ์ฐ(Reflow)ํ๊ณ ํ๋ฉด์ ๋ค์ ๊ทธ๋ ค์ผ(Repaint) ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ณผ์ ์ ํตํด ์ต์ข ์ ์ธ ์นํ์ด์ง๊ฐ ์ฌ์ฉ์์๊ฒ ์์ฑ๋์ด ํ์๋ฉ๋๋ค!
๐ ๋ง์น๋ฉฐ
ํ์ ์ด์ฉํ ๋๋ ๋ชฐ๋์ง๋ง ์งง์ ์๊ฐ ์์ ๋ง์ ์ผ๋ค์ด ์ผ์ด๋๋ ๊ฒ์ ๋ํด์ ํฅ๋ฏธ๋ก์ด ๊ฒ ๊ฐ์ต๋๋ค๐
์ฐธ๊ณ ๋ฌธํ: