ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Web

[Web] ๋ธŒ๋ผ์šฐ์ €์— URL์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ๊นŒ์š”?

์šฉ๋‡ฝ 2023. 11. 28. 21:26
๋ฐ˜์‘ํ˜•

[Web] ๋ธŒ๋ผ์šฐ์ €์— URL์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ๊นŒ์š”?

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ

๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— url์„ ์ž…๋ ฅํ•˜๋ฉด ์ƒ๊ธฐ๋Š” ๊ณผ์ •๋“ค์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

DNS ๋ ˆ์ฝ”๋“œ ํ™•์ธ

์ฒซ ๋ฒˆ์งธ๋กœ, ๋ธŒ๋ผ์šฐ์ €๋Š” DNS(Domain Name Server) ๋ ˆ์ฝ”๋“œ์˜ ์บ์‹œ๋ฅผ ํ™•์ธํ•˜์—ฌ ํ•ด๋‹น URL์˜ IP ์ฃผ์†Œ๋ฅผ ์ฐพ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

DNS(Domain Name Server)๋ž€?
DNS๋Š” ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. DNS๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„๊ณผ IP ์ฃผ์†Œ๋ฅผ ๋งคํ•‘ํ•ด์ฃผ๋Š” ์„œ๋ฒ„๋กœ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ธํ„ฐ๋„ท ์ž์›์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
์ฆ‰, DNS๋Š” ์ „ํ™”๋ฒˆํ˜ธ๋ถ€์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ์ด๋ฆ„์œผ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์„ ์ฐพ๋“ฏ์ด, ์ปดํ“จํ„ฐ๋Š” DNS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น์‚ฌ์ดํŠธ์˜ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ํ•ด๋‹น IP ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ณผ์ •์—์„œ ์•„๋ž˜์˜ ์ˆœ์„œ๋กœ ํ™•์ธ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  1. ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ ํ™•์ธ: ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด์ „์— ๋ฐฉ๋ฌธํ•œ ์›น์‚ฌ์ดํŠธ์— ๋Œ€ํ•ด ๊ณ ์ •๋œ ๊ธฐ๊ฐ„ ๋™์•ˆ DNS ๋ ˆ์ฝ”๋“œ ์ €์žฅ์†Œ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฒซ ๋ฒˆ์งธ ๊ณผ์ •์œผ๋กœ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋ฅผ ๋จผ์ € ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. OS ์บ์‹œ ํ™•์ธ: ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ์—†๋Š” ๊ฒฝ์šฐ, OS๋Š” DNS ๋ ˆ์ฝ”๋“œ ์บ์‹œ๋„ ์œ ์ง€ํ•˜๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ธฐ๋ณธ ์ปดํ“จํ„ฐ OS์— ์‹œ์Šคํ…œ ํ˜ธ์ถœ(์˜ˆ: Windows์˜ ๊ฒฝ์šฐ gethostname )์„ ๋ณด๋‚ด ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  3. ๋ผ์šฐํ„ฐ ์บ์‹œ ํ™•์ธ: ์ปดํ“จํ„ฐ์— ์—†์œผ๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์ž์ฒด DNS ๋ ˆ์ฝ”๋“œ ์บ์‹œ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๋ผ์šฐํ„ฐ์™€ ํ†ต์‹ ํ•˜์—ฌ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. ISP(์ธํ„ฐ๋„ท ์„œ๋น„์Šค ์ œ๊ณต ์—…์ฒด) ์บ์‹œ ํ™•์ธ: ISP๋Š” DNS ๋ ˆ์ฝ”๋“œ ์บ์‹œ๋ฅผ ํฌํ•จํ•˜๋Š” ์ž์ฒด DNS ์„œ๋ฒ„๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ๋งˆ์ง€๋ง‰์œผ๋กœ ISP ์บ์‹œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ISP์˜ DNS ์„œ๋ฒ„์˜ DNS ์ฟผ๋ฆฌ ์‹œ์ž‘

์š”์ฒญํ•œ URL์˜ DNS ๋ ˆ์ฝ”๋“œ ์บ์‹œ ๋Œ€ํ•ด ISP ์บ์‹œ์—๋„ ์—†๋‹ค๋ฉด ISP์˜ DNS ์„œ๋ฒ„๋Š” DNS ์ฟผ๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ ํ•ด๋‹น url์„ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

