๐Ÿคทโ€โ™€๏ธ ๊ฐœ๋…๊ณต๋ถ€:https://www.naver.com/์„ ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— ์ž…๋ ฅํ•˜๊ณ  ๋„ค์ด๋ฒ„ ํ™ˆํŽ˜์ด์ง€๊ฐ€ ๋ Œ๋”๋ง ๋˜๊ธฐ๊นŒ์ง€ ์ผ์–ด๋‚˜๋Š” ์ž‘์—…๋“ค!

Ko Seoyoungยท2021๋…„ 3์›” 21์ผ
0

https://www.naver.com/๋Š” ๋ฆฌ์†Œ์Šค์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” url(Uniform Resource Locator)์ด๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— https://www.naver.com/ ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •์„ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋ˆ  ์‚ดํŽด๋ณด์ž.

1๏ธโƒฃ ์ฒซ๋ฒˆ์งธ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์ „๋‹ฌ๋ฐ›๋Š” ๊ณผ์ •์ด๊ณ 
2๏ธโƒฃ ๋‘๋ฒˆ์งธ๋Š” ์ „๋‹ฌ๋ฐ›์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ Œ๋”๋งํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.


1๏ธโƒฃ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์ „๋‹ฌ๋ฐ›๋Š” ๊ณผ์ •

ํ™ˆํŽ˜์ด์ง€์˜ ๋ฆฌ์†Œ์Šค๋“ค์€ ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์— ์ €์žฅ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ , ์ฒœํ‚ค๋กœ ์ด์ƒ ๋–จ์–ด์ง„ ๋ฐ์ดํ„ฐ์„ผํ„ฐ์— ์ €์žฅ๋˜์–ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด ์–ด๋–ป๊ฒŒ ์œ ์ €์˜ ๋ชจ๋ฐ”์ผ์ด๋‚˜ ๋ฐ์Šคํฌํƒ‘์œผ๋กœ ์ •๋ณด๊ฐ€ ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ์ธ์ง€ ์‚ดํŽด๋ณด์ž!

(1) ์‚ฌ์šฉ์ž๊ฐ€ URL์„ ์ž…๋ ฅํ•œ๋‹ค.

(2) ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์˜ URL์—์„œ ํ˜ธ์ŠคํŠธ๋ช…www.naver.com์„ ์ถ”์ถœํ•œ๋‹ค.

(3) ์›น๋ธŒ๋ผ์šฐ์ €๋Š” DNS ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋ƒ„์œผ๋กœ์จ IP๋ฅผ ์•Œ์•„๋‚ด๊ณ , ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ๋ช…์„ IP๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

โœ‹IP ์ฃผ์†Œ๋ž€ ๋ฌด์—‡์ผ๊นŒ?

๋„คํŠธ์›Œํ‚น์ด ๊ฐ€๋Šฅํ•œ ์žฅ๋น„(PC, ์„œ๋ฒ„์žฅ๋น„, ์Šค๋งˆํŠธํฐ, ํ…Œ๋ธ”๋ฆฟ ๋“ฑ ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋˜๋Š” ๋ชจ๋“  ์žฅ๋น„)๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์ฃผ์†Œ์ด๋‹ค.

ip ์ฃผ์†Œ๋Š” ๋งˆ์น˜ ์ง‘์ฃผ์†Œ์™€ ๊ฐ™์ด ์ปดํ“จํ„ฐ์˜ ์œ„์น˜๋ฅผ ํŠน์ •ํ•˜๋Š” ์ผ์ข…์˜ ์ฃผ์†Œ๋กœ ํ†ต์‹ ๊ธฐ์— ํ•˜๋‚˜์”ฉ ๋ถ€์—ฌ๊ฐ€๋˜๊ณ , 12๊ฐœ์˜ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.

๋‹ค์Œ์€ ping์„ ํ†ตํ•ด ๋„ค์ด๋ฒ„์˜ ip์ฃผ์†Œ๋ฅผ ์•Œ์•„๋ณธ ๊ฒƒ์ด๋‹ค.
๋„ค์ด๋ฒ„ ip์ฃผ์†Œ: 125.209.222.142

โœ‹ DNS(Domain Name System)๋ž€ ๋ฌด์—‡์ผ๊นŒ?

