๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

CS

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ • ์ดํ•ดํ•˜๊ธฐ

์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฃผ์†Œ์ฐฝ์— google.com์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ? 

๋ฉด์ ‘ ์งˆ๋ฌธ์œผ๋กœ ๋งŽ์ด ๋‚˜์˜ค๋Š” ์งˆ๋ฌธ์ด๋‹ค.

 

ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๊ด€์ ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ํ•˜๋‚˜๋Š”, ๋„คํŠธ์›Œํฌ ๊ด€์ ์ด๊ณ  ๋˜ ํ•˜๋‚˜๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ํŽ˜์ด์ง€๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ด€์ ์ด๋‹ค.

 

์ ์  ์ž์„ธํžˆ ๋“ค์—ฌ๋‹ค๋ณผ์ˆ˜๋ก ๋„ˆ๋ฌด ๋ณต์žกํ•˜๋‹ค.

 

์šฐ์„  ๋„คํŠธ์›Œํฌ ๊ด€์ ๋ถ€ํ„ฐ ์•Œ์•„๋ณด๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ํ๋ฆ„์„ ๊ฐ–๋Š”๋‹ค.

์›น ๋™์ž‘ ๋ฐฉ์‹

  1. ์‚ฌ์šฉ์ž๊ฐ€ ์ฃผ์†Œ์ฐฝ์— url์„ ์ž…๋ ฅํ•˜๋ฉด HTTP request message๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  2. IP ์ฃผ์†Œ๋ฅผ ์•Œ์•„์•ผ ์ „์†กํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ DNS๋ฅผ ํ†ตํ•ด serverIP์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ธ๋‹ค.
  3. ๋ธŒ๋ผ์šฐ์ €๋Š” server IP์™€ 3 way handshake ๊ณผ์ •์„ ๊ฐ–๋Š”๋‹ค.(TCP ์—ฐ๊ฒฐ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •)
    ์ด ๊ณผ์ •์€ TCP/IP ํ”„๋กœํ† ์ฝœ์„ ํ†ต์‹ ํ•˜๊ธฐ ์ „ ์ •ํ™•ํ•œ ์ •๋ณด ์ „์†ก์„ ์œ„ํ•ด ์ƒํƒœ๋ฐฉ ์ปดํ“จํ„ฐ์™€ ์„ธ์…˜์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
    1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์ ‘์†์„ ์š”์ฒญํ•˜๋Š” SYN ํŒจํ‚ท์„ ๋ณด๋‚ธ๋‹ค.
    2. ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜๋Š” ACK ํŒจํ‚ท์„ ํฌํ•จํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ธ๋‹ค (SYN + ACK)
    3. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๊ฒƒ์„ ์ˆ˜์‹ ํ•œ ํ›„ ๋ฐ›์€ ACK ํŒจํ‚ท์„ ์„œ๋ฒ„์—๊ฒŒ ๋ฐœ์†กํ•˜๋ฉด ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ง€๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
  4. ๋ธŒ๋ผ์šฐ์ €๋Š” server IP์—๊ฒŒ ์ž๋ฃŒ๋ฅผ ์š”์ฒญํ•˜๋Š” HTTP request message๋ฅผ ๋งŒ๋“ค๊ณ  TCP/IP ํŒจํ‚ท์„ ์ƒ์„ฑํ•œ ์ดํ›„ ์„œ๋ฒ„๋กœ ์ „์†ก ์š”์ฒญ์„ ํ•œ๋‹ค.
  5. server์—์„œ HTTP request๋ฅผ unpacking ํ•ด์„œ server process๋กœ ๋ณด๋‚ธ ํ›„
    request์— ๋Œ€ํ•œ HTTP response message๋ฅผ ๋งŒ๋“  ํ›„ TCP/IP ํŒจํ‚ท์„ ์ƒ์„ฑํ•œ ์ดํ›„ ์ „๋‹ฌ๋ฐ›์€ ๋ฐฉ์‹๋Œ€๋กœ client๋กœ ์ „์†กํ•œ๋‹ค.
  6. HTTP response message๊ฐ€ ๋„์ฐฉํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์•˜๋‹ค๋ฉด TCP ์ข…๋ฃŒํ•˜๊ธฐ ์œ„ํ•œ 4 way handshake ๊ณผ์ •์„ ๊ฐ–๋Š”๋‹ค.
    1. client TCP์—์„œ FIN ์„ธ๊ทธ๋จผํŠธ๋ฅผ server์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.
    2. server๋Š” FIN ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฐ›์•˜๋‹ค๋Š” ์‘๋‹ต์— ๋Œ€ํ•œ ACK์„ธ๊ทธ๋จผํŠธ๋ฅผ client๋กœ ๋ณด๋‚ธ๋‹ค.
      (์•„์ง server process๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.)
    3. server process ์ข…๋ฃŒํ•œ ๋’ค server TCP์—์„œ FIN์„ธ๊ทธ๋จผํŠธ๋ฅผ client TCP์— ๋ณด๋‚ธ๋‹ค.
    4. FIN ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฐ›์€ client๋Š” server์— ACK ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ด๊ณ  TCP ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๊ฐ€ ๋œ๋‹ค.

 

