TIL 24. Working principle of browser

Drageon Leeยท2021๋…„ 12์›” 29์ผ
0

CS

๋ชฉ๋ก ๋ณด๊ธฐ
1/9

Today's topic

์ด๋ฒˆ post์—์„œ๋Š” browser์˜ ์ž‘๋™์›๋ฆฌ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค.

๐Ÿ‘‰ What is browser?

Browser๋Š” ๋™๊ธฐ(Synchronous)์ ์œผ๋กœ HTML + CSS, Javascript ์–ธ์–ด๋ฅผ ํ•ด์„ํ•˜์—ฌ ๋‚ด์šฉ์„ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๋Š” ์‘์šฉ ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค.

๐Ÿ‘‰ Components of browser

1๏ธโƒฃ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค

์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ. URI๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ ํ‘œ์‹œ์ค„, ์ด์ „/๋‹ค์Œ ๋ฒ„ํŠผ, ๋ถ๋งˆํฌ ๋ฉ”๋‰ด, ์ƒˆ๋กœ ๊ณ ์นจ ๋ฒ„ํŠผ๊ณผ ํ˜„์žฌ ๋ฌธ์„œ์˜ ๋กœ๋“œ๋ฅผ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ์ •์ง€ ๋ฒ„ํŠผ , ํ™ˆ ๋ฒ„ํŠผ ๋“ฑ ์š”์ฒญํ•œ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ฐฝ์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ชจ๋“  ๋ถ€๋ถ„์ด ํ•ด๋‹น๋จ.

2๏ธโƒฃ ๋ธŒ๋ผ์šฐ์ € ์—”์ง„

์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ Œ๋”๋ง ์—”์ง„ ์‚ฌ์ด์˜ ๋™์ž‘์„ ์ œ์–ดํ•จ.
Data Storage๋ฅผ ์ฐธ์กฐํ•˜๋ฉฐ ๋กœ์ปฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ณ  ์ฝ์œผ๋ฉด์„œ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ํ•จ.

3๏ธโƒฃ ๋ Œ๋”๋ง ์—”์ง„

์›น ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต ๋ฐ›์€ ์ž์›์„ ์›น ๋ธŒ๋ผ์šฐ์ € ์ƒ์— ๋‚˜ํƒ€๋ƒ„. ์˜ˆ๋ฅผ ๋“ค์–ด HTML ๋ฌธ์„œ๋ฅผ ์‘๋‹ต๋ฐ›์œผ๋ฉด HTML๊ณผ CSS๋ฅผ ํŒŒ์‹ฑ ํ•˜์—ฌ ํ™”๋ฉด์— ํ‘œ์‹œํ•จ.

๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML ๋ฌธ์„œ๋ฅผ ์‘๋‹ต๋ฐ›์œผ๋ฉด ๋ Œ๋”๋ง ์—”์ง„์˜ HTML ํŒŒ์„œ์™€ CSS ํŒŒ์„œ์— ์˜ํ•ด ํŒŒ์‹ฑ(parsing)๋˜์–ด DOM, CSSOM ํŠธ๋ฆฌ๋กœ ๋ณ€ํ™˜๋˜๊ณ  ๋ Œ๋” ํŠธ๋ฆฌ๋กœ ๊ฒฐํ•ฉ์„ ์ง„ํ–‰ํ•จ. ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ„.

4๏ธโƒฃ ํ†ต์‹ 

HTTP ์š”์ฒญ๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์— ์‚ฌ์šฉ. ์ด๊ฒƒ์€ ํ”Œ๋žซํผ ๋…๋ฆฝ์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค์ด๊ณ  ๊ฐ ํ”Œ๋žซํผ ํ•˜๋ถ€์—์„œ ์‹คํ–‰๋จ.

5๏ธโƒฃ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•ด์„๊ธฐ

JavaScript code๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•จ.

6๏ธโƒฃ UI ๋ฐฑ์—”๋“œ

