1. ์ฟ ํ‚ค ์ธ์ฆ ๋ฐฉ์‹

์ฟ ํ‚ค๋ž€ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ๋ธŒ๋ผ์šฐ์ €์— key value ํ˜•ํƒœ๋กœ ์ €์žฅํ•ด๋†“๋Š” ์ž‘์€ ๊ธฐ๋กํŒŒ์ผ์ด๋‹ค.
์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ์„œ ๊ฐ„๋‹จํ•œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
 

์ฟ ํ‚ค ๋กœ๊ทธ์ธ ์ธ์ฆ ๋ฐฉ์‹
 

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://brunch.co.kr/@jinyoungchoi95/1

 
ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•œ ์š”์ฒญ์„ ํ• ๋•Œ๋งˆ๋‹ค ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฟ ํ‚ค์— id, pw ์ •๋ณด๋ฅผ ๋‹ด์•„์„œ ์ „์†กํ•œ๋‹ค.
์œ„์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„์—์„œ๋Š” ์ด๋ฏธ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋กœ๊ทธ์ธ์ด ์ง„ํ–‰๋œ ํ›„ ์œ ์ € ์ •๋ณด๊ฐ€ ์ฟ ํ‚ค์— ๋“ค์–ด์žˆ์–ด์•ผํ•œ๋‹ค.
 
ํ•˜์ง€๋งŒ ์ฟ ํ‚ค ์ธ์ฆ ๋ฐฉ์‹์€ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
1. ์ฟ ํ‚ค๊ฐ’ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์ด ํž˜๋“ค๋‹ค. (์กฐ์ž‘ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.)
2. ์ค‘๊ฐ„์— ํƒˆ์ทจํ•ด์„œ id,pw ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
3. ์„œ๋ฒ„์—์„œ ๋งค๋ฒˆ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค.
4. ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์ฟ ํ‚ค ํ˜•์‹์ด ํ†ต์ผ๋˜์–ด ์žˆ์ง€ ์•Š์•„์„œ ๋ธŒ๋ผ์šฐ์ € ๊ฐ„ ๊ณต์œ ๊ฐ€ ์–ด๋ ต๋‹ค.
 
๋”ฐ๋ผ์„œ ์ฟ ํ‚ค๋งŒ ์ด์šฉํ•œ ์ธ์ฆ ๋ฐฉ์‹์˜ ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์„ธ์…˜์„ ์‚ฌ์šฉํ•œ ์ธ์ฆ ๋ฐฉ์‹์ด ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค.
 

2. ์„ธ์…˜ ์ธ์ฆ ๋ฐฉ์‹

์„ธ์…˜์€ ์‚ฌ์šฉ์ž์˜ ์—ฐ๊ฒฐ์„ ํ•˜๋‚˜์˜ ์ƒํƒœ(์„ธ์…˜)์œผ๋กœ ์œ ์ง€์‹œํ‚ค๋Š” ๊ธฐ์ˆ ์„ ๋งํ•œ๋‹ค.
 

์„ธ์…˜ ๋กœ๊ทธ์ธ ์ธ์ฆ ๋ฐฉ์‹

์ฟ ํ‚ค๋Š” ๋งค๋ฒˆ id,pw ๊ฐ™์€ ๋ฏผ๊ฐ ์ •๋ณด๋ฅผ ์ „์†กํ•ด์•ผํ–ˆ๋‹ค๋ฉด, ์„ธ์…˜์€ ์„œ๋ฒ„์˜ ์„ธ์…˜ ์ €์žฅ์†Œ์— ์„ธ์…˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•จ์œผ๋กœ์จ ๋ณด์™„์„ ๊ฐ•ํ™”ํ–ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์ฆ์ด ํ•„์š”ํ•œ ์š”์ฒญ์„ ํ•„์š”ํ•  ๋•Œ ์ฟ ํ‚ค์— ์„ธ์…˜ ์ธ์ฆ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๋Š” ์ด๋ฅผ ์„ธ์…˜ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ๊ณผ ๋น„๊ตํ•ด์„œ ์ธ์ฆ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•œ๋‹ค.
(๋งˆ์น˜ ๋งคํ‘œ์†Œ์—์„œ ํ‹ฐ์ผ“์˜ ์ ˆ๋ฐ˜์„ ๋–ผ์„œ ์†๋‹˜์ด๋ž‘ ๋‚˜๋ˆ ๊ฐ€์ง€๋Š” ์›๋ฆฌ์™€ ๋น„์Šทํ•˜๋‹ค.)
์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์ธ์ฆ ์š”์ฒญ ์‹œ์— ๋ฏผ๊ฐ ์ •๋ณด๋ฅผ ๋„คํŠธ์›Œํฌ ์ƒ์— ๋…ธ์ถœ ์‹œํ‚ค๋Š” ๊ฒƒ์„ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค.
 
ํ•˜์ง€๋งŒ ์„ธ์…˜ ๋ฐฉ์‹๋„ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ์•ˆ๊ณ  ์žˆ๋‹ค.
1. ์„œ๋ฒ„๊ฐ€ ์žฌ๋ถ€ํŒ…๋˜๋ฉด ์„ธ์…˜ ์ €์žฅ์†Œ๊ฐ€ ์ดˆ๊ธฐํ™”๋œ๋‹ค.
2. ์Šค์ผ€์ผ ์•„์›ƒ ๋ฐฉ์‹์˜ ํ™•์žฅ์ด ์–ด๋ ต๋‹ค. -> ๋ชจ๋“  ์„œ๋ฒ„์— ์„ธ์…˜ ์ •๋ณด๋ฅผ ๋™๊ธฐํ™” ์‹œ์ผœ์•ผํ•œ๋‹ค.
3. ์‚ฌ์šฉ์ž์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” ์„ธ์…˜ ์ •๋ณด๊ฐ€ ๋งŽ์•„์ ธ์„œ ์„œ๋ฒ„์˜ ๋ถ€๋‹ด์ด ๋œ๋‹ค. -> ๋ฌด์ƒํƒœ(stateless) ์œ„๋ฐ˜
4. ์„ธ์…˜ ์ธ์ฆ ์ •๋ณด ํƒˆ์ทจ์˜ ์œ„ํ—˜์ด ์žˆ๋‹ค.
 

3. JWT ์ธ์ฆ ๋ฐฉ์‹ 

JWT(Json Web Token) ๋ฐฉ์‹์€ ํ† ํฐ ๊ธฐ๋ฐ˜์˜ ์ธ์ฆ ๋ฐฉ์‹์ด๋‹ค. ์ด ๋ฐฉ์‹์„ ํ†ตํ•ด ๊ทธ ๋™์•ˆ์˜ ์ธ์ฆ ๋ฐฉ์‹์—์„œ ๋‚˜์™”๋˜ ๋ฌธ์ œ๋“ค์„ ์–ด๋Š์ •๋„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
 

JWT ๋กœ๊ทธ์ธ ์ธ์ฆ ๋ฐฉ์‹

JWT ํ† ํฐ ๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ 3๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.
 
header
ํ‚ค๊ฐ’, ํ† ํฐ ์œ ํ˜•, ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ™์€ ์ •๋ณด๋“ค์„ ๋‹ด๊ณ  ์žˆ๋‹ค.
 
payload
ํด๋ ˆ์ž„(claim)์ด๋ผ๊ณ  ํ•˜๋Š” ์œ ์ €์˜ ํ† ํฐ ์ธ์ฆ ์ •๋ณด๋ฅผ key/value ํ˜•ํƒœ๋กœ ๋‹ด๊ณ  ์žˆ๋‹ค.
JWT ์ŠคํŽ™์—์„œ๋Š” ํ‘œ์ค€ claim ๋ชฉ๋ก์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค. (๊ถŒ์žฅ ์‚ฌํ•ญ์ผ ๋ฟ ๊ผญ ์ง€ํ‚ฌ ํ•„์š”๋Š” ์—†์„ ๊ฒƒ ๊ฐ™๋‹ค)
 
iss (Issuer, ํ† ํฐ ๋ฐœ๊ธ‰์ž): . ๋ˆ„๊ฐ€ ํ† ํฐ์„ ๋ฐœ๊ธ‰(์ƒ์„ฑ)ํ–ˆ๋Š”์ง€
sub (Subject, ํ† ํฐ ์ฃผ์ œ): ์ฃผ์ œ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
aud (Audience, ํ† ํฐ ์ˆ˜์‹ ์ž): ๋ˆ„๊ตฌ์—๊ฒŒ ํ† ํฐ์ด ์ „๋‹ฌ๋˜๋Š” ๊ฐ€
exp (Expiration, ๋งŒ๋ฃŒ ์‹œ๊ฐ„): ์–ธ์ œ ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜๋Š”์ง€
nbf (Not Before): ์ •์˜๋œ ์‹œ๊ฐ„ ์ดํ›„์— ํ† ํฐ์ด ํ™œ์„ฑ
iat (Issued At, ํ† ํฐ ๋ฐœ๊ธ‰ ์‹œ๊ฐ„): ์–ธ์ œ ํ† ํฐ์ด ๋ฐœ๊ธ‰๋˜์—ˆ๋Š”์ง€
jti (JWT ID, ํ† ํฐ ์‹๋ณ„์ž): ํ† ํฐ์˜ ๊ณ ์œ  ์‹๋ณ„์ž
 
signature
JWT์—์„œ ๊ฐ€์žฅ ๋ฏผ๊ฐํ•œ ๋ถ€๋ถ„์ด๋‹ค. ํ•ด๋‹น ๊ฐ’์œผ๋กœ ํ† ํฐ์˜ ์œ ํšจ์„ฑ์„ ํŒ๋ณ„ํ•˜๋ฉฐ ์ด๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์‹œํฌ๋ฆฟ ๊ฐ’์„ ์œ ์ถœ์‹œํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.
์‹œํฌ๋‹ˆ์ฒ˜๋Š” ํ—ค๋”+ํŽ˜์ด๋กœ๋“œ+์‹œํฌ๋ฆฟ ๊ฐ’์„ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ์„œ ๋งŒ๋“ค์–ด์ง„๋‹ค.
๋”ฐ๋ผ์„œ ์‹œํฌ๋ฆฟ ๊ฐ’์ด ์กฐ๊ธˆ์ด๋ผ๋„ ๋‹ค๋ฅด๋‹ค๋ฉด ํ† ํฐ ๋‚ด์šฉ์€ ์™„์ „ ๋ณ€ํ•˜๊ฒŒ ๋˜์–ด์„œ ์ธ์ฆ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.
 
์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ ํ—ค๋”์™€ ํŽ˜์ด๋กœ๋“œ๋Š” ์•”ํ˜ธํ™”๊ฐ€ ์•„๋‹Œ base64 ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ ๋˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์ œ3์ž๋„ ํ† ํฐ๋งŒ์œผ๋กœ๋„ ํ•ด๋‹น ๊ฐ’๋“ค์„ ์—ด๋žŒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹๋ณ„์ž๋ฅผ ์ œ์™ธํ•œ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋“ค์„ ์ตœ๋Œ€ํ•œ ๋„ฃ์ง€ ๋ง์•„์•ผํ•œ๋‹ค!
 
JWT๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํ† ํฐ์„ ์ฃผ๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์•ฝ ํ† ํฐ์ด ํƒˆ์ทจ ๋‹นํ•œ๋‹ค๋ฉด ์„œ๋ฒ„์—์„œ ๋”ฑํžˆ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์—†๋‹ค.
์ด ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์ด์šฉํ•ด์„œ ๊ธฐ์กด ํ† ํฐ์˜ ์œ ํšจ ์‹œ๊ฐ„์„ ์งง๊ฒŒ ๊ฐ€์ ธ๊ฐ€๊ณ  ์ƒˆ๋กœ์šด ํ† ํฐ์„ ์ง€์†ํ•ด์„œ ๋ฐœ๊ธ‰ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ์€ ํƒˆ์ทจ๋œ ํ† ํฐ์ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทผ๋ณธ์ ์ธ ํ•ด๊ฒฐ๋ฒ•์€ ์•„๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์€ํ–‰ ๊ฐ™์ด ๋ณด์•ˆ์— ๊ต‰์žฅํžˆ ๋ฏผ๊ฐํ•œ ๊ณณ์—์„œ๋Š” ์—ฌ๋Ÿฌ ์™ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•ด์„œ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•œ๋‹ค.
 

 

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://tecoble.techcourse.co.kr/post/2021-11-07-load-balancing/

1. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ž€?

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ๋“ค์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๊ณ  ์•ˆ์ •์ ์ธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. 

๋ฌผ๋ก  ํ•œ ๋Œ€์˜ ์„œ๋ฒ„๋กœ ์„ฑ๋Šฅ์„ ๊ณ„์† ํ‚ค์›Œ์„œ ์–ด๋Š ์ •๋„๋Š” ์ปค๋ฒ„(Scale-up)ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ์ด ๋ฐฉ์‹์€ ์–ผ๋งˆ ์•ˆ๊ฐ€์„œ ํ•œ๊ณ„๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๋ฅผ ๋‘ฌ์„œ ์š”์ฒญ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ(Scale-out)์ด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์ด๊ณ  ์ด ์—ญํ• ์„ ํ•˜๋Š”๊ฒŒ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์ด๋‹ค.

 

๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋Š” ์‚ฌ์šฉ์ž์™€ ์„œ๋ฒ„ ์‚ฌ์ด์— ์œ„์น˜ํ•˜๋ฉฐ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„๊ฐ€ ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋‚ด๋„๋ก ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•œ๋‹ค.

 

2. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ์‚ฌ์šฉ์˜ ์ด์ 

๊ฐ€์šฉ์„ฑ

์„œ๋ฒ„ ์žฅ์•  ๋˜๋Š” ๋ถ€ํ•˜๋กœ ์ธํ•œ ๋”œ๋ ˆ์ด๋ฅผ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ†ตํ•ด ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•จ์œผ๋กœ์จ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐ€์šฉ์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ€๋™ ์ค‘์ง€ ์—†์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ์œ ์ง€ ๊ด€๋ฆฌ ๋˜๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ ์‹คํ–‰
  • ๋ฐฑ์—… ์‚ฌ์ดํŠธ์— ์ž๋™ ์žฌํ•ด ๋ณต๊ตฌ ์ œ๊ณต
  • ์ƒํƒœ ํ™•์ธ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฐ€๋™ ์ค‘์ง€๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ๋ฐฉ์ง€

ํ™•์žฅ์„ฑ

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ทœ๋ชจ๋‚˜ ํŠธ๋ž˜ํ”ฝ์ด ์ฆ๊ฐ€ํ•˜๋”๋ผ๋„ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ๋“ค์„ ์ง€๋Šฅ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ™•์žฅ์ด ์šฉ์ดํ•ด์ง„๋‹ค.

  • ํ•œ ์„œ๋ฒ„์—์„œ ํŠธ๋ž˜ํ”ฝ ๋ณ‘๋ชฉ ํ˜„์ƒ ๋ฐฉ์ง€
  • ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŠธ๋ž˜ํ”ฝ์„ ์˜ˆ์ธก
  • ์•ˆ์‹ฌํ•˜๊ณ  ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹œ์Šคํ…œ์— ์ค‘๋ณต์„ฑ์„ ์ถ”๊ฐ€

๋ณด์•ˆ์„ฑ

๋””๋„์Šค๊ฐ™์€ ์•…์„ฑ ํŠธ๋ž˜ํ”ฝ ๊ณต๊ฒฉ์„ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ†ตํ•ด ํ”ผํ•ด๋ฅผ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

์•…์„ฑ ํŠธ๋ž˜ํ”ฝ์„ ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋กœ ๋ถ„์‚ฐ์‹œํ‚ค๊ฑฐ๋‚˜ ๋ฐฉํ™”๋ฒฝ์„ ํ†ตํ•ด ์‚ฌ์ „ ์ฐจ๋‹จํ•œ๋‹ค.

  • ํŠธ๋ž˜ํ”ฝ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์•…์„ฑ ์ฝ˜ํ…์ธ  ์ฐจ๋‹จ
  • ๊ณต๊ฒฉ ํŠธ๋ž˜ํ”ฝ์„ ์—ฌ๋Ÿฌ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ์ž๋™์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜์—ฌ ์˜ํ–ฅ ์ตœ์†Œํ™”
  • ์ถ”๊ฐ€ ๋ณด์•ˆ์„ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ๋ฐฉํ™”๋ฒฝ ๊ทธ๋ฃน์„ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…

์„ฑ๋Šฅ ํ–ฅ์ƒ

์ง€๋Šฅ์ ์ธ ๋ถ€ํ•˜ ๋ถ„์‚ฐ์„ ํ†ตํ•ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‘๋‹ต ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

  • ์„œ๋ฒ„ ๊ฐ„์— ๋กœ๋“œ๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ฐฐํฌํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ
  • ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ง€๋ฆฌ์ ์œผ๋กœ ๋” ๊ฐ€๊นŒ์šด ์„œ๋ฒ„๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜์—ฌ ์ง€์—ฐ ์‹œ๊ฐ„ ๋‹จ์ถ•
  • ๋ฌผ๋ฆฌ์  ๋ฐ ๊ฐ€์ƒ ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค์˜ ์‹ ๋ขฐ์„ฑ ๋ฐ ์„ฑ๋Šฅ ๋ณด์žฅ

์ฐธ๊ณ  : https://aws.amazon.com/what-is/load-balancing/?nc1=h_ls

 

3. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์˜ ์ข…๋ฅ˜

 

๋ถ€ํ•˜ ๋ถ„์‚ฐ์—๋Š” L4 , L7 ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ L4๋Š” OSI7 ๊ณ„์ธต์˜ ํ†ต์‹  ๊ณ„์ธต, L7์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์ด๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๋ง๋กœ ๋„คํŠธ์›Œํฌ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ , ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ผ๊ณ ๋„ ํ•œ๋‹ค.

 

L4 ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ

์ „์†ก ๊ณ„์ธต์˜ IP, PORT ๊ฐ™์€ ์ •๋ณด๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•œ๋‹ค.

ํŒจํ‚ท์ด๋‚˜ ์ฟ ํ‚ค๊ฐ™์€ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ถ„์„ํ•  ํ•„์š”์—†์ด ๋น„๊ต์  ๋‹จ์ˆœํ•˜๊ฒŒ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— L7 ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์— ๋น„ํ•ด ๋น ๋ฅด๊ณ  ๊ฐ€๋ณ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

 