๋„๋ฉ”์ธ ๋„ค์ž„? ip์ฃผ์†Œ๋Š” 12๊ฐœ์˜ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด ์‚ฌ๋žŒ์ด ์ด๋ฅผ ๋‹ค ๊ธฐ์–ตํ•˜๊ธฐ ํž˜๋“ค๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๋„๋ฉ”์ธ๋„ค์ž„์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋•๋ถ„์— 125.209.222.142์™€ ๊ฐ™์ด ๋ณต์žกํ•œ ip์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ naver.com์„ ํ†ตํ•ด ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด naver.com๋งŒ์„ ๋ณด๊ณ  ip์ฃผ์†Œ๋ฅผ ์–ด๋–ป๊ฒŒ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ? ์ด๋Š” DNS์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์•Œ์ˆ˜์žˆ๋‹ค. DNS ์„œ๋ฒ„๋Š” ๋งˆ์น˜ ์‚ฌ๋žŒ ์ด๋ฆ„๋งŒ ์•Œ๊ณ  ์žˆ์„ ๋•Œ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ „ํ™”๋ฒˆํ˜ธ๋ถ€์™€ ๊ฐ™์ด ๋„๋ฉ”์ธ ๋„ค์ž„์œผ๋กœ ip์ฃผ์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

(4) ์›น๋ธŒ๋ผ์šฐ์ €๋Š” URL์—์„œ ํฌํŠธ๋ฒˆํ˜ธ(์žˆ๋‹ค๋ฉด)๋ฅผ ์ถ”์ถœํ•œ๋‹ค.

์›ฐ๋“œ์™€์ด๋“œ์›น url์€ ๊ธฐ๋ณธ ํฌํŠธ๊ฐ’์œผ๋กœ 80์„ ์‚ฌ์šฉํ•˜๊ณ , ์ด๋Š” url์—์„œ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ‹ ํฌํŠธ๋ฒˆํ˜ธ: ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋‹จ์œ„์ด๋‹ค.
ex) ํƒ๋ฐฐ๋ฅผ ์‹œํ‚จ๋‹ค๊ณ  ํ• ๋•Œ, ip์ฃผ์†Œ๋Š” ์ง‘์ฃผ์†Œ์™€ ๊ฐ™๊ณ  ํฌํŠธ๋ฒˆํ˜ธ๋Š” ํƒ๋ฐฐ๋ฅผ ๋ฐ›๋Š” ์‚ฌ๋žŒ(์—„๋งˆ์ธ์ง€ ๋‚˜์ธ์ง€)์— ํ•ด๋‹นํ•œ๋‹ค.

(5) ์›น๋ธŒ๋ผ์šฐ์ €๋Š” ์›น์„œ๋ฒ„์™€ TCP ์ปค๋„ฅ์…˜์„ ๋งบ๋Š”๋‹ค.

โœ‹ TCP๋Š” ์ „์†ก๊ณ„์ธต์˜ ํ”„๋กœํ† ์ฝœ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์ธ HTTP์˜ ํ•˜์œ„ ๊ณ„์ธต์ด๋‹ค. TCP๋Š” ์˜ค๋ฅ˜์—†์ด ์‹ ๋ขฐ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก๊ณผ ์ˆœ์„œ์— ๋งž๋Š” ์ „๋‹ฌ, ์กฐ๊ฐ๋‚˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ๋“ฑ์„ ๋ณด์žฅํ•œ๋‹ค.

(6) ์›น๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„์— HTTP ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

(7) ์„œ๋ฒ„๋Š” ์›น๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ HTTP ์‘๋‹ต์„ ๋Œ๋ ค์ค€๋‹ค.

(8) ์ปค๋„ฅ์…˜์ด ๋‹ซํžˆ๋ฉด, ์›น๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฌธ์„œ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

์ด๋•Œ ๋ฌธ์„œ๋Š” ๊ด‘์„ฌ์œ  ์ผ€์ด๋ธ”์„ ํ†ตํ•ด ์ง์ ‘ ์ „๋‹ฌ ๋˜๊ฑฐ๋‚˜, ๊ด‘์„ฌ์œ  ์ผ€์ด๋ธ”์— ์—ฐ๊ฒฐ๋œ ์™€์ดํŒŒ์ด์— ์ ‘์†ํ•˜์—ฌ ์ „๋‹ฌ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.


2๏ธโƒฃ ์ „๋‹ฌ๋ฐ›์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ๋ Œ๋”๋ง๋˜๋Š” ๊ณผ์ •