maps.google.com์„ ์˜ˆ์‹œ๋กœ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. maps.google.com์˜ ๊ฒฝ์šฐ ๋จผ์ € DNS recursor๊ฐ€ Root name ์„œ๋ฒ„์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.
  2.  Root domain ์„œ๋ฒ„๋Š” ์ด๋ฅผ .com domain name ์„œ๋ฒ„๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ํ•ฉ๋‹ˆ๋‹ค. 
  3. com name ์„œ๋ฒ„๋Š” ์ด๋ฅผ google.com name์„œ๋ฒ„ ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ํ•ฉ๋‹ˆ๋‹ค 
  4. google.com name ์„œ๋ฒ„๋Š” DNS ๋ ˆ์ฝ”๋“œ์—์„œ maps.google.com๊ณผ ์ผ์น˜ํ•˜๋Š” IP ์ฃผ์†Œ๋ฅผ ์ฐพ์•„ ์ด๋ฅผ DNS recursor์—๊ฒŒ ๋ฐ˜ํ™˜ํ•˜๊ณ , DNS recursor๋Š” ์ด๋ฅผ ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋‹ค์‹œ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๋ฃจํŠธ ๋„ค์ž„์„œ๋ฒ„๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ TLD(์ตœ์ƒ์œ„ ๋„๋ฉ”์ธ) ๋„ค์ž„์„œ๋ฒ„, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ๋„๋ฉ”์ธ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋„ค์ž„์„œ๋ฒ„๊นŒ์ง€ ์žฌ๊ท€์ ์œผ๋กœ ์ง„ํ–‰๋˜๊ณ , ํ•„์š”ํ•œ IP ์ฃผ์†Œ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ์˜ค๋ฅ˜ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•  ๋•Œ๊นŒ์ง€ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„์™€์˜ TCP ์—ฐ๊ฒฐ ์‹œ์ž‘

๋ธŒ๋ผ์šฐ์ €๋Š” ์ฐพ์€ IP ์ฃผ์†Œ์— ๋Œ€ํ•ด TCP ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์€ TCP์˜ 3-way handshake ๊ณผ์ •์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

  1. SYN(Synchronize) ๋‹จ๊ณ„ : ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ SYN ํŒจํ‚ท์„ ๋ณด๋‚ด ์—ฐ๊ฒฐ์„ ์š”์ฒญ. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์™€์˜ ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•˜๊ณ ์ž ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ฆฌ๋Š” ์‹ ํ˜ธ
  2. SYN-ACK(Synchronize-Acknowledge) ๋‹จ๊ณ„: ์„œ๋ฒ„๊ฐ€ SYN ํŒจํ‚ท์„ ๋ฐ›์œผ๋ฉด, ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ์ˆ˜๋ฝํ•œ๋‹ค๋Š” ์˜๋ฏธ์˜ SYN-ACK ํŒจํ‚ท์„ ์ „์†ก
  3. ACK(Acknowledge) ๋‹จ๊ณ„:๋งˆ์ง€๋ง‰์œผ๋กœ, ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ ACK ํŒจํ‚ท์„ ๋ณด๋‚ด ์—ฐ๊ฒฐ์„ ํ™•์ •

์—ฐ๊ฒฐ์˜ ์ข…๋ฃŒ๋Š” 4-way handshake ๊ณผ์ •์„ ํ†ตํ•ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

(ํ˜„์žฌ ๊ณผ์ •์—์„œ ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋Š” ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

  1. FIN(Finish) ํŒจํ‚ท ์ „์†ก: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋จผ์ € ์„œ๋ฒ„์—๊ฒŒ FIN(Finish) ํŒจํ‚ท์„ ๋ณด๋‚ด ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒจํ‚ท์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋” ์ด์ƒ ์ „์†กํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ์„ ์„œ๋ฒ„์— ์•Œ๋ฆฌ๋Š” ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.
  2. ACK(Acknowledge) ํŒจํ‚ท ์‘๋‹ต: ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ FIN ํŒจํ‚ท์„ ๋ฐ›๊ณ , ์ด๋ฅผ ํ™•์ธํ–ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ACK(Acknowledge) ํŒจํ‚ท์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  3. ์„œ๋ฒ„์˜ FIN ํŒจํ‚ท ์ „์†ก: ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ผ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก ์™„๋ฃŒํ•˜๋ฉด, ์„œ๋ฒ„ ์—ญ์‹œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ FIN ํŒจํ‚ท์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  4. ํด๋ผ์ด์–ธํŠธ์˜ 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) ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ํ†ตํ•ด ์ตœ์ข…์ ์ธ ์›นํŽ˜์ด์ง€๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์™„์„ฑ๋˜์–ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค!

๐Ÿ“• ๋งˆ์น˜๋ฉฐ

ํ‰์†Œ ์ด์šฉํ•  ๋•Œ๋Š” ๋ชฐ๋ž์ง€๋งŒ ์งง์€ ์‹œ๊ฐ„ ์•ˆ์— ๋งŽ์€ ์ผ๋“ค์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค๐Ÿ˜Š

 

์ฐธ๊ณ  ๋ฌธํ—Œ:

๋ฐ˜์‘ํ˜•