*Client IP์™€ ์„œ๋ฒ„์‚ฌ์ด์— ์„œ๋ฒ„๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ํ†ตํ•˜๊ณ  ๋‚˜๊ฐ€๋Š” ํŠธ๋ž˜ํ”ฝ์€ Client IP์™€ ์ง์ ‘ ํ†ต์‹ ํ•œ๋‹ค.

 

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://dev.classmethod.jp/articles/load-balancing-types-and-algorithm/

 

L7 ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต(HTTP, FTP, SMTP)์—์„œ ๋กœ๋“œ๋ฅผ ๋ถ„์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— HTTP ํ—ค๋”, ์ฟ ํ‚ค ๋“ฑ๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๊ธฐ์ค€์œผ๋กœ ํŠน์ • ์„œ๋ฒ„์— ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ex) ๊ฒฐ์ œ ์„œ๋ฒ„, ํšŒ์› ๊ฐ€์ž… ์„œ๋ฒ„

L7 ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์˜ ๊ฒฝ์šฐ ํŠน์ •ํ•œ ํŒจํ„ด์„ ์ง€๋‹Œ ๋ฐ”์ด๋Ÿฌ์Šค๋ฅผ ๊ฐ์ง€ํ•ด ๋„คํŠธ์›Œํฌ๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, DoS/DDoS์™€ ๊ฐ™์€ ๋น„์ •์ƒ์ ์ธ ํŠธ๋ž˜ํ”ฝ์„ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ธฐ๋Šฅ์ด ๋งŽ์€ ๋Œ€์‹  ๊ทธ๋งŒํผ ์ž์› ์†Œ๋ชจ๊ฐ€ ํฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

*Client IP์™€ ์„œ๋ฒ„์‚ฌ์ด์— ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐ€๋Š” ํŠธ๋ž˜ํ”ฝ์ด ๋ชจ๋‘ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์™€ ํ†ต์‹ ํ•œ๋‹ค.

 

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://dev.classmethod.jp/articles/load-balancing-types-and-algorithm/

4. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋Œ€ํ‘œ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋”ฑ 3๊ฐœ๊ฐœ๋งŒ!

 

๋ผ์šด๋“œ ๋กœ๋นˆ(Round Robin)

์š”์ฒญ ๋ฐ›์€ ์ˆœ์„œ๋Œ€๋กœ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ์„œ๋ฒ„์— ํ• ๋‹นํ•œ๋‹ค. 

์„œ๋ฒ„๋“ค์˜ ์„ฑ๋Šฅ์ด ๋น„์Šทํ•˜๊ณ  ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์งง์€ ๊ฒฝ์šฐ ์œ ๋ฆฌํ•˜๋‹ค.

 

๊ฐ€์ค‘ ๋ผ์šด๋“œ ๋กœ๋นˆ(Weighted Round Robin)

์„œ๋ฒ„๊ฐ„ ์„ฑ๋Šฅ์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ์„œ๋ฒ„์— ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ์„œ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•œ๋‹ค.

 

์ตœ์†Œ ์—ฐ๊ฒฐ ๋ฐฉ์‹(Least Connection)

์—ฐ๊ฒฐ ์ƒํƒœ๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์„œ๋ฒ„์— ์šฐ์„ ์ ์œผ๋กœ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•œ๋‹ค. 

์„ธ์…˜์ด ์ž์ฃผ ๊ธธ์–ด์ง€๊ฑฐ๋‚˜ ๋ถ„๋ฐฐ๋œ ํŠธ๋ž˜ํ”ฝ๋“ค์ด ์ผ์ •ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์œ ๋ฆฌํ•˜๋‹ค.

 

 

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ https://careerly.co.kr/comments/77905

 

DNS ๋ผ์šด๋“œ ๋กœ๋นˆ

๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ํ™œ์šฉํ•˜์ง€ ์•Š๊ณ  ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 

DNS ๋ผ์šด๋“œ ๋กœ๋นˆ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋„ค์ž„์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋„๋ฉ”์ธ์— ํ•ด๋‹นํ•˜๋Š” ์—ฌ๋Ÿฌ IP ์ •๋ณด๋“ค์„ ์‘๋‹ตํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ์—ฌ๋Ÿฌ IP ์ •๋ณด์ค‘์—์„œ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฒฐ๋ก ์ ์œผ๋กœ ์—ฌ๋Ÿฌ IP๋กœ ํŠธ๋ž˜ํ”ฝ์ด ๋ถ„์‚ฐ๋œ๋‹ค.

์ด ๋ฐฉ์‹์€ ์›น ์„œ๋ฒ„๋“ค์ด ์ง€๋ฆฌ์ ์œผ๋กœ ๋ถ„์‚ฐ๋˜์–ด ์žˆ์–ด ๋ถ€ํ•˜ ๋ถ„์‚ฐ์ด ์–ด๋ ต๊ฑฐ๋‚˜ ๊ฐ€๋ฒผ์šด ๊ตฌํ˜„ ๋ฐฉ์‹์ด ํ•„์š”ํ•  ๋•Œ ์ ํ•ฉํ•˜๋‹ค.

 

ํ•˜์ง€๋งŒ ์บ์‹ฑ์œผ๋กœ ์ธํ•ด์„œ ํŠน์ • IP์— ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ฆด ์ˆ˜ ์žˆ๊ณ , ํ—ฌ์Šค ์ฒดํฌ๋ฅผ ํ•˜์ง€ ๋ชปํ•ด์„œ ์š”์ฒญํ•œ IP๋กœ ์—ฐ๊ฒฐ์ด ๊ฑฐ๋ถ€๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

1. DNS๋ž€?

๋„๋ฉ”์ธ์€ ์ธํ„ฐ๋„ท์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์†Œ๋กœ ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์›๋ž˜ ์ˆซ์ž๋กœ ๋œ ๊ธด IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ์‚ฌ๋žŒ๋“ค์ด ์ด ์ฃผ์†Œ๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค. ๊ทธ๋ž˜์„œ ์ธํ„ฐ๋„ท ์ƒ์—์„œ ์ฃผ์–ด์ง„ ์œ„์น˜๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ๋„๋ฉ”์ธ์ด ๊ฐœ๋ฐœ๋˜์—ˆ๊ณ , ์ž์—ฐ์Šค๋ ˆ ๋„๋ฉ”์ธ์„ IP ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๋„๋ฉ”์ธ ๋„ค์ž„ ์‹œ์Šคํ…œ(Domain Name System, ์ดํ•˜ DNS)์ด ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค.

 

DNS๋ฅผ ํ†ตํ•˜์—ฌ ์‚ฌ์šฉ์ž๋“ค์€ ๋„๋ฉ”์ธ ์ด๋ฆ„๋งŒ ๊ฐ€์ง€๊ณ ๋„ ์‰ฝ๊ฒŒ ์›น ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ, ์„ค๋ น ์ฃผ์†Œ๊ฐ€ ๋ฐ”๋€๋‹ค๊ณ  ํ•œ๋“ค ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.

 

์ด๋Ÿฌํ•œ DNS ์‹œ์Šคํ…œ์€ ์„ธ๊ณ„์ ์œผ๋กœ ์ผ๊ด€๋œ ๊ทœ์น™์„ ๊ฐ€์ง€๋ฉฐ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋Š” ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ์ด๋‹ค.

 

2. DNS ๊ตฌ์„ฑ ์š”์†Œ

๋„๋ฉ”์ธ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค

DNS๋Š” ๊ฑฐ๋Œ€ํ•œ ๋ถ„์‚ฐ ๋„ค์ด๋ฐ ์‹œ์Šคํ…œ์ด๋ฉฐ, ๋„๋ฉ”์ธ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋Š” ์ด๋Ÿฌํ•œ DNS๊ฐ€ ์ €์žฅ/๊ด€๋ฆฌํ•˜๋Š” ๊ณ„์ธต์  ๊ตฌ์กฐ์ด๋‹ค.

์ตœ์ƒ์œ„์— ๋ฃจํŠธ ์„œ๋ฒ„๊ฐ€ ์กด์žฌํ•˜๊ณ  ๊ทธ ์•„๋ž˜๋กœ ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค์ด ์—ฐ์†ํ•ด์„œ ์ด์–ด์ง„ ๊ณ„์ธต ๊ตฌ์กฐ์ด๋‹ค.

 

1. ๋ฃจํŠธ DNS ์„œ๋ฒ„

TLD DNS ์„œ๋ฒ„์˜ IP์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ณ  ์•ˆ๋‚ดํ•œ๋‹ค.

DNS ๋งคํ•‘ ๊ณผ์ •์˜ ์ฒซ ๋‹จ๊ณ„์ด๋‹ค.

 

2. TLD ์„œ๋ฒ„

๋„๋ฉ”์ธ ๋“ฑ๋ก ๊ธฐ๊ด€์ด ๊ด€๋ฆฌํ•˜๋ฉฐ SLD DNS ์„œ๋ฒ„์˜ IP์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ณ  ์•ˆ๋‚ดํ•œ๋‹ค

ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์„ ํ˜ธ์ŠคํŒ…ํ•œ๋‹ค.

ex) example.com ์˜ "com"

 

3. SLD ์„œ๋ฒ„(๊ถŒํ•œ ์žˆ๋Š” ๋„ค์ž„ ์„œ๋ฒ„)

์‹ค์ œ ๊ฐœ์ธ ๋„๋ฉ”์ธ๊ณผ IP ์ฃผ์†Œ์˜ ๊ด€๊ณ„๊ฐ€ ๊ธฐ๋ก๋œ๋‹ค.

๋„ค์ž„ ์„œ๋ฒ„ ์ฟผ๋ฆฌ์˜ ์ข…์ฐฉ์ ์ด๋‹ค. ๊ถŒํ•œ์žˆ๋Š” ์ด๋ฆ„ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญํ•œ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋‹ค๋ฉด, ์š”์ฒญํ•œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์˜ IP ์ฃผ์†Œ๋ฅผ ์ดˆ๊ธฐ ์š”์ฒญ์„ ํ•œ DNS ๋ฆฌ์ปค์„œ์—๊ฒŒ ๋Œ๋ ค ๋ณด๋‚ธ๋‹ค.

 

4. Resolver , Recursive ,Recurser

์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด IP ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ธ๋‹ค.

 

๋„ค์ž„ ์„œ๋ฒ„

๋ฌธ์ž์—ด๋กœ ํ‘œํ˜„๋œ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์‹ค์ œ ์ปดํ“จํ„ฐ๊ฐ€ ํ†ต์‹ ํ•  ๋•Œ ์“ฐ๋Š” IP ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ ์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

๋„ค์ž„ ์„œ๋ฒ„๋Š” ๋„๋ฉ”์ธ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์˜ ํŠธ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

๋ฆฌ์กธ๋ฒ„ 

DNS ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋„ค์ž„ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•˜๊ณ  ๋„ค์ž„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ๋ฐ›์•„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ œ๊ณตํ•œ๋‹ค.

๋จผ์ € ํ•˜๋‚˜์˜ ๋„ค์ž„ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๊ณ  ํ•ด๋‹น ๋„ค์ž„ ์„œ๋ฒ„์— ์ •๋ณด๊ฐ€ ์—†์œผ๋ฉด ๋‹ค๋ฅธ ๋„ค์ž„ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

๋ฆฌ์กธ๋ฒ„์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ํด๋ผ์ด์–ธํŠธ์— ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ๋กœ DNS ์„œ๋ฒ„์—์„œ ๊ตฌํ˜„ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹จ์ˆœํ•œ ๋ฆฌ์กธ๋ฒ„ ๊ธฐ๋Šฅ(๋ฆฌ์กธ๋ฒ„ ๋ฃจํ‹ด)๋งŒ ๊ตฌํ˜„ํ•˜๊ฒŒ๋” ํ•œ๋‹ค.

 

4. ์ฟผ๋ฆฌ

์žฌ๊ท€์  ์ฟผ๋ฆฌ(์งˆ์˜)

์ผ๋ฐ˜์ ์ธ ๋„ค์ž„ ์„œ๋ฒ„ ๋ฐฉ์‹์ด๋ฉฐ, ํด๋ผ์ด์–ธํŠธ(๋ฆฌ์ปค์„œ, ๋ฆฌ์กธ๋ฒ„)์—๊ฒŒ ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

์ถœ์ฒ˜ : https://blog.naver.com/nj0803/10175980049

๋ฐ˜๋ณต์  ์ฟผ๋ฆฌ(์งˆ์˜)

์ž์‹ ์ด ์ง์ ‘ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š” ์งˆ์˜ ์š”์ฒญ์ด ์˜ฌ ๊ฒฝ์šฐ ์งˆ์˜ ์‘๋‹ต์ด ๊ฐ€๋Šฅํ•œ NS ๋ชฉ๋ก์„ ์‘๋‹ตํ•œ๋‹ค.

Root ๋„ค์ž„ ์„œ๋ฒ„๋Š” ๋ฌด์กฐ๊ฑด ๋ฐ˜๋ณต์  ๋ฐฉ์‹์ด๊ณ  TLD๋Š” ์ผ๋ถ€๋งŒ ๋ฐ˜๋ณต์  ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

์ถœ์ฒ˜ : https://blog.naver.com/nj0803/10175980049

5. DNS ๋™์ž‘ ๋ฐฉ์‹

์ถœ์ฒ˜ : https://aws.amazon.com/ko/route53/what-is-dns/

 

1. ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

2. ๋ธŒ๋ผ์šฐ์ €๋Š” DNS ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ธฐ ์ „์— ์บ์‹œ๋ฅผ ํ™•์ธํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ฐพ๋Š”๋‹ค.

3. ๋งŒ์•ฝ ์ •๋ณด๋ฅผ ์ฐพ๊ธฐ ๋ชปํ•˜์˜€๋‹ค๋ฉด root ์„œ๋ฒ„์— ๋ฐ˜๋ณต์  ์งˆ์˜๋ฅผ ๋ณด๋‚ธ๋‹ค.

๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์ตœ์ƒ์œ„ ๋„๋ฉ”์ธ(TLD) DNS ์„œ๋ฒ„(์˜ˆ: .com ๋˜๋Š” .net)์˜ ์ฃผ์†Œ๋กœ ํ™•์ธ์ž์— ์‘๋‹ตํ•œ๋‹ค.

ex) example.com์„ ๊ฒ€์ƒ‰ํ•  ๊ฒฝ์šฐ์˜ ์š”์ฒญ์€ .com TLD ์„œ๋ฒ„๋ฅผ ์‘๋‹ต ๋ฐ›์Œ

4. SLD ๋„ค์ž„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ตœ์ข…์ ์œผ๋กœ IP ์ฃผ์†Œ๋ฅผ ์‘๋‹ต๋ฐ›๋Š”๋‹ค.

5. ๋ธŒ๋ผ์šฐ์ €๋Š” ์‘๋‹ต ๋ฐ›์€ IP ์ •๋ณด๋กœ ์š”์ฒญ์„ ์ „์†กํ•˜๊ณ  ์›น ํŽ˜์ด์ง€๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค.

6. ํ•ด๋‹น ๋„๋ฉ”์ธ์— ํ•ด๋‹นํ•˜๋Š” ์ •๋ณด๋Š” ์ผ์ • ์‹œ๊ฐ„ ์บ์‹ฑ๋œ๋‹ค.

HTTP ๋ž€

HTTP๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ ๊ธฐ์ดˆ์ ์ธ ํ†ต์‹  ๊ทœ์น™ ์„ธํŠธ ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. 

์‚ฌ์šฉ์ž๊ฐ€ ์›น ์„œ๋น„์Šค์— ์ ‘์†ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” 80๋ฒˆ ํฌํŠธ๋ฅผ ํ†ตํ•ด ์›น ์„œ๋ฒ„์— HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ฐ›๋Š”๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ HTTP์˜ ์š”์ฒญ ์ข…๋ฅ˜์ธ GET์„ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๋Š” ๊ทธ์— ๋งž๋Š” ์‘๋‹ต ๋ฐ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ธ๋‹ค. ์ƒํƒœ ์ฝ”๋“œ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

200 - OK(์ •์ƒ)
400 - Bad request(์ž˜๋ชป๋œ ์š”์ฒญ)
404 - Resource not found(๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ)

 

 

HTTP๋Š” TCP/IP ์œ„์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฌด์ƒํƒœ(stateless) ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://mangkyu.tistory.com/98

 

ํ•˜์ง€๋งŒ HTTP๋Š” ํ‰๋ฌธ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ์— ์ œ 3์ž๊ฐ€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ณด์•ˆ ์ด์Šˆ๊ฐ€ ์žˆ๋‹ค.

 

 

HTTP REQUEST ๋ฐฉ์‹ ์ข…๋ฅ˜

๋ฐฉ์‹ ๋ชฉ์ 
GET ๋ฆฌ์†Œ์Šค ์กฐํšŒ
POST ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
PUT ๋ฆฌ์†Œ์Šค ๋Œ€์ฒด(๋ฎ์–ด ์“ฐ๊ธฐ) , ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑ
PATCH ๋ฆฌ์†Œ์Šค ๋ถ€๋ถ„ ๋ณ€๊ฒฝ
DELETE ๋ฆฌ์†Œ์Šค ์‚ญ์ œ

 

HTTP ๋ฒ„์ „ ๋ณ„ ์ฐจ์ด

HTTP/1.0

๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฐ๊ฒฐ์˜ ์ˆ˜๋ช…์ด ์งง์œผ๋ฉฐ HTTP ์š”์ฒญ๋‹น TCP hand-shake๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ๊ฐ๊ฐ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์ด๋กœ ์ธํ•ด ์„œ๋ฒ„์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  *RTT๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

 

RTT(Round Trip Time) : ์–ด๋–ค ๋ฉ”์„ธ์ง€๊ฐ€ ๋‘ ์žฅ์น˜ ์‚ฌ์ด๋ฅผ ์™•๋ณตํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„

 

HTTP/1.1

1.0 ๋ฒ„์ „์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ํฌ๊ฒŒ 3๊ฐ€์ง€์˜ ๊ฐœ์„ ์ ์ด ์žˆ๋‹ค.

 

1. keep alive default

์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค TCP ์—ฐ๊ฒฐ์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ keep alive ์˜ต์…˜์„ ๊ธฐ๋ณธ ์˜ต์…˜์„ ํ•จ์œผ๋กœ์จ ๊ณ„์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

2. ํ˜ธ์ŠคํŠธ ํ—ค๋”