์•„๋ž˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ›์€ ํ›„ ํ™”๋ฉด์ด ๊ทธ๋ ค์ง€๋Š” ๊ตฌ์กฐ์ด๋‹ค

 

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๋ฐฉ์‹

  1. ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„์—์„œ๋ถ€ํ„ฐ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ parsing(์›น ํ‘œ์ค€ํ™” ๊ธฐ๊ตฌ์ธ W3C๋ช…์„ธ์— ๋”ฐ๋ผ HTML๊ณผ CSS๋ฅผ ํ•ด์„)ํ•œ๋‹ค.
  2. ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ์—”์ง„์€ HTML์„ ํ•ด์„(parsing) ํ•˜์—ฌ DOM Tree๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  3. ์ด๋•Œ ๋ Œ๋”๋ง ์—”์ง„์ด ์Šคํƒ€์ผ ํƒœ๊ทธ๋ฅผ ๋งŒ๋‚˜๋ฉด HTML ํ•ด์„์„ ์ค‘์ง€ํ•˜๊ณ  CSS๋ฅผ parsing ํ•˜์—ฌ CSSOM Tree๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  4. CSS ํ•ด์„์„ ๋งˆ์น˜๋ฉด ์ด์ „์— ์ค‘์ง€ํ•œ HTML ํ•ด์„์ด ์ค‘๋‹จ๋œ ์ง€์ ๋ถ€ํ„ฐ ๋‹ค์‹œ ํ•ด์„ํ•œ๋‹ค.
  5. ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ๋งŒ๋‚˜๋ฉด ๋‹ค์‹œ ํ•ด์„์„ ์ค‘์ง€ํ•˜๊ณ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์—๊ฒŒ ์ œ์–ด ๊ถŒํ•œ์„ ๋„˜๊ธด๋‹ค.
  6. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜์—ฌ ์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ์ธ AST๋ฅผ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•œ๋‹ค.
  7. ์ค‘๋‹จ๋˜์—ˆ๋˜ parsing์„ ์ด์–ด์„œ ์ง„ํ–‰ํ•œ ํ›„ ์ž‘์—…์„ ์™„๋ฃŒํ•œ๋‹ค.
  8. ๋ธŒ๋ผ์šฐ์ €๋Š” DOM Tree์™€ CSSOM Tree ํ•ฉ์ณ RenderTree๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    (RenderTree๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ constuction์ด๋ผ๊ณ  ํ•œ๋‹ค.)
  9. ๋ Œ๋”๋ง ์—”์ง„์€ RenderTree์˜ ๋…ธ๋“œ๋“ค์„ ํ™”๋ฉด์˜ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ๊ทธ๋ฆฌ๋Š” ๋ ˆ์ด์•„์›ƒ(Layout) ์ž‘์—…์„ ์‹œ์ž‘ํ•œ๋‹ค.
  10. UI Backend ๊ฐ€ RenderTree์˜ ๋…ธ๋“œ๋ฅผ ๋Œ๋ฉด์„œ UI๋ฅผ ๊ทธ๋ฆฐ๋‹ค. (paint)
  11. ๊ทธ๋‹ค์Œ ๋…ธ๋“œ๋“ค์„ ๋ ˆ์ด์–ด ์ˆœ์„œ๋Œ€๋กœ ๊ตฌ์„ฑํ•˜๋Š” composition ๋‹จ๊ณ„
    (z-index๊ฐ€ ๋‚ฎ์€ ์š”์†Œ๋ฅผ ๋จผ์ € ๋†“๊ณ  ๊ทธ๋‹ค์Œ์— ๋†’์€ ์š”์†Œ๋ฅผ ๋†“๋Š” ๊ฒƒ)๋ฅผ ๊ฑฐ์นœ๋‹ค.

  12. ์œ„ ๊ณผ์ •์„ ๊ฑฐ์ณ ์ตœ์ข…์ ์œผ๋กœ ํ™”๋ฉด์— ์ถœ๋ ฅ๋œ๋‹ค.

'CS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

http ์™€ https  (0) 2022.08.01
Process ๋ž€?  (0) 2022.07.04