select, input ๋“ฑ ๊ธฐ๋ณธ์ ์ธ ์œ„์ ฏ์„ ๊ทธ๋ฆฌ๋Š” ์ธํ„ฐํŽ˜์ด์Šค

7๏ธโƒฃ ์ž๋ฃŒ ์ €์žฅ์†Œ

Cookie, Local Storage, Indexed DB ๋“ฑ ๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ์˜์—ญ

๐Ÿ‘‰ Role of browser

1๏ธโƒฃ Web server์— ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ(์›ํ•˜๋Š”) ์›นํŽ˜์ด์ง€, ์ด๋ฏธ์ง€, ๋™์˜์ƒ ๋“ฑ์˜ ์ž์›์„ ์š”์ฒญํ•˜๋Š” ์—ญํ• 
2๏ธโƒฃ Web server๋กœ ๋ถ€ํ„ฐ ์ „๋‹ฌ ๋ฐ›์€ ์œ„์™€ ๊ฐ™์€ ์ž๋ฃŒ๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๋Š” ์—ญํ• 
โ—๏ธ ์—ฌ๊ธฐ์„œ rendering engine์ด ๋ฐ›์•„์˜จ data๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๋Š”๋ฐ main ์—ญํ• ์„ ํ•จ.

๐Ÿ‘‰ What is rendering engine?

๋ Œ๋”๋ง ์—”์ง„์€ HTML, XML, ์ด๋ฏธ์ง€ ๋“ฑ ์š”์ฒญ๋ฐ›์€ ๋‚ด์šฉ์„ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ์—”์ง„

๐Ÿ‘‰ How it works?

1๏ธโƒฃ HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ DOM tree ๊ตฌ์ถ•
2๏ธโƒฃ CSSํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ํฌํ•จ๋œ ์Šคํƒ€์ผ ์š”์†Œ ํŒŒ์‹ฑ
3๏ธโƒฃ DOM tree์™€ ์Šคํƒ€์ผ ์š”์†Œ ํŒŒ์‹ฑํ•œ ๊ฒƒ์„ ํ•ฉ์ณ์„œ ๋ Œํ„ฐ ํŠธ๋ฆฌ ๊ตฌ์ถ•
4๏ธโƒฃ ๋ Œ๋” ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ์— ๋Œ€ํ•ด ๋ฐฐ์น˜ํ•  ๊ณณ์„ ๊ฒฐ์ •
5๏ธโƒฃ UI ๋ฐฑ์—”๋“œ์—์„œ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๊ทธ๋ฆฌ๊ณ , ํ™”๋ฉด์— ๋‚˜ํƒ€๋ƒ„

๐Ÿ– ์ข€ ๋” ์ž์„ธํ•œ ๋ชจ์‹๋„

๐Ÿ“– ์ถœ์ฒ˜
https://bbangson.tistory.com/87 [๋บ‘์Šจ ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ]
https://all-young.tistory.com/22
https://d2.naver.com/helloworld/59361

My opinion

์ด๋ฒˆ posting์„ ์ž‘์„ฑํ•˜๋ฉด์„œ browser์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ™”๋ฉด์—์„œ ๋ณด๊ธฐ ๊นŒ์ง€ ํ™”๋ฉด ๋’ค์—์„œ ์ˆ˜ ๋งŽ์€ interaction์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ํฅ๋ฏธ๋กญ๊ฒŒ ๋‹ค๊ฐ€์™”๊ณ  ๋ณด๋ฉด ๋ณผ ์ˆ˜๋ก ์ ์  ๋” ๊นŠ๊ฒŒ ์•Œ๊ณ  ์‹ถ์€ ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.
์•ž์œผ๋กœ ํ•˜๋‚˜์”ฉ ํ•˜๋‚˜์”ฉ deepํ•˜๊ฒŒ ์•Œ์•„๊ฐ€์•ผ ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•œ๋‹ค.

profile
์šด๋™ํ•˜๋Š” ๊ฐœ๋ฐœ์ž

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด

Powered by GraphCDN, the GraphQL CDN