1.1 ๋ฒ„์ „๋ถ€ํ„ฐ ์„œ๋ฒ„๋Š” ์—ฌ๋Ÿฌ ๋Œ€์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•ญ์ƒ ํ˜ธ์ŠคํŠธ๋ฅผ ํ—ค๋”์— ํฌํ•จ์—์„œ ์š”์ฒญ์„ ๋ณด๋‚ด์•ผํ•œ๋‹ค.

 

3. Persistent Connection (๋Œ€์—ญํญ ์ตœ์ ํ™”)

์ง€์ •ํ•œ time out ์‹œ๊ฐ„ ๋‚ด์— ๊ธฐ์กด connection์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

๊ธฐ์กด์—๋Š” ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋‹ค๊ฐ€ ๋Š๊ธฐ๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐ›์•„์•ผํ–ˆ์ง€๋งŒ, 1.1 ๋ฒ„์ „๋ถ€ํ„ฐ ์ด์–ด์„œ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

์ด์™ธ์—๋„ ์š”์ฒญ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๊ธฐ์ˆ ๋“ค์„ ๋„์ž…ํ–ˆ๋‹ค.

 

1. ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ

ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋งŒ ๋‹ค์šด๋ฐ›๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›์€ ๋“ฏํ•œ ํšจ๊ณผ๋ฅผ ๋‚ธ๋‹ค.

 

2. ์ฝ”๋“œ ์••์ถ•

 

3. Base64 ์ธ์ฝ”๋”ฉ

์ด๋ฏธ์ง€ ํŒŒ์ผ์„ 64์ง„๋ฒ•์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด๋กœ ์ธ์ฝ”๋”ฉํ•ด์„œ ์ด๋ฏธ์ง€ ์„œ๋ฒ„์— ๋Œ€ํ•œ HTTP ์š”์ฒญ์„ ์ค„์ธ๋‹ค.

ํ•˜์ง€๋งŒ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋” ์ปค์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

 

HTTP/1.1์˜ ๋ฌธ์ œ์  : HOL

๊ทธ๋Ÿฌ๋‚˜ HTTP/1.1 ์€ HOL(Head Of Line Blocking)์ด๋ผ๋Š” ๊ณ ์งˆ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

HTTP/1.1๋ถ€ํ„ฐ๋Š” ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์‘๋‹ต์„ ๋ฐ›๋Š” ํŒŒ์ดํ”„๋ผ์ด๋‹์ด ๊ฐ€๋Šฅํ•ด์กŒ๋Š”๋ฐ ์ด๋กœ ์ธํ•ด ์น˜๋ช…์ ์ธ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ์ธํ•ด 1๋ฒˆ ์š”์ฒญ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ทธ ๋’ค์— ์š”์ฒญ์ด ์ค„์ค„์ด ์ง€์—ฐ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

RFC ๋ฌธ์„œ ์›์น™์— ๋”ฐ๋ผ ์š”์ฒญ์ด ์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค.

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://withbundo.blogspot.com/2021/02/httphol-head-of-line-blocking.html

 

 

 

HTTP/2.0

 

๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๋งท ๊ณ„์ธต

๋” ์ž‘์€ ํ”„๋ ˆ์ž„์œผ๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ†ต์‹  ๊ณ„์ธต ์‚ฌ์ด์— ๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๋งท ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค. 

 

 

๋ฉ€ํ‹ฐ ํ”Œ๋ ‰์‹ฑ

๋‹จ์ผ TCP ์—ฐ๊ฒฐ์—์„œ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด์—๋Š” ๋‹ค์ค‘ TCP ์—ฐ๊ฒฐ์„ ํ†ตํ•ด์„œ๋งŒ ๋ณ‘๋ ฌ ์š”์ฒญ์ด ๊ฐ€๋Šฅํ–ˆ์ง€๋งŒ HTTP/2.0 ๋ถ€ํ„ฐ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ž‘์€ ํ”„๋ ˆ์ž„์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ์ŠคํŠธ๋ฆผ์œผ๋กœ ํ”„๋ ˆ์ž„์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด HTTP/1.1์˜ ๋ฌธ์ œ์ธ HOL์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋˜ํ•œ ๊ฐ๊ฐ์˜ ํ”„๋ ˆ์ž„์€ ์ŠคํŠธ๋ฆผ id๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‘๋‹ต ์ˆœ์„œ์™€ ์ƒ๊ด€์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๋ฆฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์„œ๋ฒ„ ํ‘ธ์‹œ

ํด๋ผ์ด์–ธํŠธ์˜ ๋ณ„๋„ ์š”์ฒญ์ด ์—†๋”๋ผ๋„ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์‘๋‹ต์— ๊ฐ™์ด ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

ํ—ค๋” ์••์ถ•

๋ฌด๊ฑฐ์šด ํ—ค๋”๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘๋ณต๋œ ํ—ค๋”๋Š” ํ•œ๋ฒˆ๋งŒ ๋ณด๋‚ด๊ณ  ์ค‘๋ณต๋˜์ง€ ์•Š์€ ๊ฐ’์€ *ํ—ˆํ”„๋งŒ ์ธ์ฝ”๋”ฉ์„ ํ†ตํ•ด ์••์ถ•์‹œํ‚จ๋‹ค.

 

ํ—ˆํ”„๋งŒ ์ธ์ฝ”๋”ฉ: ๋ฌธ์ž์—ด์„ ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์„œ ๋นˆ๋„๊ฐ€ ๋†’์€ ์ •๋ณด๋Š” ์ ์€ ๋น„ํŠธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ ์ •๋ณด๋Š” ๋น„ํŠธ์ˆ˜๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

์šฐ์„  ์ˆœ์œ„

์„œ๋ฒ„์—์„œ ์›ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•ด์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

HTTP/3.0

TCP ์—ฐ๊ฒฐ๋กœ ์ธํ•œ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐ RTT ์‹œ๊ฐ„ ์ฆ๊ฐ€์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•œ ๋ฒ„์ „์ด๋‹ค.

์ด ๋ฒ„์ „๋ถ€ํ„ฐ UDP ํ”„๋กœํ† ์ฝœ ๊ธฐ๋ฐ˜์˜ QUIC(Quick UDP Internet Connections)๋กœ ๋™์ž‘ํ•˜๋ฉฐ ์ด์ „ ๋ฒ„์ „๋“ค์˜ ์žฅ์ , ํŠน์ง•๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

๋˜ํ•œ QUIC๋Š” TLS๋กœ ์•”ํ˜ธํ™” ํ†ต์‹ ์„ ๊ตฌ์ถ•ํ•  ๋•Œ hand shake๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์™€์˜ ์—ฐ๊ฒฐ๊นŒ์ง€ ์ง„ํ–‰ํ•จ์œผ๋กœ์จ 1-RTT๋งŒ์— ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด UDP๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ๋ชปํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด์—ˆ์ง€๋งŒ, QUIC๋Š” ์—๋Ÿฌ๋ฅผ ๊ฒ€์ถœํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆœ๋ฐฉํ–ฅ ์˜ค๋ฅ˜ ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

HTTPS์™€์˜ ์ฐจ์ด์ 

HTTP์˜ ๋ณด์•ˆ์ ์ธ ํ•œ๊ณ„๋ฅผ SSL/TLS๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐํ•œ ๊ฒƒ์ด HTTPS์ด๋‹ค.

SSL์€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์— ์•”ํ˜ธํ™” ๋œ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๋ฐ์ดํ„ฐ๋“ค์ด ๋„๋‚œ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

 

SSL ์ธ์ฆ์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์•”ํ˜ธํ™”ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ํƒˆ์ทจ๋œ๋‹ค ํ•˜๋”๋ผ๋„ ์•”ํ˜ธํ™” ๋œ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ œ 3์ž๋Š” ์•Œ ์ˆ˜ ์—†๋‹ค.

๋˜ํ•œ SSL ์™ธ์—๋„ TLS ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด์„œ๋„ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•œ๋‹ค.

 

HTTPS๋Š” ๋ณด์•ˆ ์ƒ์˜ ์ด์ ๋„ ์žˆ์ง€๋งŒ ๊ตฌ๊ธ€์ด ์•ˆ์ „ํ•˜๋‹ค๊ณ  ์‹ ๋ขฐํ•˜๋Š” ์‚ฌ์ดํŠธ๋ผ๋Š” ๋ฐ˜์ฆ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”(SEO)์ธก๋ฉด์—์„œ๋„ ๋งŽ์€ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

HTTPS์˜ ๋™์ž‘ ๋ฐฉ์‹

HTTPS์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ์•”ํ˜ธํ™”๋ฅผ ํ•œ๋‹ค๋Š” ์ ์ธ๋ฐ ์•”ํ˜ธํ™” ๋ฐฉ์‹์€ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค.

์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ์˜๋„๋œ ์†ก์ˆ˜์‹ ์ž๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ฐ์ดํ„ฐ ์œ ์ถœ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.

 

๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๋™์ผํ•œ ํ‚ค๋ฅผ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ด์„œ ์•”ํ˜ธํ™”ํ•œ๋‹ค.

ํ‚ค๊ฐ€ ๋…ธ์ถœ๋  ์œ„ํ—˜์ด ์žˆ์ง€๋งŒ ์—ฐ์‚ฐ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

ex)

Plaintext + key = ciphertext: hello + 2jd8932kd8 = X5xJCSycg14=

Ciphertext + key = plaintext: X5xJCSycg14= + 2jd8932kd8 = hello

-> ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๊ณผ์ •์—์„œ key๋ฅผ ํƒˆ์ทจ๋‹นํ•˜๋ฉด ์ œ 3์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”

๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ ํ‚ค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ฑฐ๋‚˜ ๋ณตํ˜ธํ™”ํ•˜๊ณ  ๊ณต๊ฐœํ‚ค๋Š” ๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋Š” ๊ฐœ์ธํ‚ค๋กœ๋งŒ ๋ณตํ˜ธํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

์•”ํ˜ธํ™”๋ฅผ ๊ฐœ์ธํ‚ค๋กœ ํ• ๊ฒƒ์ธ์ง€ ๊ณต๊ฐœํ‚ค๋กœ ํ•  ๊ฒƒ์ธ์ง€์— ๋”ฐ๋ผ ์–ป๋Š” ํšจ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค.

 

๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™”: ๊ฐœ์ธํ‚ค๋กœ๋งŒ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋Š” ์ž์‹ ๋งŒ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ณผ์ •์—์„œ ํ‚ค๊ฐ€ ํƒˆ์ทจ๋  ์œ„ํ—˜์ด ์žˆ์—ˆ์ง€๋งŒ ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์€ ๊ณต๊ฐœํ‚ค๊ฐ€ ํƒˆ์ทจ๋˜๋„ ์ƒ๊ด€์ด ์—†๋‹ค.

์ˆ˜์‹ ์ธก์—์„œ๋Š” ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™” ํ•œ ๋‹ค์Œ์— ๋‹ค์‹œ ๊ฐœ์ธํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ œ3์ž๋Š” ๊ฐœ์ธํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํƒˆ์ทจํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.

 

๊ฐœ์ธํ‚ค ์•”ํ˜ธํ™”: ๋ชจ๋‘์—๊ฒŒ ๊ณต๊ฐœ๋œ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜๋ฏ€๋กœ ์ธ์ฆ๋œ ์ •๋ณด์ž„์„ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋‹ค.

A๋Š” ์›๋ณธ ๋ฐ์ดํ„ฐ์™€ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด B์—์„œ๋Š” ๊ณต๊ฐœํ‚ค๋ฅผ ํ†ตํ•ด ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณตํ˜ธํ™”ํ•˜๊ณ  ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์›๋ณธ ๋ฐ์ดํ„ฐ์™€ ์ผ์น˜ํ•˜๋ฉด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์ž„์„ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”๋ฅผ ํ•˜์˜€์„ ๋•Œ ์›๋ณธ ๋ฐ์ดํ„ฐ์™€ ๋‹ค๋ฅด๋‹ค๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋Š” A๊ฐ€ ์•„๋‹Œ ์ œ3์ž๊ฐ€ ์•”ํ˜ธํ™”ํ•œ ๋ฐ์ดํ„ฐ์ด๋ฏ€๋กœ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋‹ค.

 

TLS Hand Shaking

SSL์€ SSL 1.0 ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ช…์นญ์ด ๋ฐ”๋€Œ์–ด TLS 1.3 ๋ฒ„์ „์— ์ด๋ฅด๋ €๋‹ค.

TLS๋Š” ์ „์†ก ๊ณ„์ธต์—์„œ ์ œ 3์ž๊ฐ€ ๋ฉ”์„ธ์ง€๋ฅผ ๋„์ฒญํ•˜๊ฑฐ๋‚˜ ๋ณ€์กฐํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ณด์•ˆ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

 

์ด ๊ณผ์ •์—์„œ ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”์™€ ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์—ฌ์„œ ๋น ๋ฅธ ์—ฐ์‚ฐ ์†๋„์™€ ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

๋จผ์ € ์ฒ˜์Œ ์—ฐ๊ฒฐ์ด ์ง„ํ–‰๋ ๋•Œ๋Š” ์•ˆ์ „ํ•œ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ์†๋„๊ฐ€ ๋‹ค์†Œ ๋Š๋ฆฐ ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ดํ›„์—๋Š” ๋น ๋ฅธ ํ†ต์‹ ์„ ์œ„ํ•ด์„œ ๋Œ€์นญํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

Client : Client Hello

ํŒจํ‚ท์— TLS Version, Client๊ฐ€ ์ง€์›ํ•˜๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹(์‚ฌ์ดํผ์ŠˆํŠธ), Client Random Data(ํด๋ผ์ด์–ธํŠธ์—์„œ ์ƒ์„ฑํ•œ ๋‚œ์ˆ˜๋กœ ๋Œ€์นญํ‚ค๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ), ์ž„์‹œ *DH๋ณ€์ˆ˜, SNI(์„œ๋ฒ„๋ช…) ๋ฅผ ๋‹ด์•„์„œ ๋ณด๋‚ธ๋‹ค.

 

DH ๋งค๊ฐœ๋ณ€์ˆ˜ : DH๋Š” Die-Hellman์„ ์˜๋ฏธํ•˜๋ฉฐ Die-Hellman ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์„œ๋กœ ๊ณต๊ฐœ๊ฐ’ ๊ณต์œ ,๋น„๋ฐ€๊ฐ’๊ณผ ํ˜ผํ•ฉ, ํ˜ผํ•ฉ๊ฐ’๊ณผ ๊ณต์œ , ๊ฐ์ž์˜ ๋น„๋ฐ€๊ฐ’๊ณผ ํ˜ผํ•ฉํ•ด์„œ ๊ณตํ†ต์˜ ์•”ํ˜ธํ‚ค๋ฅผ ๋งŒ๋“œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋ชจ๋“  TLS ํ†ต์‹ ์ด DH ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์Œ

 

Server Hello, EncryptedExtensions, Certificate, CertificateVerify

์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์˜ต์…˜์„ ํ™•์ธํ•˜๊ณ  ๊ณต๊ฐœํ‚ค๊ฐ€ ํฌํ•จ๋œ ์ธ์ฆ์„œ์™€, ์„œ๋ฒ„๋žœ๋ค๊ฐ’, DH ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ๋ณด๋‚ธ๋‹ค.

 

Client : Client Key Exchange

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ DH๋งค๊ฐœ๋ณ€์ˆ˜(ํ˜น์€ ๊ณต๊ฐœํ‚ค)๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ธ์…˜ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ ์„ธ์…˜ํ‚ค๋ฅผ ๋‹ค์‹œ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•ด์„œ ์„œ๋ฒ„์— ๋ณด๋‚ด๋ฉด, ์„œ๋ฒ„๋Š” ๊ฐœ์ธํ‚ค๋กœ ๋ณตํ˜ธํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Server & Client : Finished

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์„ธ์…˜ํ‚ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ ๋Œ€์นญ ์•”ํ˜ธํ™”๋œ ํ†ต์‹ ์ด ์‹œ์ž‘๋œ๋‹ค.

 

๋งŒ์•ฝ ์„ธ์…˜ํ‚ค๊ฐ€ ์ƒ์„ฑ๋œ ์ดํ›„ ๋‹ค์‹œ ๊ทธ ์‚ฌ์ดํŠธ์— ๋ฐฉ๋ฌธํ•œ๋‹ค๋ฉด, ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋†“์€ ์„ธ์…˜ํ‚ค๋กœ ํ†ต์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ฆ์— ๋“œ๋Š” ๋น„์šฉ์€ ์—†๋‹ค.

 

 

 

 

TCP - ์ „์†ก ์ œ์–ด ํ”„๋กœํ† ์ฝœ 

 

TCP ํ”„๋กœํ† ์ฝœ์€ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์—ฐ๊ฒฐ์ง€ํ–ฅ์ ์ด๋ผ๋Š” ํŠน์ง•์ด ์žˆ์œผ๋ฉฐ ๊ฐ€์ƒ ํšŒ์„  ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

IP์˜ ๋‹จ์ ์ด์—ˆ๋˜ ํŒจํ‚ท ์†์‹ค์ด๋‚˜ ์ˆœ์„œ ๋ฏธ๋ณด์žฅ ๊ฐ™์€ ๋ฌธ์ œ๋“ค์„ ํŒจํ‚ท์„ ์ œ์–ดํ•˜์—ฌ ํ•ด๊ฒฐํ•ด ์ค€๋‹ค.

 

๊ฐ€์ƒ ํšŒ์„  ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ์‹

๊ฐ€์ƒํšŒ์„  ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ์‹์€ ๊ฐ ํŒจํ‚ท์— ๊ฐ€์ƒํšŒ์„  ์‹๋ณ„์ž๊ฐ€ ํฌํ•จ๋˜๊ณ  ํŒจํ‚ท๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ๋„์ฐฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋ชจ๋“  ํŒจํ‚ท์„ ์ „์†กํ•˜๋ฉด ๊ฐ€์ƒ ํšŒ์„ ์ด ํ•ด์ œ๋œ๋‹ค.

 

TCP ํ”„๋กœํ† ์ฝœ์€ ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•  ๋•Œ 3 way ํ•ธ๋“œ์…ฐ์ดํฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•  ๋•Œ 4way ํ•ธ๋“œ ์…ฐ์ดํฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

3way ํ•ธ๋“œ์…ฐ์ดํฌ

- SYN : ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ *ISN๊ณผ SYN์„ ๋ณด๋‚ธ๋‹ค. 