1๏ธโƒฃ ๊ณผ์ •์œผ๋กœ๋ถ€ํ„ฐ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ „๋‹ฌ ๋ฐ›์€ ํ›„ ์ผ์–ด๋‚˜๋Š” ์ผ์€, ์šฐ๋ฆฌ๊ฐ€ ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ™”๋ฉด์— ์ด ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ทธ๋ ค์ง€๋Š” ๊ณผ์ •์ด๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์€ ๋ธŒ๋ผ์šฐ์ €์˜ ๋žœ๋”๋ง ์—”์ง„์—์„œ ๋™์ž‘ํ•œ๋‹ค.

โœ‹ ๋ Œ๋”๋ง ์—”์ง„: ์š”์ฒญํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ํ‘œ์‹œ. ์˜ˆ๋ฅผ ๋“ค์–ด HTML์„ ์š”์ฒญํ•˜๋ฉด HTML๊ณผ CSS๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ ํ™”๋ฉด์— ํ‘œ์‹œํ•จ.
(ํŒŒ์ด์–ดํญ์Šค๋Š” ๋ชจ์งˆ๋ผ์—์„œ ์ง์ ‘๋งŒ๋“  ๊ฒŒ์ฝ”(Gaeko) ์—”์ง„์„ ์‚ฌ์šฉ, ์‚ฌํŒŒ๋ฆฌ์™€ ํฌ๋กฌ์€ ์›นํ‚ท(Webkit) ์—”์ง„ ์‚ฌ์šฉ)


(1) ๋ Œ๋”๋ง ์—”์ง„์€ ํ†ต์‹ ์œผ๋กœ๋ถ€ํ„ฐ HTML๊ณผ CSS์™€ ๊ฐ™์€ ์š”์ฒญํ•œ ๋ฌธ์„œ์˜ ๋‚ด์šฉ์„ ์–ป๋Š”๋‹ค.

(2) ๋ Œ๋”๋ง ์—”์ง„์€ HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  "์ฝ˜ํ…์ธ  ํŠธ๋ฆฌ" ๋‚ด๋ถ€์—์„œ ํƒœ๊ทธ๋ฅผ DOM ๋…ธ๋“œ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ ์™ธ๋ถ€ CSS ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ํฌํ•จ๋œ ์Šคํƒ€์ผ ์š”์†Œ๋„ ํŒŒ์‹ฑํ•˜๊ณ  CSSOM ๋ชจ๋ธ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

(3) ์Šคํƒ€์ผ ์ •๋ณด์™€ HTML ํ‘œ์‹œ ๊ทœ์น™์€๋ Œ๋” ํŠธ๋ฆฌ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๋˜ ๋‹ค๋ฅธ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ, ์ด๋Š” DOM ํŠธ๋ฆฌ๊ฐ€ ๊ตฌ์ถ•๋˜๋Š” ๋™์•ˆ ๋ธŒ๋ผ์šฐ์ €์— ์˜ํ•ด ๊ตฌ์ถ•๋œ๋‹ค. ๊ทธ ์ „์— DOM ๋…ธ๋“œ์™€ ์‹œ๊ฐ ์ •๋ณด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ •์ธ ์–ดํ…Œ์น˜๋จผํŠธ๋ฅผ ํ•œ๋‹ค.

โœ‹ ๋ Œ๋” ํŠธ๋ฆฌ๋Š” ํ‘œ์‹œํ•ด์•ผ ํ•  ์ˆœ์„œ์™€ ๋ฌธ์„œ์˜ ์‹œ๊ฐ์ ์ธ ๊ตฌ์„ฑ ์š”์†Œ๋กœ์จ ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ๋‚ด์šฉ์„ ๊ทธ๋ ค๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์ด ์žˆ๋‹ค.
(๊ฒŒ์ฝ”๋Š” ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ "ํ˜•์ƒ ํŠธ๋ฆฌ(frame tree)"๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.)