*ISN : TCP ์—ฐ๊ฒฐ์˜ ์ฒซ ๋ฒˆ์งธ ํŒจํ‚ท์— ํ• ๋‹น๋œ ์ž„์˜์˜ ์‹œํ€€์Šค ๋ฒˆํ˜ธ์ด๋‹ค. ์ง€์—ฐ ์ „์†ก๋œ ํŒจํ‚ท์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋กœ ์ธ์‹ํ•˜๋Š” ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ž„์˜์˜ ๋‚œ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋˜ํ•œ ์ž„์˜์˜ ๋‚œ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์˜ˆ์ธก์ด ํž˜๋“ค๊ฒŒ ๋งŒ๋“ค์–ด ๋ณด์•ˆ์„ ๊ฐ•ํ™”์‹œํ‚จ๋‹ค.

 

 

- SYN + ACK : ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ SYN์„ ๋ฐ›๊ณ  ์‘๋‹ต๊ฐ’์œผ๋กœ ์„œ๋ฒ„์˜ ISN๊ณผ ์Šน์ธ๋ฒˆํ˜ธ๋กœ ISN + 1์„ ๋ณด๋‚ธ๋‹ค.

 

- ACK : ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์Šน์ธ ๋ฒˆํ˜ธ๋ฅผ ๋‹ด์•„์„œ ACK๋ฅผ ๋ณด๋‚ธ๋‹ค.

 

์ด ๊ณผ์ •์ด ๊ตฌ์ถ•๋˜๊ณ  ๋‚œ ๋’ค์— ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, TCP๋Š” ์‹ ๋ขฐ์„ฑ์ด ์žˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ชจ๋“  ํ†ต์‹ ์—์„œ ์ด ๊ณผ์ •์„ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ๊ฐ™์€ ์†๋„๊ฐ€ ์ค‘์š”์‹œ ๋˜๋Š” ํ†ต์‹ ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

 

4way ํ•ธ๋“œ์…ฐ์ดํฌ

- FIN_WAIT_1 : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ์„ ๋‹ซ์œผ๋ ค๊ณ  ํ•  ๋•Œ FIN์œผ๋กœ ์„ค์ •๋œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ FIN_WAIT_1์˜ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

 

- CLOSE_WAIT : ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ ACK๋ผ๋Š” ์Šน์ธ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๋Š” CLOSE , ํด๋ผ์ด์–ธํŠธ๋Š” FIN_WAIT2 ์ƒํƒœ์— ๋“ค์–ด๊ฐ„๋‹ค.

 

- LAST_ACK : ์„œ๋ฒ„๋Š” ACK๋ฅผ ๋ณด๋‚ด๊ณ  ์ผ์ • ์‹œ๊ฐ„ ์ดํ›„์— FIN์ด๋ผ๋Š” ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ธ๋‹ค.

 

- *TIME_WAIT : ์ผ์ • ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฐ ๋’ค์— ์„œ๋ฒ„๋กœ ACK๋ฅผ ๋ณด๋‚ด์„œ ์„œ๋ฒ„๋Š” CLOSED ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ์ดํ›„ ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์ด ๋‹ซํžˆ๋ฉด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ๋ชจ๋“  ์ž์›์˜ ์—ฐ๊ฒฐ์ด ํ•ด์ œ๋œ๋‹ค.

 

TIME_WAIT : ์†Œ์ผ“์ด ๋ฐ”๋กœ ์†Œ๋ฉธ๋˜์ง€ ์•Š๊ณ  ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์œ ์ง€๋˜๋Š” ์ƒํƒœ์ด๋ฉฐ, ์ง€์—ฐ ํŒจํ‚ท์ด๋‚˜ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜ ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•œ๋‹ค.

 

2way ํ•ธ๋“œ์…ฐ์ดํฌ๊ฐ€ ์—†๋Š” ์ด์œ  : ์ „์†ก ์ธก ์ž…์žฅ์—์„œ ์ž๊ธฐ์˜ ์‹ ํ˜ธ๊ฐ€ ์ œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์—ˆ๋Š” ์ง€ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋Š” TCP์˜ ๊ทผ๋ณธ์ธ ์–‘๋ฑกํ–ฅ ์—ฐ๊ฒฐ์ด ๊นจ์ ธ๋ฒ„๋ฆฌ๊ฒŒ ๋˜๊ณ  ๊ณง ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๊ฒŒ๋œ๋‹ค.

 

TCP ์ „์†ก ์ œ์–ด

 

ํ๋ฆ„์ œ์–ด

์†ก์‹  ์ธก์€ ์ˆ˜์‹  ์ธก์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋Š ์ •๋„๋กœ ๋ณด๋‚ด์ค˜์•ผ ํ• ์ง€๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.

ex) ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ์„œ ๋™์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋Ÿ‰์„ ์กฐ์ ˆ

 

์˜ค๋ฅ˜์ œ์–ด

ํ†ต์‹  ๋„์ค‘์— ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜์—ˆ์„ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

ex) go back n - ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋œ ์‹œ์ ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ๋‹ค. 

selective repeat - ์œ ์‹ค๋œ ๋ฐ์ดํ„ฐ๋งŒ ์„ ํƒ์ ์œผ๋กœ ๋ณด๋‚ธ๋‹ค. 

 

ํ˜ผ์žก์ œ์–ด

๋„คํŠธ์›Œํฌ ํ˜ผ์žก์„ ๊ฐ์ง€ํ•˜์—ฌ์„œ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์†ก์‹  ์ธก์˜ ๋ฐ์ดํ„ฐ ์ „์†ก๋Ÿ‰์„ ์กฐ์ ˆํ•œ๋‹ค.

ex)

AIMD

- ์†ก์‹  ์ธก์ด transmission rate(window size)๋ฅผ ํŒจํ‚ท ์†์‹ค์ด ์ผ์–ด๋‚  ๋•Œ๊นŒ์ง€ ์ฆ๊ฐ€

Slow Start

- Slow Start๋Š” ์†ก์‹  ์ธก์ด window size๋ฅผ 1๋ถ€ํ„ฐ ํŒจํ‚ท ์†์‹ค์ด ์ผ์–ด๋‚  ๋•Œ๊นŒ์ง€ ์ง€์ˆ˜์Šน(exponentially)์œผ๋กœ ์ฆ๊ฐ€

 

TCP ํ—ค๋”

 

TCP ํ”„๋กœํ† ์ฝœ์€ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋‚˜ ACK ๋ฒˆํ˜ธ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ •๋ณด๋“ค์„ ํ—ค๋”์— ๋‹ด๊ณ  ์žˆ๋‹ค.

 

TCP์˜ ํŠน์ง• ์ •๋ฆฌ

1. ์—ฐ๊ฒฐ ์ง€ํ–ฅ(๊ฐ€์ƒํšŒ์„  ํŒจํ‚ท ๊ตํ™˜) ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

2. 3way , 4way ํ•ธ๋“œ ์…ฐ์ดํฌ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•˜๊ณ  ํ•ด์ œํ•œ๋‹ค.

3. ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์ „์†ก ์ œ์–ด ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.

4. ํŒจํ‚ท์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ฐ›์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.

 

UDP - ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๊ทธ๋žจ ํ”„๋กœํ† ์ฝœ

 

๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. TCP์˜ ๊ณ ์งˆ์ ์ธ ๋ฌธ์ œ์ธ ์†๋„๋กœ ์ธํ•ด์„œ ๋น ๋ฅธ ์ฒ˜๋ฆฌ๊ฐ€ ์š”๊ตฌ๋˜๋Š” ํ˜„๋Œ€์— ํ•„์š”์„ฑ์ด ๋Œ€๋‘๋˜์—ˆ์œผ๋ฉฐ HTTP/3.0์—์„œ ํ‘œ์ค€์œผ๋กœ ์ฑ„ํƒ๋˜์—ˆ๋‹ค. 

ํ•˜์ง€๋งŒ ๋น ๋ฅธ ์†๋„ ๋Œ€์‹  ์ „์†ก ์ œ์–ด๋‚˜ ํ•ธ๋“œ ์…ฐ์ดํฌ(๋น„์—ฐ๊ฒฐ์„ฑ) ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์€ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

๋ฐ์ดํ„ฐ๊ทธ๋žจ ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ์‹

๋ฐ์ดํ„ฐ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ์„œ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ๋ชฉ์ ์ง€๋กœ ๋ผ์šฐํŒ… ํ•˜๋Š” ์—ญํ• ๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์ด ๊ณผ์ •์—์„œ ํ•ธ๋“œ ์…ฐ์ดํฌ๋‚˜ ์ „์†ก ์ œ์–ด๊ฐ™์€ ๊ธฐ๋Šฅ๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๋Š” ๋” ๋นจ๋ผ์ง„ ๋Œ€์‹  ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์€ ๋–จ์–ด์ง„๋‹ค.

 

UDP ํ—ค๋”

 

UDP ํ”„๋กœํ† ์ฝœ์€ ์ƒ๋Œ€์ ์œผ๋กœ ๋‹จ์ˆœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ—ค๋”์—์„œ๋„ ๋งŽ์€ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์ง„์•Š๋‹ค.

checksum ํ•„๋“œ๋ฅผ ํ†ตํ•ด ์ตœ์†Œํ•œ์˜ ์˜ค๋ฅ˜ ๊ฒ€์ถœ์€ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

UDP์˜ ํŠน์ง• ์ •๋ฆฌ

1. ๋น„์—ฐ๊ฒฐํ˜• ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ, ๋ฐ์ดํ„ฐ๊ทธ๋žจ ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

2. ์—ฐ๊ฒฐ ๊ณผ์ •์—์„œ ๋ณ„๋„์˜ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๋Š”๋‹ค. -> ์ˆ˜์‹  ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.

3. ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ์€ ๋Œ€์‹  ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

4. ์†๋„๊ฐ€ ์ค‘์š”์‹œ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค์— ์ ํ•ฉํ•˜๋‹ค.

 

๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ 

๋ฉ”๋ชจ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ์œ„ ๊ณ„์ธต์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ์†๋„๋Š” ๋นจ๋ผ์ง€๋Š” ๋Œ€์‹  ๊ฐ€๊ฒฉ์€ ๋น„์‹ธ์ง„๋‹ค.

์†๋„๊ฐ€ ๋น ๋ฅธ ์บ์‹œ๋‚˜ ๋ ˆ์ง€์Šคํ„ฐ์— ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ์ €์žฅํ•ด๋†“์œผ๋ฉด ์ข‹๊ฒ ์ง€๋งŒ ๊ทธ๋Ÿฌ์ง€ ๋ชปํ•˜๋Š” ์ด์œ ๊ฐ€ ๊ฒฝ์ œ์„ฑ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ๋Š๋ฆฐ ์ €์žฅ์žฅ์น˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด๋†“๊ณ  ๋น ๋ฅธ ์žฅ์น˜๋Š” ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ, ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ์‚ฌ์ด์˜ ์†๋„ ์ฐจ์ด๊ฐ€ ๋„ˆ๋ฌด ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์— ๋ ˆ์ง€์Šคํ„ฐ ๊ณ„์ธต๊ณผ ์บ์‹œ ๊ณ„์ธต์„ ๋‘์–ด์„œ ๊ด€๋ฆฌํ•œ๋‹ค.

 

์บ์‹œ

 

์œ„์—์„œ ๋งํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์บ์‹œ๋Š” ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ์ž„์‹œ ์ €์žฅ์†Œ์ด์ž ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค.

์บ์‹œ๋ฅผ ํ†ตํ•ด CPU์˜ ์—ฐ์‚ฐ ์†๋„์™€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์†๋„์˜ ์ฐจ์ด๋ฅผ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ณ„์ธต์  ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ

๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ๊ทธ๋žฌ๋˜ ๊ฒƒ ์ฒ˜๋Ÿผ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋˜ํ•œ ์บ์‹œ๋ฅผ ๊ณ„์ธต์ ์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ L1, L2 ์บ์‹œ๋Š” CPU ์ฝ”์–ด ๋‚ด๋ถ€์— ์œ„์น˜ํ•˜๋ฉฐ L3๋Š” CPU๊ฐ€ ์•„๋‹Œ ๋ฉ”์ธ๋ณด๋“œ์— ์œ„์น˜ํ•œ๋‹ค.

 

์ฐธ์กฐ ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ

 

ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์— ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์บ์‹œ ํžˆํŠธ๋ผ๊ณ  ํ•˜๊ณ  ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ์บ์‹œ ๋ฏธ์Šค๋ผ๊ณ  ํ•œ๋‹ค. ๋‹น์—ฐํžˆ ์บ์‹œ ํžˆํŠธ๊ฐ€ ๋งŽ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์ด ์ข‹์€ ๊ฑด๋ฐ, ์ ์ค‘๋ฅ ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

 

*์บ์‹œ ํžˆํŠธ๋Š” CPU ๋‚ด๋ถ€ ๋ฒ„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์บ์‹œ ๋ฏธ์Šค๋Š” ์‹œ์Šคํ…œ ๋ฒ„์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (๋‹น์—ฐํžˆ CPU ๋‚ด๋ถ€ ๋ฒ„์Šค๊ฐ€ ๋” ๋น ๋ฅด๋‹ค!)

 

์ง€์—ญ์„ฑ์€ ๋‘๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ์‰ฝ๋‹ค.

List<Integer> list = new ArrayList<>();

for(int i=0;i<10;i++) {
	list.add(i);
}

 

 

์‹œ๊ฐ„ ์ง€์—ญ์„ฑ

- CPU๋Š” ์ตœ๊ทผ์— ์‚ฌ์šฉํ–ˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋‹ค์‹œ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค.

- ์˜ˆ์‹œ ์ฝ”๋“œ์—์„œ ๋ณ€์ˆ˜ i์— ๋Œ€ํ•ด์„œ ๊ณ„์†ํ•ด์„œ ์ ‘๊ทผ์ด ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ๋‹ค.

 

์ฐธ์กฐ ์ง€์—ญ์„ฑ

- CPU๋Š” ์ตœ๊ทผ์— ์‚ฌ์šฉํ–ˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๊ทผ์ฒ˜๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค.

- ์˜ˆ์‹œ ์ฝ”๋“œ์—์„œ list ๊ณต๊ฐ„์— ๊ณ„์†ํ•ด์„œ ์ ‘๊ทผํ•˜๊ณ  ์žˆ๋‹ค.

 

์บ์‹œ ๋งคํ•‘

์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋งค์šฐ ์ž‘๊ณ  ์ฃผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋งคํ•‘ํ•˜๋Š๋ƒ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ๋˜ํ•œ CPU์—์„œ ์บ์‹œ๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ ํšจ์œจ์ ์œผ๋กœ ํƒ์ƒ‰์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.

 

์ง์ ‘ ๋งคํ•‘

- ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 1~100์ด ์žˆ๊ณ  ์บ์‹œ๊ฐ€ 1~10์ด ์žˆ๋‹ค๋ฉด 1:1~10 , 2: 11:~20 .. ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅํ•œ๋‹ค.

- ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๊ณ  ์ฒ˜๋ฆฌ๊ฐ€ ๋น ๋ฅด์ง€๋งŒ ์ถฉ๋Œ(์Šค์™€ํ•‘)์ด ์žฆ๋‹ค.

 

์—ฐ๊ด€ ๋งคํ•‘

- ์ˆœ์„œ์™€ ๋ธ”๋ก ์ƒ๊ด€์—†์ด ์ž์œ ๋กญ๊ฒŒ ๋งคํ•‘์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ์ถฉ๋Œ์€ ๋œ ์ผ์–ด๋‚˜์ง€๋งŒ ๋ชจ๋“  ๋ธ”๋ก์„ ํƒ์ƒ‰ํ•ด์•ผํ•˜๋ฏ€๋กœ ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฌ๋‹ค.

 

์ง‘ํ•ฉ ์—ฐ๊ด€ ๋งคํ•‘

- ์ง์ ‘ ๋งคํ•‘๊ณผ ์—ฐ๊ด€ ๋งคํ•‘์˜ ์ ˆ์ถฉ์•ˆ์ด๋‹ค.

- ์ •ํ•ด์ง„ ์žฅ์†Œ(์ง์ ‘ ๋งคํ•‘) ๋‚ด์— ์–ด๋Š ์žฅ์†Œ์—๋‚˜(์—ฐ๊ด€ ๋งคํ•‘) ๋งคํ•‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

- ์ง์ ‘ ๋งคํ•‘์— ๋น„ํ•ด ์ €์žฅ์ด ๋น ๋ฅด๊ณ  ์—ฐ๊ด€ ๋งคํ•‘๋ณด๋‹ค ๊ฒ€์ƒ‰์ด ๋น ๋ฅด๋‹ค. 

 

์บ์‹œ์™€ ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ฐจ์ด

 

๋ ˆ์ง€์Šคํ„ฐ๋Š” CPU ๋‚ด์—์„œ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์ด๋ฉฐ, ์บ์‹œ๋Š” ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ๊ฐ„์˜ ์†๋„ ์ฐจ์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค.

๋ ˆ์ง€์Šคํ„ฐ๋Š” CPU ๋‚ด๋ถ€์— ์œ„์น˜ํ•ด ์žˆ์œผ๋ฉฐ ์บ์‹œ๋Š” CPU์™€๋Š” ๋ณ„๋„๋กœ ์กด์žฌํ•œ๋‹ค. 

๋„คํŠธ์›Œํฌ๋ž€

ํ†ต์‹  ๋ถ„์•ผ์—์„œ ๋‹จ๋ง๊ธฐ ๋“ฑ์„ ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋‹จ๋ง๊ธฐ๊ธฐ, ์„ ๋กœ ๋ฐ ๊ต ํ™˜๊ธฐ ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋Š” ์ „์†ก๋งค์ฒด์ด๋‹ค.

 

ํ”„๋กœํ† ์ฝœ

ํ†ต์ผ์„ ์œ„ํ•œ ์ƒํ˜ธ ๊ฐ„์˜ ๊ทœ์•ฝ(์•ฝ์†)์ด๋‹ค.

 

ํ”„๋กœํ† ์ฝœ์˜ ๊ตฌ์„ฑ ์š”์†Œ

1. ๊ตฌ๋ฌธ(syntax)

- ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ• ์ง€ , ์ฝ”๋”ฉ ๋ฐฉ๋ฒ• , ์‹ ํ˜ธ ๋ ˆ๋ฒจ ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด

- ๋ฐ์ดํ„ฐ ํฌ๋งท(ํ˜•์‹), ๋ถ€ํ˜ธํ™”, ์‹ ํ˜ธ ๋ ˆ๋ฒจ ๋“ฑ

 

2. ์˜๋ฏธ(semantic)

- ๋ฐ์ดํ„ฐ๋‚˜ ์˜ˆ์™ธ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด

- ํŠน์ • ํŒจํ„ด์„ ์–ด๋–ป๊ฒŒ ํ•ด์„ํ•˜๊ณ , ์–ด๋–ค ๋™์ž‘์„ ํ•  ๊ฒƒ์ธ๊ฐ€ ๊ฒฐ์ •

 

3. ํƒ€์ด๋ฐ(timing) 

- ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์งˆ ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์†๋„์— ๋Œ€ํ•œ ์กฐ์ ˆ๊ณผ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์‹œ์— ํ†ต์‹ ์„ ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ์ˆœ์„œ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ธฐ๋ฒ•

- ์†๋„ ์ผ์น˜ ๋ฐ ์ˆœ์„œ ์ œ์–ด

 

ํ”„๋กœํ† ์ฝœ์˜ ์—ญํ• 

1. ์—๋Ÿฌ ์ œ์–ด (Error Control)
     - ์ „์†ก ์ค‘ ์—๋Ÿฌ ๊ฒ€์ถœ ๋ฐ ์—๋Ÿฌ ์ •์ •
2. ์บก์Šํ™” (Encapsulation)
     - ํ†ต์‹ ๊ณ„์ธต ์ƒ์˜ ๊ฐ ๊ณ„์ธต์ด ์ž์‹  ๋งŒ์˜ ํŠน์ •์ œ์–ด์ •๋ณด(์ฃผ๋กœ Header)๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ
3. ์—ฐ๊ฒฐ ์ œ์–ด (Connection Control) ๋˜๋Š” ์„ธ์…˜ ๊ด€๋ฆฌ
     - ์—ฐ๊ฒฐ์ง€ํ–ฅ์  ํ†ต์‹ ์—์„œ ์—ฐ๊ฒฐ์„ค์ •,๋ฐ์ดํ„ฐ์ „๋‹ฌ,์—ฐ๊ฒฐ์ข…๋ฃŒ ์ ˆ์ฐจ์˜ ์ œ์–ด
4. ์ˆœ์„œ ์ œ์–ด (Sequence Control)
     - ์ˆœ์„œ ์—ญ์ „, ์ค‘๋ณต ํŒจํ‚ท ๋ฐœ์ƒ ๋“ฑ์˜ ๋ฐฉ์ง€
5. ํ๋ฆ„ ์ œ์–ด (Flow Control)
     - ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๋Ÿ‰/์ „์†ก๋ฅ ์˜ ์ œํ•œ
6. ํ˜ผ์žก ์ œ์–ด (Congestion Control)
     - ํฌํ™”/๋Œ€๊ธฐ ํŒจํ‚ท ์ˆ˜์˜ ์ œํ•œ์„ ์œ„ํ•œ ์ œ์–ด ๊ธฐ๋ฒ•
7. ๋™๊ธฐํ™” (Synchronization)
     - ์†ก์ˆ˜์‹  ์–‘์ธก ๊ฐ„์— ์‹œ๊ฐ„ ๊ด€๊ณ„(์ฃผ๋กœ,์œ„์ƒ)์˜ ์ผ์น˜
8.์ฃผ์†Œ ์ง€์ • (Addressing)
     - ํ˜ธ์ŠคํŠธ/๋””๋ฐ”์ด์Šค/ํ”„๋กœ์„ธ์Šค ๋“ฑ์„ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณต
9. ๋‹จํŽธํ™” ๋ฐ ์žฌ์กฐ๋ฆฝ (Segmentation and Reassembly, Fragmentation and Reassembly)
     - ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ์ „์†ก์— ์ ๋‹นํ•œ ํฌ๊ธฐ๋กœ ๋ถ„ํ•ด,์กฐ๋ฆฝ
10. ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹ํ™” (Data Formatting) ๋“ฑ

 

ํŒจํ‚ท

ํŒจํ‚ท ์Šค์œ„์นญ ๋ฐฉ์‹์—์„œ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ธ”๋ก์ด๋‹ค.

 

ํŒจํ‚ท์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ฒˆ์— ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค๋ฉด ํ†ต์‹  ๋Œ€์—ญํญ์„ ๋งŽ์ด ์ฐจ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์˜ ์ „์†ก์ด ์ง€์—ฐ๋˜๋ฉฐ ์ด๋Š” ๊ณง ํ†ต์‹ ์˜ ๋ฌธ์ œ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

ํŒจํ‚ท ๊ตฌ์กฐ

๋„คํŠธ์›Œํฌ ํŒจํ‚ท์€ ํ—ค๋”(Header), ํŽ˜์ด๋กœ๋“œ(Payload), ํŠธ๋ ˆ์ผ๋Ÿฌ(Trailer) ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ

1. ํ—ค๋”

- ํŒจํ‚ท ๊ธธ์ด, ํ”„๋กœํ† ์ฝœ, ๋ณด๋‚ธ/๋ฐ›๋Š” ์‚ฌ๋žŒ์˜ IP ์ฃผ์†Œ ๋“ฑ์ด ํฌํ•จ

- ํŒจํ‚ท์˜ ์ฃผ์†Œ(์†ก์ˆ˜์‹  ์ฃผ์†Œ) ๋“ฑ ์ฃผ์š” ์ œ์–ด ์ •๋ณด๋“ค์ด ํฌํ•จ

2. ํŽ˜์ด๋กœ๋“œ

- ํŒจํ‚ท์˜ ๋ณธ๋ฌธ (๋‚ด์šฉ , ๋ฐ์ดํ„ฐ)

3. ํŠธ๋ ˆ์ผ๋Ÿฌ (footer)

- ํŒจํ‚ท์˜ ๋์— ๋„๋‹ฌํ–ˆ์Œ์„ ์ˆ˜์‹  ์ปดํ“จํ„ฐ์— ์•Œ๋ฆฌ๋Š” ๋น„ํŠธ ํฌํ•จ

- ํŒจํ‚ท ์—๋Ÿฌ ๊ฒ€์ถœ ๋“ฑ์— ์‚ฌ์šฉ 
- ํŒจํ‚ท ๊ผฌ๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์Œ

 

CBN(Curcuit Based Network) vs PBN(Packet Based Network)

 

CBN

1. ์ „ํ™”๋ง์— ์‚ฌ์šฉ

2. ์—ฐ๊ฒฐ ์ง€ํ–ฅ (connection-oriented)

3. ์ž์› ์ ์œ  -> QoS ๋ณด์žฅ

 

PBN

1. ์ธํ„ฐ๋„ท

2. connection less service

3. ์ž์› ๊ณต์œ  ๋ฐฉ์‹ -> QoS ๋ณด์žฅx , Best effort

 

 

OSI 7 Layer

7๊ณ„์ธต - ์‘์šฉ ๊ณ„์ธต

ํ†ต์‹ ์„ ์œ„ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ - ์นด์นด์˜คํ†ก

GUI๋กœ ๊ตฌ์„ฑ ๋œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

์ฃผ์š” ํ”„๋กœํ† ์ฝœ - TELNET, FTP, SMTP, HTTP ๋“ฑ

 

6๊ณ„์ธต - ํ‘œํ˜„ ๊ณ„์ธต

๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•  ์ง€์— ๋Œ€ํ•ด ๊ฒฐ์ •

Codec(coding+decoding) ๊ด€๋ จ ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ, ์••์ถ•/ํ•ด์ œ, ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™” ๋“ฑ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

ex) avi, mp4, mp3

 

5๊ณ„์ธต - ์„ธ์…˜ ๊ณ„์ธต

์‚ฌ์šฉ์ž์˜ ๊ตฌ๋ถ„. ๋ˆ„๊ตฌ์™€ ํ†ต์‹  ํ•  ๊ฒƒ์ธ๊ฐ€? ์— ๋Œ€ํ•ด ๊ฒฐ์ •

Session ID : ๋ˆ„๊ตฌ์™€ ํ†ต์‹  ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์•Œ๋ ค์ฃผ๋Š” ๊ตฌ๋ถ„์ž (ID)

TCP/IP ํ†ต์‹  ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝ/ ์œ ์ง€/์ค‘๋‹จ

 

4๊ณ„์ธต - ์ „์†ก ๊ณ„์ธต

์–ด๋–ค *port๋กœ ์ „์†กํ•  ๊ฒƒ์ธ๊ฐ€? ์— ๋Œ€ํ•ด ๊ฒฐ์ •

port : process๋ฅผ ํŠน์ •ํ•˜๊ธฐ ์œ„ํ•œ ์ฃผ์†Œ

 

ํฌํŠธ์˜ ์ข…๋ฅ˜

0~1023: well-known port. ํ‘œ์ค€ํ™”๋˜์–ด ์žˆ๋Š” ํฌํŠธ

– 20 FTP, 23 Telnet, 53 DNS, 80 HTTP, 433 HTTPS

1024~49151: registered port. ์ƒ์—…์ ์ธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ํšŒ์‚ฌ๋“ค์ด ๋“ฑ๋กํ•˜ ์—ฌ ์‚ฌ์šฉํ•˜๋Š” ํฌํŠธ

49152~65535: dynamic port. ์‚ฌ์šฉ์ž(๊ฐœ๋ฐœ์ž) ์ž์œ ๋กญ๊ฒŒ ์ฆ‰ํฅ์ ์œผ๋กœ ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํฌํŠธ

 

UDP vs TCP

UDP: TCP ๋Œ€๋น„ ํ”„๋กœํ† ์ฝœ์ด ๊ฐ„๊ฒฐํ•จ. ๊ฐ€๋ณ๊ณ  ๋น ๋ฆ„. QoS ๋ณด์žฅ x

– real-time service: ์‹ค์‹œ๊ฐ„ ๋น„๋””์˜ค

TCP: UDP ๋Œ€๋น„ ํ”„๋กœํ† ์ฝœ์ด ๋ณต์žกํ•จ. ๋ฌด๊ฒ๊ณ  ๋Š๋ฆผ. UDP ๋Œ€๋น„ QoS ์ผ๋ถ€๋ถ„ ๋ณด์žฅ

– retransmission, timeout ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ํ๋ฆ„์ œ์–ด, ์˜ค๋ฅ˜์ œ์–ด

– non-real-time service: email ์„œ๋น„์Šค, ๋ฌธ์ž ์„œ๋น„์Šค

 

3๊ณ„์ธต - ๋„คํŠธ์›Œํฌ ๊ณ„์ธต

End to End ํ†ต์‹ ์„ ๋‹ด๋‹น (source-to-destination)

๋ผ์šฐํ„ฐ๋ฅผ ํ†ตํ•ด IP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ํ•œ๋‹ค. (๋ผ์šฐํŒ…)

- DNS๋ฅผ ์ด์šฉํ•˜์—ฌ ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ IP๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

์ฃผ์š” ํ”„๋กœํ† ์ฝœ - IP, ARP, ICMP, IGMP, RIP, RIP v2, OSPF, IGRP, EIGRP, BGP ๋“ฑ

 

2๊ณ„์ธต - ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต

์Šค์œ„์น˜๋ฅผ ํ†ตํ•ด *MAC ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ชฉ์ ์ง€๋ฅผ ์ฐพ์•„๊ฐ„๋‹ค (hop by hop , node to node)

MAC : ๊ณ ์œ ํ•œ ํ•˜๋“œ์›จ์–ด ์ฃผ์†Œ

 

์ฃผ์š” ํ”„๋กœํ† ์ฝœ : HDLC, X.25, Ethernet, TokenRing, DFFI, FrameRelay ๋“ฑ

 

1๊ณ„์ธต - ๋ฌผ๋ฆฌ ๊ณ„์ธต

๋””์ง€ํ„ธ ๋ฐ์ดํ„ฐ๋ฅผ ์•„๋‚ ๋กœ๊ทธ์ ์ธ ์ „๊ธฐ์  ์‹ ํ˜ธ๋กœ ๋ณ€ํ™˜

๋ฐ์ดํ„ฐ๋ฅผ ๋น„ํŠธํ˜•ํƒœ๋กœ ํ‘œํ˜„

 

Topology: ๋ง์˜ ๊ตฌ์„ฑ

ex) Star, mesh, bus…

 

TCP/IP Layer

OSI ์ฐธ์กฐ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์—…์ ์ด๊ณ  ์‹ค๋ฌด์ ์œผ๋กœ ์ด์šฉ๋  ์ˆ˜ ์žˆ๋„๋ก ๋‹จ์ˆœํ™”๋œ ํ˜„์‹คํ™”์˜ ๊ณผ์ •์—์„œ ์ฑ„ํƒ๋œ ๋ชจํ˜•์ด๋‹ค. 

์ธํ„ฐ๋„ท์ด ๋ฐœ์ „๋˜๋Š” ๊ณผ์ •์—์„œ ๋Œ€๋ถ€๋ถ„ TCP/IP ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ๋„ ๋Œ€๋ถ€๋ถ„์˜ ํ†ต์‹ ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ ๊ตฌ์กฐ์ด๋‹ค.

 

TCP/IP ๊ณ„์ธต์€ OSI 7 ๊ณ„์ธต ๊ตฌ์กฐ์™€ ๋‹ฌ๋ฆฌ 4๊ฐœ์˜ ๊ณ„์ธต์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต , ์ „์†ก ๊ณ„์ธต , ์ธํ„ฐ๋„ท ๊ณ„์ธต , ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ฐ๊ฐ์˜ ๊ณ„์ธต์€ ์„œ๋กœ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.

 

1. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(application) ๊ณ„์ธต

FTP , HTTP ๊ฐ™์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ ๊ณ„์ธต์ด๋ฉฐ ์‹ค์งˆ์ ์œผ๋กœ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ด์ค€๋‹ค. 

OSI 7 ๊ณ„์ธต์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต๊ณผ ํก์‚ฌ

 

2. ์ „์†ก ๊ณ„์ธต(transport) ๊ณ„์ธต

์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ํ†ต์‹  ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. 

์ „์†ก ๊ณ„์ธต์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ๋กœ๋Š” TCP์™€ UDP๊ฐ€ ์žˆ์œผ๋ฉฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต๊ณผ ์ธํ„ฐ๋„ท ๊ณ„์ธต ์‚ฌ์ด์—์„œ ์ค‘๊ณ„ ์—ญํ• ์„ ํ•œ๋‹ค.

OSI 7 ๊ณ„์ธต์˜ ์ „์†ก ๊ณ„์ธต๊ณผ ํก์‚ฌ

 

3. ์ธํ„ฐ๋„ท ๊ณ„์ธต

๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ IP ์ฃผ์†Œ๋กœ ์ง€์ •๋œ ๋ชฉ์ ์ง€๋กœ ์ „์†กํ•œ๋‹ค. 

*ARP , IP ๊ฐ™์€ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์‹  ์ƒํƒœ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š” ๋น„์—ฐ๊ฒฐํ˜• ํ†ต์‹ ์„ ์ œ๊ณตํ•œ๋‹ค.

OSI 7 ๊ณ„์ธต์˜ ๋„คํŠธ์›Œํฌ ๊ณ„์ธต๊ณผ ํก์‚ฌ

 

ARP : IP์ฃผ์†Œ์— ํ•ด๋‹นํ•˜๋Š” MAC ์ฃผ์†Œ๋ฅผ ๋งค์นญ์‹œ์ผœ์ฃผ๋Š” ํ”„๋กœํ† ์ฝœ , ๋ฐ˜๋Œ€์˜ ๊ฐœ๋…์œผ๋กœ RARP๋„ ์žˆ๋‹ค.

 

4. ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ๊ณ„์ธต

์ „์„  , ๊ด‘์„ฌ์œ  , ๋ฌด์„  ๋“ฑ์œผ๋กœ ์‹ค์งˆ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. -> ์žฅ์น˜ ๊ฐ„์˜ ์‹ ํ˜ธ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ทœ์น™์„ ์ •ํ•œ๋‹ค.

๋ฌผ๋ฆฌ ๊ณ„์ธต๊ณผ ๋ฐ์ดํ„ฐ๋งํฌ ๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋ณด๊ธฐ๋„ ํ•œ๋‹ค. 

๋ฌผ๋ฆฌ๊ณ„์ธต์€ ๋ฌด์„  LAN์ด๋‚˜ ์œ ์„  LAN์„ ํ†ตํ•ด 0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต์€ ์ด๋”๋„ท ํ”„๋ ˆ์ž„์„ ํ†ตํ•ด MAC ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์†กํ•œ๋‹ค.

 

๊ณ„์ธต ๊ฐ„ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  ๊ณผ์ •

 

๊ธฐ๋ณธ์ ์œผ๋กœ ์š”์ฒญ ๊ฐ’๋“ค์ด ์บก์Šํ™”๋˜์–ด์„œ ์ „๋‹ฌ๋˜๊ณ  ์š”์ฒญ ๋ฐ›๋Š” ์„œ๋ฒ„๊ฐ€ ๋‹ค์‹œ ๋น„์บก์Šํ™” ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋œ๋‹ค.

 

 

Encapsulation๊ณผ Decapsulation

Encapsulation - ์ƒ์œ„ ๊ณ„์ธต์˜ ํ—ค๋”์™€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜์œ„ ๊ณ„์ธต์˜ ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์— ํฌํ•จ์‹œํ‚ค๊ณ  ํ•ด๋‹น ๊ณ„์ธต์˜ ํ—ค๋”๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.

Decapsulation - ํ•˜์œ„ ๊ณ„์ธต์—์„œ ์ƒ์œ„ ๊ณ„์ธต์œผ๋กœ ๊ฐ€๋ฉด์„œ ๊ฐ ๊ณ„์ธต์˜ ํ—ค๋” ๋ถ€๋ถ„์„ ์ œ๊ฑฐํ•œ๋‹ค.

 

 

 

OSI 7 Layer ๋˜๋Š” TCP/IP Layer์—์„œ ๊ณ„์ธตํ™”ํ•˜๋Š” ์ด์œ 

๋„คํŠธ์›Œํฌ๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ ๊ณ„์ธต ๋ณ„๋กœ ๋‚˜๋ˆ„๊ณ  ํ‘œ์ค€ํ™”ํ•จ์œผ๋กœ์จ ํฌํŠธ , ํ”„๋กœํ† ์ฝœ์˜ ํ˜ธํ™˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