โœ‹ ๋ Œ๋” ๊ฐ์ฒด: ๋ Œ๋”ํŠธ๋ฆฌ์˜ ๊ตฌ์„ฑ์š”์†Œ๋กœ ๋ Œ๋”๋Ÿฌ๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ ์ƒ‰์ƒ ๋˜๋Š” ๋„ˆ๋น„, ๋†’์ด, ๋ฉด์ ๊ณผ ๊ฐ™์€ ์‹œ๊ฐ์  ์†์„ฑ์ด ์žˆ๋Š” ๊ธฐํ•˜ํ•™์  ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค. (๊ฒŒ์ฝ”์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๊ฐ ์š”์†Œ๋ฅผ "ํ˜•์ƒ(frame)"์ด๋ผ๊ณ  ํ•œ๋‹ค.)

๋ Œ๋”๋Ÿฌ๋Š” ์ž์‹ ๊ณผ ์ž์‹ ์š”์†Œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜ํ•˜๊ณ  ๊ทธ๋ ค๋‚ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ๋Š”๋ฐ, ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

class RenderObject { virtual  
    void layout(); virtual
    void paint(PaintInfo); virtual
    void rect repaintRect();
    Node * node; //the DOM node
    RenderStyle * style; // the computed style
    RenderLayer * containgLayer; //the containing z-index layer
}

(4) ๋ Œ๋”๋Ÿฌ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ๋žœ๋” ํŠธ๋ฆฌ์— ์ถ”๊ฐ€๋  ๋•Œ ํฌ๊ธฐ์™€ ์œ„์น˜ ์ •๋ณด๋Š” ์—†๋Š”๋ฐ ์ด๋Ÿฐ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์„ ๋ฐฐ์น˜(layout) ๋˜๋Š” ๋ฆฌํ”Œ๋กœ(๊ฒŒ์ฝ”์—์„œ๋Š” reflow)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์ด ๊ณผ์ •์—์„œ ๋ทฐํฌํŠธ๋‚ด์— ๊ฐ ๋…ธ๋“œ๋“ค์ด ์ถœ๋ ฅ๋  ์ •ํ™•ํ•œ ์œ„์น˜์™€ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

(reflow: ์–ด๋– ํ•œ ์•ก์…˜, ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด html ์š”์†Œ์˜ ํฌ๊ธฐ, ๋ ˆ์ด์•„์›ƒ์ด ์ˆ˜์ •๋˜๋ฉด ๊ทธ์— ์˜ํ–ฅ๋ฐ›๋Š” ์ž์‹, ๋ถ€๋ชจ ๋…ธ๋“œ ํฌํ•จํ•˜์—ฌ ๋ ˆ์ด์•„์›ƒ ๊ณผ์ • ๋‹ค์‹œ ์ˆ˜ํ–‰ (๋ Œ๋”ํŠธ๋ฆฌ ์š”์†Œ ์œ„์น˜ ๋‹ค์‹œ ๊ณ„์‚ฐ))

(5) Paint: ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ณ„์‚ฐํ•œ ๋ ˆ์ด์•„์›ƒ ์š”์†Œ๋“ค์„ ์‹ค์ œ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •์ด ์ง„ํ–‰๋œ๋‹ค.

๊ทธ๋ฆฌ๊ธฐ ๋‹จ๊ณ„์—์„œ๋Š” ํ™”๋ฉด์— ๋‚ด์šฉ์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ๋ Œ๋” ํŠธ๋ฆฌ๊ฐ€ ํƒ์ƒ‰๋˜๊ณ  ๋ Œ๋”๋Ÿฌ์˜ "paint" ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ธฐ๋Š” UI ๊ธฐ๋ฐ˜์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

(repaint : ๋ฆฌํ”Œ๋กœ์šฐ ๋ฐ˜์˜ ์œ„ํ•ด paint ๊ณผ์ • ๋‹ค์‹œ ์ˆ˜ํ–‰. ๋ฐฐ๊ฒฝ์ƒ‰, visibility ๊ฐ™์ด ๋ ˆ์ด์•„์›ƒ์— ์˜ํ–ฅ ์—†๋Š” ๊ฒƒ์€ repaint ๋งŒ ์ˆ˜ํ–‰)


์ฐธ๊ณ ์ž๋ฃŒ

HTTP ์™„๋ฒฝ ๊ฐ€์ด๋“œ

https://www.youtube.com/watch?v=x3c1ih2NJEg

https://d2.naver.com/helloworld/59361 (+๊ทธ๋ฆผ์ถœ์ฒ˜)

profile
Web Frontend Developer ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป #React #Nextjs #ApolloClient

0๊ฐœ์˜ ๋Œ“๊ธ€