(๊ฐ ๊ณ„์ธต๋ผ๋ฆฌ๋งŒ ํ†ต์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ)

๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๊ณ„์ธต๋“ค๊ฐ„์˜ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ ์ƒ๊ธด ๊ณ„์ธต์˜ ๋ฒ”์œ„ ๋‚ด์—์„œ ์›์ธ์„ ์ถ”์ ํ•ด๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. 

๋˜ํ•œ ๊ฐ ๊ณ„์ธต์˜ ์žฅ๋น„๋‚˜ ๊ธฐ์ˆ ์˜ ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด ์œ ์—ฐํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

 

IP(Internet Protocol)๋ž€?

์ธํ„ฐ๋„ท์—์„œ ๋„คํŠธ์›Œํฌ์˜ ๋‘ ํ˜ธ์ŠคํŠธ(host) ๊ฐ„์— ํ†ต์‹ ํ•  ๋•Œ ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๊ณ  ์ „์†ก ๊ณ„์ธต์˜(transport layer)์˜ ์ •๋ณด๋ฅผ ํŒจํ‚ท์œผ๋กœ ๋ถ„ํ• /์กฐ๋ฆฝํ•˜๋ฉฐ, ํŒจํ‚ท์„ IP ์ฃผ์†Œ์— ๋”ฐ๋ผ ๋ชฉ์ ์ง€์— ์ „์†กํ•˜๋Š” ํ†ต์‹  ๊ทœ์•ฝ์ด๋‹ค.

 

์†ก์‹ ์ธก์—์„œ๋Š” ํŒจํ‚ท์— ๋ชฉ์ ์ง€ ์ฃผ์†Œ๋ฅผ ํ‘œ๊ธฐํ•˜๊ณ  ๊ฐ๊ฐ์˜ ๋ผ์šฐํ„ฐ๋“ค์€ ํ•ด๋‹น ๋ชฉ์ ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜์—ฌ ๋‹ค์Œ ๋ผ์šฐํ„ฐ๋กœ ๋ผ์šฐํŒ…์‹œํ‚จ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ๋Š” ๋ชฉ์ ์ง€๊นŒ์ง€ ํŒจํ‚ท์„ ์ „์†กํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํŒจํ‚ท์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ผ์šฐํ„ฐ๋ฅผ ๊ฑด๋„ˆ๊ฐ€๋Š” ๊ฒƒ์„ hop-by-hop ํ†ต์‹ ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 

IP ์ฃผ์†Œ๋ž€?

IP์ฃผ์†Œ๋ž€ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋””๋ฐ”์ด์Šค์˜ ๋„คํŠธ์›Œํฌ์ƒ ์ฃผ์†Œ(์‹๋ณ„์ž)์ด๋‹ค.

 

IPV4 vs IPV6

IPv4 ์ฒด๊ณ„ ์ฃผ์†Œ์˜ ๊ณ ๊ฐˆ๊ณผ ํ™•์žฅ์„ฑ ๋ฉด์—์„œ์˜ ํ•œ๊ณ„๋กœ ์ธํ•ด ๋‚˜์˜จ ์ƒˆ๋กœ์šด ์ฃผ์†Œ ์ฒด๊ณ„์ด๋‹ค. IPv4๋Š” ํด๋ž˜์Šค ๊ธฐ๋ฐ˜์˜ ํ• ๋‹น ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์ด ๋ฐฉ์‹์€ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์†Œ๋ณด๋‹ค ๋ฒ„๋ฆฌ๋Š” ์ฃผ์†Œ๊ฐ€ ๋งŽ์€๋‹จ์ ์ด ์žˆ์—ˆ๊ณ  ํ™•์žฅ์„ฑ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ๋” ๋งŽ์€ ์ฃผ์†Œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ  ์ฐจ์„ธ๋Œ€ ๋ฉ€ํ‹ฐ ๋ฏธ๋””์–ด ํ™˜๊ฒฝ์—๋„ ์šฉ์ดํ•œ IPv6๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค.

 

IPv4๋Š” 32๋น„ํŠธ๋ฅผ 8๋น„ํŠธ ๋‹จ์œ„๋กœ ์ ์„ ์ฐ์–ด์„œ ํ‘œํ˜„ํ•œ๋‹ค. ex) 123.45.67.89

IPv6๋Š” 64๋น„ํŠธ๋ฅผ 16๋น„ํŠธ ๋‹จ์œ„๋กœ ์ ์„ ์ฐ์–ด ํ‘œ๊ธฐํ•œ๋‹ค. ex) 2001:db8:ff00:42:8329

์•„์ง๊นŒ์ง€๋Š” ์—ฌ์ „ํžˆ IPv4๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ์ฃผ์†Œ ์ฒด๊ณ„์ด๋‹ค.

 

IPv64์™€ IPv6์˜ ์ฐจ์ด์  ๋น„๊ต

  IPv4 IPv6
์ฃผ์†Œ ๊ธธ์ด 32๋น„ํŠธ๋ฅผ 8๋น„ํŠธ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ” (10์ง„์ˆ˜) 64๋น„ํŠธ๋ฅผ 16๋น„ํŠธ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ” (16์ง„์ˆ˜)
์ฃผ์†Œ ๊ฐœ์ˆ˜ ์•ฝ 43์–ต๊ฐœ 2^128๊ฐœ
QoS(Quality Of Service) ๋ฏธ๋ณด์žฅ(Best Effort) ๋ณด์žฅ
๋ณด์•ˆ IPSec ๋ณ„๋„ ์„ค์น˜ ํ•„์š” IPSec ์ž์ฒด ์ง€์›

 

 

IPv4์˜ ์ฃผ์†Œ ๋ถ€์กฑํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•

DHCP

- ์ฃผ์†Œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ• ๋‹นํ•  ํ•„์š” ์—†์ด ์ธํ„ฐ๋„ท์— ์ ‘์†ํ•  ๋•Œ๋งˆ๋‹ค IP์ฃผ์†Œ๋ฅผ ์ž๋™์œผ๋กœ ํ• ๋‹น ๋ฐ›๋Š”๋‹ค. (plug & play)

 

NAT

- ํŒจํ‚ท์ด ๋ผ์šฐํŒ… ์žฅ์น˜๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ๋™์•ˆ ํŒจํ‚ท์˜ IP ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋‹ค๋ฅธ ์ฃผ์†Œ๋กœ ๋งคํ•‘ํ•œ๋‹ค.

IPv4 ์ฒด๊ณ„๋กœ๋Š” ๋งŽ์€ ์ฃผ์†Œ๋“ค์„ ๊ฐ๋‹นํ•˜์ง€ ๋ชปํ–ˆ์—ˆ๋Š”๋ฐ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณต์ธ IP์™€ ์‚ฌ์„ค IP๋กœ ๋‚˜๋ˆ„์–ด์„œ ์ฃผ์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

NAT๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์˜ ๊ณต์ธ IP๋กœ ์‚ฌ์šฉ์ž๋“ค์€ ๊ฐ๊ฐ์˜ ๋‹ค๋ฅธ IP๋ฅผ ๊ฐ€์ง„๊ฒƒ์ฒ˜๋Ÿผ ์ธํ„ฐ๋„ท์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (๊ณต์œ ๊ธฐ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.)

NAT

 

 

CISC๋ž€?

CISC(Complex Instruction Set Computer)๋ž€ ๋งŽ์€ ์ˆ˜์˜ ๋‹ค์–‘ํ•˜๊ณ  ์ค‘๋ณต๋˜๋Š” ๋ช…๋ น์–ด ์ง‘ํ•ฉ์ด๋‹ค.

*๋ช…๋ น์–ด ์ง‘ํ•ฉ:CPU๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋“ค์˜ ๋ชจ์Œ

 

์‚ฌ์šฉ์ž๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š”(๊ณ ๊ธ‰ ์–ธ์–ด) ํ•˜๋‚˜์— ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด๋ฅผ ๋Œ€์ž… ์‹œํ‚ด์œผ๋กœ์จ ๋ช…๋ น์–ด์ˆ˜๊ฐ€ ๋งŽ๊ณ  ๊ฐ€๋ณ€ ๊ธธ์ด๋ฅผ ๊ฐ€์ง„๋‹ค.

๋ช…๋ น์–ด ์ˆ˜๊ฐ€ ๋งŽ๊ณ  ์ƒ๋Œ€์ ์œผ๋กœ ์ ์€ ์ˆ˜์˜ ๋ช…๋ น์–ด๋กœ๋„ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ์ ๋‹ค.)

CISC์˜ ๋ช…๋ น์ด์˜ ๊ธธ์ด๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š์€ ์ด์œ ๋Š” ๊ฐ๊ฐ์˜ ๋ช…๋ น์–ด๊ฐ€ ํ”„๋กœ์„ธ์‹ฑ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋„ ๋ก ์„ค๊ณ„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ช…๋ น์–ด์˜ ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๊ณ  ํ•˜๋”๋ผ๊ณ  ์‹ค์ œ๋กœ๋Š” ์“ฐ์ด๋Š” ๋ช…๋ น์–ด๋“ค๋งŒ ์ฃผ๋กœ ์“ฐ์ด๊ณ  ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ํŒŒ์ดํ”„๋ผ์ด๋‹์ด ๋ถˆ๋ฆฌํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ๋˜ํ•œ ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์€ ์ „๋ ฅ์„ ์†Œ๋ชจํ•œ๋‹ค.

 

ํŠน์ง•

1. ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด๋“ค์ด ์žˆ๋‹ค.

2. ์ƒ๋Œ€์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒŒ ์†Œ๋น„ํ•œ๋‹ค.

4. ๊ฐ€๋ณ€ ๊ธธ์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

5. ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ํด๋Ÿญ ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

6. ๋‹ค์–‘ํ•œ ์ฃผ์†Œ ์ง€์ • ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

7. ์ปดํŒŒ์ผ ๊ณผ์ •์ด ์‰ฝ๊ณ  ํ˜ธํ•œ์„ฑ์ด ์ข‹๋‹ค.

 

๋‹จ์ 

1. ๋ช…๋ น์–ด ์‹คํ–‰ ์‹œ๊ฐ„์ด ํŒŒ์ดํ”„๋ผ์ธ์„ ๋งŒ๋“ค๊ธฐ์— ๋ถˆ๋ฆฌํ•˜๋‹ค.

2. ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์€ ์ „๋ ฅ์„ ์†Œ๋น„ํ•œ๋‹ค.

 

RISC๋ž€?

RISC(Reduced Instruction Set Computer)๋ž€ ์ถ•์†Œ๋œ ๋ช…๋ น์–ด์˜ ์ง‘ํ•ฉ์ด๋‹ค.

CISC์™€๋Š” ์—ฌ๋Ÿฌ ์ฐจ์ด์ ์ด ์žˆ๋Š”๋ฐ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ช…๋ น์–ด์˜ ์ˆ˜๊ฐ€ 100๊ฐœ ๋ฏธ๋งŒ์œผ๋กœ ์ค„์–ด๋“ค์—ˆ๋‹ค. ์ธ์‹ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์–ด์˜ ์ˆ˜๋ฅผ ์ค„์ž„์œผ๋กœ์จ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ ์‹œํ‚ค๋Š”๋ฐ ๋” ๋งŽ์€ ๋ช…๋ น์–ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

RISC๋Š” ์‹ ์†ํ•œ ํ”„๋กœ์„ธ์‹ฑ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํŒŒ์ดํ”„๋ผ์ธ ํ”„๋กœ์„ธ์‹ฑ์˜ ์ผํ™˜์œผ๋กœ์„œ ๊ณ ์ •๊ธธ์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ,CISC์™€ ๋‹ฌ๋ฆฌ ํด๋Ÿญ ์ฃผ๊ธฐ๋‹น ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๋‹จ์ผ ์‚ฌ์ดํด์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•จ์œผ๋กœ์จ ๋ช…๋ น์–ด ์‹คํ–‰ ๊ณผ์ •์„ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

ํŠน์ง•

1. ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋Š” ๋ ˆ์ง€์Šคํ„ฐ์—์„œ ์ˆ˜ํ–‰๋˜๋ฉฐ load-store ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์ตœ์†Œํ™”ํ•˜์˜€๋‹ค.

2. ๋‹จ์ˆœํ•œ ๊ณ ์ • ๊ธธ์ด ๋ฐฉ์‹์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

3. ์ ์€ ์ฃผ์†Œ ์ง€์ • ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

๋‹จ์  

1. ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ตœ์ ํ™” ๊ณผ์ •์ด ๋ณต์žกํ•˜๋‹ค.

2. ๋ช…๋ น์–ด๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์–ด์„œ ์ฝ”๋“œ ํšจ์œจ์ด ๋‚ฎ๋‹ค.

3. ํŒŒ์ดํ”„๋ผ์ธ ํ•ด์ €๋“œ์— ๋Œ€ํ•œ ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

๊ฒฐ๋ก 

๋‘˜ ๋‹ค ์žฅ๋‹จ์ ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์–ด์„œ ์–ด๋Š ์ชฝ์ด ์„ฑ๋Šฅ ๋ฉด์—์„œ ์šฐ์„ธํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜๋Š” ์—†๋‹ค. 

๋˜ํ•œ ์˜ค๋Š˜๋‚ ์˜ ๋ช‡๋ช‡ CISC MCU๋Š” RISC์˜ ์žฅ์ ์„ ์ผ ๋ถ€ ๊ณต์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋ช‡๋ช‡ RISC MCU๋Š” CISC์˜ ์žฅ์  ์„ ์ผ๋ถ€ ๊ณต์œ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ž์˜ ์ƒํ™ฉ์— ๋งž๋Š” ์„ ํƒ์ด ํ•„์š”ํ•˜๋‹ค.

์ปค๋„์ด๋ž€?

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

 

๋˜ํ•œ ์ปค๋„์€ ์ž์›์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๊ด€๋ฆฌ์ž๋“ค์ด ์žˆ๋‹ค.

  1. ํ…Œ์ŠคํŠธ ๊ด€๋ฆฌ์ž : ๋ฌผ๋ฆฌ์  ์ž์›์ธ CPU๋ฅผ ์ถ”์ƒ ์ž์›์ธ ํ…Œ์Šคํฌ๋กœ ์ œ๊ณตํ•œ๋‹ค.
  2. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์ž : ๋ฌผ๋ฆฌ์  ์ž์›์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ถ”์ƒ ์ž์›์ธ ํŽ˜์ด์ง€๋‚˜ ์„ธ๊ทธ๋จผํŠธ๋กœ ์ œ๊ณตํ•œ๋‹ค.
  3. ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž : ๋ฌผ๋ฆฌ์  ์ž์›์ธ ๋””์Šคํฌ๋ฅผ ์ถ”์ƒ ์ž์›์ธ ํŒŒ์ผ๋กœ ์ œ๊ณตํ•œ๋‹ค.
  4. ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž : ๋ฌผ๋ฆฌ์  ์ž์›์ธ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๋ฅผ ์ถ”์ƒ ์ž์›์ธ ์†Œ์ผ“์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค.
  5. ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„ ๊ด€๋ฆฌ์ž : ๊ฐ์ข… ์™ธ๋ถ€ ์žฅ์น˜(ํ”„๋ฆฐํ„ฐ, GPU ๋“ฑ)์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ๊ณตํ•œ๋‹ค.

 

์ปค๋„์˜ ๋™์ž‘ ๋ฐฉ์‹

์ปค๋„์€ Memory Resident ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ๋””์Šคํฌ์— ์ƒ์ฃผํ•ด์žˆ๋Š”๋ฐ, ์ปค๋„์€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์—ฌ๋Ÿฌ ๋ช…๋ น๋“ค์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. 

ํ•˜์ง€๋งŒ ์ปค๋„์€ ์‚ฌ์šฉ์ž์˜ ๋ช…๋ น์„ ์ง์ ‘์ ์œผ๋กœ ๋ฐ›์ง€ ์•Š๊ณ  ์‰˜์ด๋ž€ ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด์„œ ๋ช…๋ น์„ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค. ์ฆ‰ ์‰˜์„ ํ†ตํ•ด์„œ ์ปค๋„์—๊ฒŒ ๋ช…๋ น์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

์‰˜์˜ ์—ญํ• 

ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ์–ธ์ œ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ๋˜๊ณ  ํ•ด์ œ๋˜๋Š”์ง€ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ๋“ค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๋ฉฐ ์ปค๋„์˜ ์ค‘๊ฐ„๋‹ค๋ฆฌ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

 

์ถœ์ฒ˜ :&nbsp;https://medium.com/pocs/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%BB%A4%EB%84%90-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B0%95%EC%9D%98%EB%85%B8%ED%8A%B8-1-d36d6c961566

 

์ผ๋ฐ˜์ ์œผ๋กœ ์šด์˜์ฒด์ œ๊ฐ€ ๋ถ€ํŒ…๋˜๋ฉด Memory Residentํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง€๋Š” ์ปค๋„์ด ๋จผ์ € ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ๋‹ค.

๊ทธ ํ›„ ์œ ์ €๊ฐ€ ํ„ฐ๋ฏธ๋„์„ ์‹คํ–‰ํ•˜๋ฉด ์‰˜์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ค๊ณ  ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ์ปค๋งจ๋“œ์— ๋งž๋Š” ์žก(job)์„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค.

์ด๋Ÿฐ ๊ณผ์ •์œผ๋กœ ์œ ์ €๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋‚ด๋ถ€์ ์ธ ๊ตฌ์กฐ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์€ ์‹ ๊ฒฝ์จ์•ผ ํ•  ์ ์ด ํ•˜๋‚˜ ์žˆ๋‹ค. ๋ฐ”๋กœ ๋ฉ€ํ‹ฐ์œ ์ € ์‹œ์Šคํ…œ์ด๋ผ๋Š” ์ ์ด๋‹ค.

์œˆ๋„์šฐ๋Š” ๊ฐœ์ธpc์šฉ ์šด์˜์ฒด์ œ์—ฌ์„œ ๋ณด์•ˆ์— ๋Œ€ํ•œ ๋ถ€๋‹ด์ด ๋ฆฌ๋ˆ…์Šค์— ๋น„ํ•ด ์ ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ด์šฉํ•˜๋Š” ๋ฆฌ๋ˆ…์Šค๋Š” ๋ณด์•ˆ์„ ํŠน๋ณ„ํžˆ ๋” ์‹ ๊ฒฝ์จ์•ผํ•œ๋‹ค.

๋งŒ์•ฝ ์œ ์ €A๊ฐ€ ์œ ์ €B์˜ ํŒŒ์ผ์— ๋ง˜๋Œ€๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ด๋–จ๊นŒ? ์ด๋Š” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋”ฐ๋ผ์„œ ์šด์˜์ฒด์ œ๋Š” ์ปค๋„๋ชจ๋“œ์™€ ์œ ์ €๋ชจ๋“œ๋ฅผ ๋‚˜๋ˆ„์–ด์„œ ์ž…์ถœ๋ ฅ ์ž‘์—… ๊ฐ™์ด ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ์ผ๋“ค์€ ์ปค๋„์—์„œ ๋‹ด๋‹นํ•˜๋„๋ก ํ•˜์˜€๋‹ค.

์ด๋•Œ ์ปค๋„์—๊ฒŒ ํ•ด๋‹น ์ž‘์—…์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์„ ์‹œ์Šคํ…œ ์ฝœ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์œ ์ € ๋ชจ๋“œ์—์„œ ์‹œ์Šคํ…œ ์ฝœ์ด๋‚˜ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด ์ปค๋„ ๋ชจ๋“œ๋กœ ์ง„์ž…ํ•œ๋‹ค.

 

์‹œ์Šคํ…œ ์ฝœ์˜ ์ข…๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ญํ• ๋“ค์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ ๊ด€๋ จ ์ฒ˜๋ฆฌ

ํŒŒ์ผ I/O ๊ด€๋ จ ์ฒ˜๋ฆฌ

์†Œ์ผ“ ๊ด€๋ จ ์ฒ˜๋ฆฌ

๋””๋ฐ”์ด์Šค ๊ด€๋ จ ์ฒ˜๋ฆฌ

ํ”„๋กœ์„ธ์Šค ํ†ต์‹  ๊ด€๋ จ ์ฒ˜๋ฆฌ

 

๋ฌผ๋ก  ๋ชจ๋“  ์ปค๋งจ๋“œ์— ๋Œ€ํ•ด์„œ ์‹œ์Šคํ…œ ์ฝœ์ด ์ปค๋„๋กœ ๋ช…๋ น์„ ์ „๋‹ฌํ•ด์ฃผ๋ฉด ์ด๋Š” ๋ฌด์šฉ์ง€๋ฌผ์ผ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ํ•ด๋‹น ๋ช…๋ น์ด ์ ํ•ฉํ•œ ๋ช…๋ น์ธ์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋น„ํŠธ๋ฅผ CPU์— ๋‘๋Š”๋ฐ, ์ด๋ฅผ mode bit๋ผ๊ณ  ํ•œ๋‹ค. 1์ด๋ฉด ์ปค๋„๋ชจ๋“œ 0์ด๋ฉด ์œ ์ €๋ชจ๋“œ๋ผ๊ณ  ์•Œ๋ ค์ ธ์žˆ๋‹ค.

์ปค๋„๋ชจ๋“œ์—์„œ๋Š” ๋ชจ๋“  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ๋ฐ ์ด๋•Œ I/O ๊ฐ™์€ ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹œ์Šคํ…œ ์ฝœ์˜ ๋ฆฌํ„ด๊ฐ’์œผ๋กœ ํ•ด๋‹น ์ž‘์—…์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์ž‘์—…์ด ์ข…๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ ์œ ์ €๋ชจ๋“œ๋กœ ๋Œ์•„๊ฐ€์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ๋‹ค. ์ด ์ž‘์—…์ด ํ•œ๋ฒˆ๋งŒ ์ง„ํ–‰๋˜๋Š” ๊ฑด ์•„๋‹ˆ๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด์„œ ์ˆ˜์—†์ด ์ปค๋„๋ชจ๋“œ์™€ ์œ ์ €๋ชจ๋“œ๋ฅผ ์™”๋‹ค๊ฐ”๋‹คํ•œ๋‹ค.

 

์ธํ„ฐ๋ŸฝํŠธ๋ž€

์•ž์„œ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์„ ๋•Œ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ง„์ž…ํ•œ๋‹ค๊ณ  ํ•˜์˜€๋‹ค. ์ด ๋•Œ ์ธํ„ฐ๋ŸฝํŠธ๋Š” ๋ฌด์—‡์ด๊ณ  ์™œ ๋ฐœ์ƒํ• ๊นŒ? 

์ธํ„ฐ๋ŸฝํŠธ๋Š” ์‹œ์Šคํ…œ์—์„œ ๋ฐœ์ƒํ•œ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์ด๋ฒคํŠธ ํ˜น์€ ๊ทธ๋Ÿฐ ์ด๋ฒคํŠธ๋“ค์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์•Œ๋ ค์ฃผ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.

์ธํ„ฐ๋ŸฝํŠธ๋“ค์ด ๋ฐœ์ƒํ•˜๋ฉด CPU์—์„œ๋Š” ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ปค๋„ ๋ชจ๋“œ๋กœ ์ง„์ž…ํ•œ๋‹ค.

ํ•˜๋“œ์›จ์–ด ํ˜น์€ ํ”„๋กœ๊ทธ๋žจ์ด ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ์— ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์„ธํŒ…ํ•˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋•Œ ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ๋ฅผ ํ†ตํ•ด ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์„ ์‹คํ–‰ํ•ด์„œ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ

์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด(ํ•ธ๋“ค๋Ÿฌ)์˜ ์ฃผ์†Œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ”

์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด

์‹ค์ œ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฃจํ‹ด

 

์ฐธ๊ณ ๋กœ ํ”„๋กœ๊ทธ๋žจ ๋ ˆ๋ฒจ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋Š” ํŠธ๋žฉ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ณด๋‹ค ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.

 

์™ธ๋ถ€ ์ธํ„ฐ๋ŸฝํŠธ

์ „์›์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ

I/O ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ

ํƒ€์ด๋จธ ์‹œ๊ฐ„์ด ๋๋‚ฌ์„ ๋•Œ

 

๋‚ด๋ถ€ ์ธํ„ฐ๋ŸฝํŠธ

0์œผ๋กœ ๋‚˜๋ˆด์„ ๋•Œ

์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ ‘๊ทผ์„ ์‹œ๋„ํ•  ๋•Œ

 

์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ

ํ”„๋กœ๊ทธ๋žจ ์ฒ˜๋ฆฌ ์ค‘ ๋ช…๋ น์˜ ์š”์ฒญ์— ์˜ํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ SVC์— ์˜ํ•œ call์ด ์žˆ๋‹ค.

 

์ธํ„ฐ๋ŸฝํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.

  1. ์ „์› ์ด์ƒ(Power fail)
  2. ๊ธฐ๊ณ„ ์ฐฉ์˜ค(Machine Check)
  3. ์™ธ๋ถ€ ์‹ ํ˜ธ(External)
  4. ์ž…์ถœ๋ ฅ(I/O)
  5. ๋ช…๋ น์–ด ์ž˜๋ชป
  6. ํ”„๋กœ๊ทธ๋žจ ๊ฒ€์‚ฌ(Program Check)
  7. SVC(SuperVisor Call)

 

์‹œ์Šคํ…œ ์ฝœ & ์ธํ„ฐ๋ŸฝํŠธ์˜ ๋™์ž‘ ๊ณผ์ •(์˜ˆ์‹œ)

์‹ฑ๊ธ€ ์ฝ”์–ด ํ™˜๊ฒฝ์—์„œ ์“ฐ๋ ˆ๋“œ1(t1)๊ณผ ์“ฐ๋ ˆ๋“œ2(t2)๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

 

t1์—์„œ file read ์š”์ฒญ์ด ๋“ค์–ด์™”๋‹ค.

์ด๋•Œ file read์— ํ•ด๋‹นํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์ด ํ˜ธ์ถœ๋˜๋ฉฐ ๊ธฐ์กด t1์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ปค๋„ ๋ชจ๋“œ๋กœ ์ง„์ž…ํ•œ๋‹ค.

์ปค๋„๋ชจ๋“œ์— ์ง„์ž…ํ•œ t1์€ ํ•ด๋‹น file์ด read ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๊ฐ€ ๋ ๋•Œ๊นŒ์ง€ waiting ํ•˜๊ฒŒ ๋˜๋ฉฐ ๋‹ค์‹œ ์œ ์ € ๋ชจ๋“œ๋กœ ์ง„์ž… ํ›„ t2๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ๋œ๋‹ค.

 

t1์—์„œ ์š”์ฒญํ•œ file์ด read ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค.

์ด๋•Œ๋Š” ์•„๊นŒ์™€ ๋‹ค๋ฅด๊ฒŒ ์‹œ์Šคํ…œ ์ฝœ์ด ์•„๋‹Œ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค. ๋‹ค์‹œ CPU๋Š” t2์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  t1์„ waiting์—์„œ ready(runnable)๋กœ ์ƒํƒœ๋ฅผ ๋ฐ”๊พผ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์œ ์ €๋ชจ๋“œ๋กœ ์ง„์ž… ํ›„์— t2๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

 

๋ชจ์ข…์˜ ์ด์œ ๋กœ t2์˜ CPU ์ ์œ ๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ์ผ์ด ์ƒ๊ธธ ๊ฒƒ์ด๋‹ค.

CPU๋Š” ๋‹ค์‹œ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ง„์ž… ํ›„์— t2๋ฅผ ready ์ƒํƒœ๋กœ ๋ฐ”๊พผ๋‹ค. ์ด์ œ๋Š” t1์„ ์‹คํ–‰ ์ƒํƒœ๋กœ ๋ฐ”๊พธ๊ณ  ์ž‘์—…๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๋Š” ์ง์ ‘์ ์œผ๋กœ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•  ์ผ์ด ์—†๋Š”๋ฐ ์ด๋Š” ํ•˜์ด(high) ๋ ˆ๋ฒจ ์–ธ์–ด๊ฐ€ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ž˜ํ•‘(wrapping)์„ ํ†ตํ•ด ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ์Šค๋ ˆ๋“œ๋ฅผ start ํ•  ๋•Œ native ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด์„œ JNI(Java Native Interface)๊ฐ€ ํ•ด๋‹น ์šด์˜์ฒด์ œ์— ๋งž๋Š” ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•ด์ค€๋‹ค.

private native void start0();

 

 

0. ๋งŒ์•ฝ ์ธ๋ฑ์Šค๊ฐ€ ์—†์—ˆ๋‹ค๋ฉด

 

์ธ๋ฑ์Šค ์—†์ด ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ํƒ์ƒ‰์„ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

num์˜ ๊ฐ’์ด 27์ธ ํ–‰์„ ์ฐพ๋Š” ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ ์ธ๋ฑ์Šค๊ฐ€ ์—†๋‹ค๋ฉด , ์ •๋ ฌ ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฐพ์•„์•ผํ•œ๋‹ค.

์ด๋Ÿด ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฐ’์„ ํƒ์ƒ‰ํ•˜๋Š” ํ’€ ์Šค์บ”์„ ํ•ด์•ผํ•  ์ˆ˜๋„์žˆ๋‹ค.

์ด๋Š” ๋งค์šฐ ๋น„ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์–ด๋–ค ํ˜„์ƒ์ด ์ผ์–ด๋‚˜๋Š” ์ง€ ์•Œ์•„๋ณด์•˜์œผ๋‹ˆ, ๊ทธ๋Ÿผ ์ด์ œ ์ธ๋ฑ์Šค๊ฐ€ ์ ์šฉ ๋œ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด์ž

 

 

์ฒ˜์Œ ์˜ˆ์‹œ์™€์˜ ์ฐจ์ด์ ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๊ณ  ๋ฌด์ž‘์ • ์ฒ˜์Œ๋ถ€ํ„ฐ ์กฐํšŒํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ด ๊ฒฝ์šฐ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋“ค๋กœ๋ถ€ํ„ฐ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

์ด์ œ ์šฐ๋ฆฌ๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค.

๋ฐ”๋กœ ์ด ์ธ๋ฑ์Šค๊ฐ€ ์˜ค๋Š˜ ๋ฐฐ์›Œ๋ณผ ์ฃผ์ œ์ด๋‹ค.

์–ด๋–ป๊ฒŒ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ํšจ์œจ์ ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ์ง€ ์•Œ์•„๋ณด์ž

 

1. ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

 

ํ…Œ์ด๋ธ”์˜ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ๋†’์—ฌ์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

์ธ๋ฑ์Šค๋ฅผ ์“ฐ๊ฒŒ ๋˜๋ฉด ์ถ”๊ฐ€์ ์ธ ์“ฐ๊ธฐ ์ž‘์—…๊ณผ ์ €์žฅ ๊ณต๊ฐ„์„ ํ™œ์šฉํ•˜๋ฏ€๋กœ ํƒ์ƒ‰ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์‹œ๋ฅผ ํฌํ•จํ•ด์„œ ์ง€๊ธˆ๊นŒ์ง€์˜ ์„ค๋ช…์œผ๋กœ ์ธ๋ฑ์Šค์˜ ํŠน์ง•์„ ์ •๋ฆฌํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • ์ธ๋ฑ์Šค์˜ ๋ฐ์ดํ„ฐ๋Š” ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค.
  • ์ธ๋ฑ์Šค๋Š” ์ถ”๊ฐ€์ ์ธ ์ €์žฅ ๊ณต๊ฐ„์„ ํ•„์š”๋กœ ํ•œ๋‹ค.
  • ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ๋“ค์–ด๋„ ์ธ๋ฑ์Šค๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ค ์žฅ์ ์ด ์žˆ๋Š” ์ง€ ๋Œ€๋žต ํŒŒ์•…๋˜์—ˆ์„ ๊ฒƒ์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ชฝ์œผ๋กœ ์ข€ ๋” ๋“ค์–ด๊ฐ€์„œ ๊ตฌ์ฒด์ ์œผ๋กœ ์™œ ํ•„์š”ํ•œ ์ง€ ์•Œ์•„๋ณด์ž

 

2. ์ธ๋ฑ์Šค์˜ ๋™์ž‘ ๋ฐฉ์‹

mySQL์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์™€์žˆ๋‹ค.

Indexes are used to find rows with specific column values quickly. Without an index, MySQL must begin with the first row and then read through the entire table to find the relevant rows.

 

ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ์š”์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ—ค
  2. ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ฃนํ•‘ ํ•˜๊ธฐ ์œ„ํ•ด

์˜ˆ๋ฅผ ๋“ค์–ด,

SELECT * FROM team WHERE name = ‘sehan’;

DELETE FROM logs WHERE datetime < ‘2023-06-16’;

UPDATE employee SET salary = salary * 1.5 WHERE id = 100;

SELECT * FROM team T JOIN department D ON [T.id](<http://T.id>) = D.id;

 

๊ฐ๊ฐ์˜ ์ฟผ๋ฆฌ์—๋Š” ์กฐ๊ฑด๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ•ด๋‹น ์ฟผ๋ฆฌ๋“ค์ด ์‹คํ–‰๋˜๋ฉด ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ฐพ์•„์•ผํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๊ฐ„์ด๋‚˜ ๋์— ์žˆ๋‹ค๋ฉด ํ’€์Šค์บ”์„ ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ๋œ๋‹ค.

 

์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ธ๋ฑ์Šค๋Š” ๋ณ„๋„์˜ ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์ž‘์—…์„ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ด๋ธ” ํƒ์ƒ‰ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œ์ผœ์ค€๋‹ค.

์ฆ‰ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ, ์กฐ๊ฑด๋“ค์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒƒ์ด ์ธ๋ฑ์Šค์ด๋‹ค.

๋˜ํ•œ ์ธ๋ฑ์Šค๋Š” ์กฐ์ธ์„ ํ•  ๋•Œ ์กฐ์ธ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค.

๋ฌด์กฐ๊ฑด Select ์—์„œ๋งŒ ํ•„์š”ํ•œ ๊ฒƒ์ด ์•„๋‹Œ ์กฐ๊ฑด ํƒ์ƒ‰์„ ์œ„ํ•ด์„œ๋“  ๋‹จ์ˆœ ๋ฐ์ดํ„ฐ ํƒ์ƒ‰์„ ์œ„ํ•ด์„œ๋“  ์ธ๋ฑ์Šค๋Š” ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

 

3. ์ธ๋ฑ์Šค์˜ ์ข…๋ฅ˜

๊ทธ๋ ‡๋‹ค๋ฉด ์ธ๋ฑ์Šค๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ?

 

์ธ๋ฑ์Šค์˜ ์ž๋ฃŒ๊ตฌ์กฐ

์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ , ๋Œ€ํ‘œ์ ์œผ๋กœ B-tree ์™€ B+tree ๊ฐ€ ์žˆ๋‹ค.

๋งˆ์ง€๋ง‰์—” ์ถ”๊ฐ€๋กœ ํ•ด์‹œ์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

B-tree,B+tree ์—์„œ ‘B’์˜ ์˜๋ฏธ๋Š” ์ •ํ™•ํžˆ ๋ฐํ˜€์ง„ ๋ฐ”๋Š” ์—†์ง€๋งŒ ๊ท ํ˜•์„ ๋งž์ถ˜๋‹ค๋Š” ์˜๋ฏธ์—์„œ Balanced ๋ผ๋Š” ์˜๋ฏธ๋กœ ํ†ตํ•œ๋‹ค.

๊ท ํ˜•์„ ๋งž์ถค์œผ๋กœ์จ ์ข€ ๋” ๋น ๋ฅธ ์ธ๋ฑ์‹ฑ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

 

๋งŒ์•ฝ ์ž์‹๋…ธ๋“œ๋“ค์ด Balanced ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

ํŠธ๋ฆฌ๊ฐ€ ํŽธํ–ฅ๋˜์–ด ์žˆ๋Š” BST(์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ)๋ชจ์Šต์„ ์ƒ์ƒํ•ด๋ณด์ž

 

BST๋Š” ๊ท ํ˜•์„ ๋งž์ถ”์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์€ ๋ชจ์Šต์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค. 

์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋Š” O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ B tree๋Š” ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ๋งž์ถค์œผ๋กœ์จ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์—ฌ์ค€๋‹ค.

 

์ด๋Š” BST๋Š” ์ตœ๋Œ€ 2๊ฐœ์˜ ์ž๋…€ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€์ง€๋งŒ B tree๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž๋…€๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋‹ค.

 

B-Tree

B-tree ๋Š” ํ•ญ์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

๋•Œ๋ฌธ์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋”๋ผ๋„ O(logN)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๋“ค์€ ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์žˆ์œผ๋ฉฐ ๋”ฐ๋ผ์„œ Balanced ๋˜์—ˆ๋‹ค ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

B-tree์˜ ๊ตฌ์„ฑ์„ ์‚ดํŽด๋ณด์ž, ๋…ธ๋“œ๋Š” ํ‚ค๊ฐ’๊ณผ ๋ฆฌํ”„ ๋…ธ๋“œ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

๊ฐ key๋“ค์˜ ์™ผ์ชฝ ์ž์‹๋“ค์€ key๋ณด๋‹ค ์ž‘์€ ๊ฐ’ ,์˜ค๋ฅธ์ชฝ ๊ฐ’์€ key๋ณด๋‹ค ํฐ ๊ฐ’์œผ๋กœ ๋˜์–ด์žˆ๋‹ค.

 

B-tree ๊ตฌ์กฐ์˜ ๋ฐ์ดํ„ฐ ํƒ์ƒ‰ ๊ณผ์ •์„ ์•Œ์•„๋ณด์ž

ํ˜„์žฌ ๋ฐ์ดํ„ฐ์—์„œ ์ •์ˆ˜ 27 ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๋จผ์ € 27์€ 31๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ์™ผ์ชฝ ์ž์‹๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.

๊ทธ ๋‹ค์Œ 11, 29์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ์ค‘๊ฐ„๊ฐ’์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ€์šด๋ฐ์— ์žˆ๋Š” ์ž์‹ ๋…ธ๋“œ๋กœ ํƒ์ƒ‰์„ ํ•˜๊ฒŒ๋˜๊ณ  27์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜๋ฉด์„œ ํƒ์ƒ‰์ด ๋๋‚œ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ท ํ˜• ์žˆ๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ชจ๋“  ๊ฒฝ์šฐ์—์„œ ๋ฒ ์ŠคํŠธ์ธ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

์„ ํ˜• ํƒ์ƒ‰(Full scan)์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

์ด ๊ฒฝ์šฐ ๋’ค์—์„œ ์‚ดํŽด๋ณผ B+tree ๋ผ๋Š” ๊ฒƒ์„ ํ†ตํ•ด์„œ Full scan์‹œ ํšจ์œจ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์‚ฝ์ž…

์‚ฝ์ž…์˜ ๊ฒฝ์šฐ ์กฐํšŒ ๋ฐฉ์‹๊ณผ ํ†ต์ผํ•˜๊ฒŒ Leaf Node๋“ค์„ ํƒ์ƒ‰ํ•˜๊ณ  ๋…ธ๋“œ ์ž๋ฆฌ๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์ž๋ฆฌ์— ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž… , ๊ฝ‰ ์ฐจ ์žˆ๋‹ค๋ฉด ๋…ธ๋“œ๋ฅผ ๋ถ„ํ• ํ•ด์„œ ์‚ฝ์ž…ํ•œ๋‹ค.

์˜ˆ์ œ๋ฅผ ํ†ตํ•ด 13 ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

ํƒ์ƒ‰์˜ ๊ฒฐ๊ณผ, 12์™€ 14 ์‚ฌ์ด์˜ ๊ฐ’์— ๋ฐฐ์ •๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•ด๋‹น Leaf Node๋Š” ๋…ธ๋“œ๊ฐ€ ๊ฝ‰ ์ฐฌ ์ƒํƒœ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ๋ถ€๋ชจ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋ถ€๋ชจ ๋…ธ๋“œ๋„ ๊ฝ‰ ์ฐฌ ์ƒํƒœ๊ฐ€ ๋˜๋ฏ€๋กœ ์ค‘์•™๊ฐ’์ธ 11๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•ด์ค€๋‹ค.

 

๋ถ€๋ชจ ๋…ธ๋“œ์— 11์„ ๋„ฃ์œผ๋‹ˆ ๋˜ ๋…ธ๋“œ๊ฐ€ ๊ฝ‰ ์ฐฌ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‹ค์‹œ ์ค‘์•™๊ฐ’์ธ 11๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•ด์ค€๋‹ค.

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์‚ฝ์ž… ๊ณผ์ •์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค.

 

B-tree์˜ ํŠน์ง•

  1. ๋ชจ๋“  ์ž์‹ ๋“ค์„ ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์กด์žฌํ•œ๋‹ค.
  2. ๋…ธ๋“œ์˜ key์˜ ์ˆ˜๊ฐ€ k๊ฐœ๋ผ๋ฉด, ์ž์‹๋…ธ๋“œ๋Š” k+1 ์ด๋‹ค.
  3. Key๋“ค์€ ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ์ด๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ B- Tree ์— ๋Œ€ํ•œ ์ž‘๋™ ๊ณผ์ •์ด๋‹ค.

์ด์ œ B+ Tree์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

 

B + Tree

 

B- tree์™€์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๋ฆฌํ”„ ๋…ธ๋“œ๋“ค๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

์ด๋Š” Full scan ์‹œ์— ๊ฐ€์žฅ ๋ช…ํ™•ํ•œ ์žฅ์ ์„ ๊ฐ€์ง„๋‹ค.

 

๋‹ค์‹œ B-tree ์˜ Full scan ๊ณผ์ •์„ ์ƒ๊ฐํ•ด๋ณด์ž

B-tree์—์„œ๋Š” Full scan์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ชจ๋“  ๋ธŒ๋žœ์น˜ ๋…ธ๋“œ ๋ฐ ์ž์‹ ๋…ธ๋“œ๋“ค์„ ํƒ์ƒ‰ํ–ˆ์–ด์•ผํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ B+tree์—์„œ์˜ Full scan ์€ ๋‹ค๋ฅด๋‹ค.

๊ทธ ์ด์œ ๋Š” Leaf Node ์—๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๊ณ  ์ด๋“ค์€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋•๋ถ„์— ํ•œ๋ฒˆ์˜ ์„ ํ˜• ํƒ์ƒ‰์œผ๋กœ๋„ Full scan์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

B+tree์˜ ํŠน์ง•

  1. ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„๋‘์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ํ™•๋ณดํ•จ์œผ๋กœ์จ ๋” ๋งŽ์€ key๋“ค์„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ํ’€ ์Šค์บ” ์‹œ, B+tree๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•ด์‹œ

 

 

ํ•ด์‹œ๊ฐ€ ์ธ๋ฑ์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์•Œ๊ธฐ์ „์— ํ•ด์‹œํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ์•Œ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ key๊ฐ’์„ ์ธ์ž๋กœ ํ•˜๋Š” ํ•ด์‹œ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ฆ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

์ด ๊ฒฝ์šฐ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ key๊ฐ’์„ ํ•ด์‹œํ•จ์ˆ˜ ํ•œ๋ฒˆ์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

 

ํ•˜์ง€๋งŒ ํ•ด์‹œ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ธ๋ฑ์Šค์—์„œ ๊ฑฐ์˜ ์“ฐ์ด์ง€ ์•Š๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ๋“ฑํ˜ธ ๋ฐฉ์‹์—๋งŒ ์ตœ์ ํ™” ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ฆ‰ DB ํƒ์ƒ‰ ์‹œ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ”์œ„๊ฒ€์ƒ‰์ด๋‚˜ ์ •๋ ฌ์—๋Š” ์ทจ์•ฝํ•˜๋‹ค.

์ด๋Ÿฌํ•œ ๋‹จ์  ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค์—์„œ๋Š” ๋งŽ์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

์ธ๋ฑ์Šค์˜ ์ข…๋ฅ˜

 

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜์—ฌ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ํ…Œ์ด๋ธ”๋‹น ๋‹จ ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋งŒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด์„œ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์กฐํšŒ ๊ณผ์ •์—์„œ ๋งค์šฐ ๋น ๋ฅธ ์†๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ ์™ธ ์‚ฝ์ž… , ์‚ญ์ œ , ์ˆ˜์ • ๊ฐ™์€ ๊ฒฝ์šฐ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค์˜ ์‚ฌ์šฉ์ด ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

(DML์ด ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ ๋งค๋ฒˆ ์ •๋ ฌ์„ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ)

 

๋”ฐ๋ผ์„œ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋Š” ํ…Œ์ด๋ธ”์˜ ์ˆ˜์ •์ด ๋นˆ๋ฒˆํ•˜์ง€ ์•Š๊ณ  ์กฐํšŒ ์œ„์ฃผ์˜ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ์ข‹์€ ํšจ์œจ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

์‹ค์ƒํ™œ์— ๋น„์œ ํ•ด๋ณด๋ฉด, ์˜์–ด ๋‹จ์–ด ์ฑ…์„ ์˜ˆ์‹œ๋กœ ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์˜์–ด ๋‹จ์–ด ์ฑ…์€ ํ•ญ์ƒ A~Z ๊นŒ์ง€ ์ •๋ ฌ๋˜์žˆ๋Š” ๋ฐ ์ฑ… ์ž์ฒด๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ์ด๊ฒƒ์„ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค !

 

๋…ผํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค

 

์‹ค์ œ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ ์ •๋ ฌํ•˜์ง€ ์•Š๊ณ  ๋ณ„๋„์˜ ๊ณต๊ฐ„์— ์ธ๋ฑ์Šค ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค ํŽ˜์ด์ง€๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค.

 

DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋‹จ์œ„์ด๋‹ค.

ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋Š” 16kb์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

MySQL :: MySQL 8.0 Reference Manual :: 15.11.2 File Space Management

 

MySQL :: MySQL 8.0 Reference Manual :: 15.11.2 File Space Management

15.11.2 File Space Management The data files that you define in the configuration file using the innodb_data_file_path configuration option form the InnoDB system tablespace. The files are logically concatenated to form the system tablespace. There is no

dev.mysql.com

 

๋…ผํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ์˜ ์กฐํšŒ๋ณด๋‹ค ์ˆ˜์ •,์‚ญ์ œ,์‚ฝ์ž… ์‹œ์— ๋” ์ข‹์€ ํšจ์œจ์„ ๊ฐ€์ง„๋‹ค.

์‹ค์ƒํ™œ์— ๋น„์œ ํ•ด๋ณด๋ฉด ,

์ฑ… ์•ž์— ์ƒ‰์ธ(์ธ๋ฑ์Šค)๋ฅผ ๋ณด๊ณ  ํ•ด๋‹น ๋‚ด์šฉ์ด ์žˆ๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด๋‹ค !

๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ์˜ ์กฐํšŒ๋ณด๋‹จ ์ˆ˜์‹œ๋กœ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋Š” ํ…Œ์ด๋ธ”์—์„œ์˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•˜๋‹ค.

4. ์ธ๋ฑ์Šค ๋งŒ๋“œ๋Š” ๋ฒ•

SQL ๋ฌธ์„ ํ†ตํ•ด ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

์ด ์ค‘์—์„œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์“ฐ๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ฅผ ํ†ตํ•œ ์ธ๋ฑ์Šค ์ƒ์„ฑ๋„ ํฌํ•จ๋˜์–ด์žˆ๋‹ค.

์œ„์—์„œ ๋‘๊ฐ€์ง€์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐฐ์› ๋Š”๋ฐ ๊ฐ๊ฐ ์–ด๋–ป๊ฒŒ ๋งŒ๋“œ๋Š” ์ง€๋ฅผ ์•Œ์•„๋ณด์ž

 

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค

  1. ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ
  2. not null + ์œ ๋‹ˆํฌ ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ
ALTER TABLE member ADD CONSTRAINT id PRIMARY KEY(id); → ํด๋Ÿฌ์Šคํ„ฐ๋ง

ALTER TABLE member ADD CONSTRAINT id UNIQUE NOT NULL; → ํด๋Ÿฌ์Šคํ„ฐ๋ง

 

๋…ผ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค

  1. ์œ ๋‹ˆํฌ ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ
  2. ์ง์ ‘ (์œ ๋‹ˆํฌ)์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ
ALTER TABLE member ADD CONSTRAINT name UNIQUE(name); → ๋…ผํด๋Ÿฌ์Šคํ„ฐ๋ง

CREATE INDEX name ON member (name); → ๋…ผํด๋Ÿฌ์Šคํ„ฐ๋ง

์•„๋‹ˆ๋ฉด ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

CREATE TABLE member(
id INT PRIMARY KEY,
name varchar(20) not null,
INDEX name_idx (name)
)

 

์ด์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ DB ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

5. ์ ์ ˆํ•œ ์ธ๋ฑ์Šค ์‚ฌ์šฉ

์ธ๋ฑ์Šค๋ฅผ ์“ฐ๋ฉด ๋น ๋ฅธ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ธ๋ฑ์Šค๊ฐ€ ๊ตณ์ด ํ•„์š”์—†๋Š” ์ƒํ™ฉ์€ ์–ธ์ œ์ผ๊นŒ?

  1. ์ธ๋ฑ์Šค์˜ ๋ฒ”์œ„๊ฐ€ ๋„ˆ๋ฌด ๋„“์€ ๊ฒฝ์šฐ์ด๋‹ค. ๋„“๋‹ค๋Š” ๊ฒƒ์˜ ๊ธฐ์ค€์€ ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ 15%์ด์ƒ์„ ์กฐํšŒํ•ด์•ผํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ ๋ณด๋ฉด ์ ํ•ฉํ•˜๋‹ค.
  2. ์ด ๊ฒฝ์šฐ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ํšจ๊ณผ๊ฐ€ ๋ฏธ๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค์˜ ์‚ฌ์šฉ์„ ์ง€์–‘ํ•œ๋‹ค.
  3. ์กฐํšŒ๋ณด๋‹ค ์‚ฝ์ž…,์‚ญ์ œ ๋“ฑ ์ˆ˜์ • ์ž‘์—…์ด ๋งŽ์„ ๊ฒฝ์šฐ์ด๋‹ค. ์ด ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ธ๋ฑ์Šค๋กœ ์ธํ•œ ํšจ๊ณผ๊ฐ€ ๋ฏธ๋ฏธํ•˜๋‹ค.(์ˆ˜์ • ์ž‘์—… ์‹œ where ๋กœ ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ ์ œ์™ธ)
  4. ๋ฐ์ดํ„ฐ ์ž์ฒด๊ฐ€ ์ ์€ ๊ฒฝ์šฐ๋Š” ๋ฐฐ๋ณด๋‹ค ๋ฐฐ๊ผฝ์ด ๋” ํฐ ์ƒํ™ฉ์ด ์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

6. ์–ธ์ œ ์“ฐ๋ฉด ์ข‹์„๊นŒ?

์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ๋ฑ์Šค๋กœ ํ•˜๋ฉด ํšจ๊ณผ์ ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ์นด๋””๋„ˆ๋ฆฌํ‹ฐ๋ž€ ์‚ฌ์ „์  ์˜๋ฏธ๋กœ ๊ทธ๋ฃน ๋‚ด ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋–ค ๊ฑธ ์˜๋ฏธํ• ๊นŒ?

์ •ํ•ด์ง„ ๋ฐ์ดํ„ฐ ๋‚ด์—์„œ ๊ทธ๋ฃน ๋‚ด ์š”์†Œ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋Š” ๊ฒƒ์€ ์ค‘๋ณต์ด ์ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ค‘๋ณต์ด ์ ๋‹ค๋Š” ๊ฒƒ์€ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ ์‹œ ๋งค์šฐ ์ข‹์€ ํšจ์œจ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์€ ์„ฑ๋ณ„ , ํ•™๋…„์€ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋‚ฎ์œผ๋ฏ€๋กœ(์ค‘๋ณต์ด ๋†’์Œ) ์ธ๋ฑ์Šค์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

๋ฐ˜๋Œ€๋กœ ํ•™๋ฒˆ , ๊ณ ์œ  ID ๋“ฑ์€ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์œผ๋ฏ€๋กœ(์ค‘๋ณต์ด ๋‚ฎ์Œ) ์ธ๋ฑ์Šค ์‚ฌ์šฉ์— ์ ํ•ฉํ•˜๋‹ค.

7. ๊ฒฐ๋ก 

์ธ๋ฑ์Šค์˜ ๋™์ž‘ ๋ฐฉ์‹๊ณผ ์ธ๋ฑ์Šค์˜ ์‚ฌ์šฉ ํšจ๊ณผ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.

์ธ๋ฑ์Šค๋Š” ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ํšจ์œจ์„ ๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒํ™ฉ์— ๋งž์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค ์‚ฌ์šฉ์€ ์˜คํžˆ๋ ค ์—ญํšจ๊ณผ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์ธ ์ง€๋ฅผ ์ž˜ ํŒ๋‹จํ•ด ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.

 

์ฐธ๊ณ  ์ž๋ฃŒ

DB Index ๋™์ž‘์›๋ฆฌ๋ฅผ ์•Œ์•„๋ณด์ž

 

DB Index ๋™์ž‘์›๋ฆฌ๋ฅผ ์•Œ์•„๋ณด์ž

B-Tree๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด๋Š” Index ๋™์ž‘ ์›๋ฆฌ

kyungyeon.dev

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค vs ๋„Œํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค | zinirun

 

ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค vs ๋„Œํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค | zinirun

ํ•™๊ณผ ๊ณต๋ถ€์™€ ์‹œํ—˜์„ ์ค€๋น„ํ•˜๋‹ค๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค์™€ ๋„Œํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๋ฅผ ์ •๋ฆฌํ•ด ๋ณธ๋‹ค. ๊ฐœ๋… ์˜์–ด ์‚ฌ์ „์„ ์ƒ๊ฐํ•ด๋ณด์ž. ๊ธฐ๋ณธ์ ์œผ๋กœ A~Z ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ฑ… ์ž์ฒด๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค. ์ด๊ฑด ํด๋Ÿฌ์Šคํ„ฐ ์ธ

zinirun.github.io

[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ฆผ์œผ๋กœ ์•Œ์•„๋ณด๋Š” B-Tree

 

[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ฆผ์œผ๋กœ ์•Œ์•„๋ณด๋Š” B-Tree

BํŠธ๋ฆฌ๋Š” ์ด์ง„ํŠธ๋ฆฌ์—์„œ ๋ฐœ์ „๋˜์–ด ๋ชจ๋“  ๋ฆฌํ”„๋…ธ๋“œ๋“ค์ด ๊ฐ™์€ ๋ ˆ๋ฒจ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ์ž๋™์œผ๋กœ ๋ฒจ๋Ÿฐ์Šค๋ฅผ ๋งž์ถ”๋Š” ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.

velog.io

 

+ Recent posts