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

Computer Science

[Network] L4 ๊ณ„์ธต์˜ TCP/UDP ๊ทธ๋ฆฌ๊ณ  ์›น์˜ ๊ธฐ์ˆ 

๋ฐ˜์‘ํ˜•

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

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” OSI 7 ๊ณ„์ธต ์ค‘ ์ „์†ก ๊ณ„์ธต์— ํ•ด๋‹นํ•˜๋Š” L4 ๊ณ„์ธต์˜ TCP/UDP์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์›น(Web)์ด๋ผ๋Š” ๊ธฐ์ˆ ์ด ์—ญ์‚ฌ์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋ฐœ์ „ํ•ด์™”๋Š”์ง€ ์‚ดํŽด๋ณด๋ฉด์„œ ํ•ต์‹ฌ ์š”์†Œ๋“ค์„ ์ดํ•ดํ•ด๋ณด์ž.

 

์ปดํ“จํ„ฐ ๊ฐ„์—๋Š” ์–ด๋–ป๊ฒŒ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฑธ๊นŒ?


1. TCP๋Š” ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์ด๋‹ค

TCP๋Š” ๋ฌผ๋ฆฌ์ ์ธ ๊ฒƒ์ด ์•„๋‹Œ ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์ด๋‹ค. ๋ฌผ๋ฆฌ์ ์ธ ์—ฐ๊ฒฐ์€ L2 ์Šค์œ„์น˜์ฒ˜๋Ÿผ ๋ง ๊ทธ๋Œ€๋กœ ์ง„์งœ ๋ฌผ๋ฆฌ์ ์ธ ํšŒ์„ ์„ ๊ฐ€์ง€๊ณ  ์žฅ์น˜ ๊ฐ„์— ์ง„์งœ ์—ฐ๊ฒฐ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ TCP๋Š” ์ด๋Ÿฌํ•œ ๋ฌผ๋ฆฌ์  ์—ฐ๊ฒฐ์ด ์•„๋‹Œ ๋งˆ์น˜ ๊ฐ€์ƒํ™”๋œ ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ์„œ '์—ฐ๊ฒฐ'์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์˜์–ด๋กœ ํ•˜๋ฉด Connection ์ด๋ผ๊ณ ๋„ ํ•˜๊ณ  Session์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฐ๊ฒฐ์€ ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ˆœ์„œ๋ฒˆํ˜ธ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ด์ „ ํฌ์ŠคํŒ…์—์„œ ์ž ์‹œ ์‚ดํŽด๋ณด์•˜๋˜ TCP/IP ์†ก,์ˆ˜์‹  ๊ตฌ์กฐ ๊ทธ๋ฆผ์˜ ์ผ๋ถ€๋ถ„์„ ์‚ดํŽด๋ณด์ž.

 

๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋ฅผ ์ชผ๊ฐœ์–ด Segment๋กœ ๋ถ„ํ•  ํ•˜์—ฌ ์†ก/์ˆ˜์‹ ์„ ํ•œ๋‹ค

 

๋ถ„ํ™์ƒ‰ ์ ์„  ๋„ค๋ชจ์นธ์œผ๋กœ ํ‘œ์‹œ๋œ ๋ถ€๋ถ„์„ ์ฃผ๋ชฉํ•ด๋ณด์ž. TCP/IP ์†ก,์ˆ˜์‹  ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ Segment๋ผ๋Š” ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์ ธ์„œ ์ „๋‹ฌ๋˜๊ณ , ์ˆ˜์‹ ์ธก์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜ ๋ฐ›์œผ๋ฉด ์†ก์‹  ์ธก์œผ๋กœ ์ž˜ ๋ฐ›์•˜๋‹ค๊ณ  ๋‚ด์šฉ์„ ์ „๋‹ฌํ•ด์ค„ ๋•Œ Segment ๋ฒˆํ˜ธ๋ฅผ ์ „๋‹ฌํ•ด์ค€๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ด ๋ง์€ Segment์— ์ผ์ข…์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™ํ˜€์ ธ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๊ณ  ์ด๊ฒƒ์ด ๊ณง TCP ์—ฐ๊ฒฐ์˜ ์ˆœ์„œ๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ˆœ์„œ ๋ฒˆํ˜ธ๊ฐ€ 1,2,3,4 ์”ฉ ์ฆ๊ฐ€ํ•ด์„œ ๋ถ™๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ  ์ˆœ์„œ ๋ฒˆํ˜ธ๋Š” Segment์˜ ๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰ ๋ฐ”์ดํŠธ ์ˆ˜๋งŒํผ ์ฆ๊ฐ€ํ•œ๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  TCP๋„ '์—ฐ๊ฒฐ'์ด๋ผ๊ณ  ํ•œ ์ ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์€ ๋ฐ”๋กœ ์ƒํƒœ ์ „์ด ๊ฐœ๋…์„ ๋™๋ฐ˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑ๋˜๋Š” TCP ์—ฐ๊ฒฐ ๊ณผ์ •์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

 

TCP ์—ฐ๊ฒฐ์‹œ, ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์ˆœ์„œ ๊ณผ์ •

(์œ„ ๊ทธ๋ฆผ์—์„œ '๋ฐ์ดํ„ฐ ์ˆ˜์‹  ์ธก' ๊ณผ '๋ฐ์ดํ„ฐ ์†ก์‹  ์ธก' ๊ฐ„์˜ ์œ„์น˜๊ฐ€ ์„œ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค๋Š” ์  ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค)

 

๊ฐ€์žฅ ๋จผ์ € ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๋‘˜๋‹ค ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ์œ„ํ•œ ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๊ณ  ๊ฐœ๋ฐฉํ•œ๋‹ค. ์ด ๋•Œ ์„œ๋ฒ„ ์ธก์€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›๋Š” ์—ญํ• ์ด๋ฏ€๋กœ ๋Œ€๊ธฐ ์ƒํƒœ(Listen)์— ๋Œ์ž…ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚œ ํ›„, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์ปค๋„๋“ค ๋ชจ๋‘ ๊ฐ๊ฐ ํ†ต์‹  ์‹œ ์‹๋ณ„์ž์ธ ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ผ์šฐํ„ฐ์™€ ์ธํ„ฐ๋„ท ์žฅ์น˜๋“ค์„ ํ†ตํ•ด ํ†ต์‹ ์„ ํ•˜๋Š” ์ˆœ์„œ์ด๋‹ค.

 

๋‹ค์Œ์œผ๋กœ ์‚ดํŽด๋ณผ ๊ฒƒ์€ TCP ์—ฐ๊ฒฐ ์ž์ฒด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณผ์ •์ธ 3-way handshaking ๊ณผ์ •์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ์—ฌ๊ธฐ์„œ '์—ฐ๊ฒฐ ์ž์ฒด๋ฅผ ์ˆ˜ํ–‰'ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ง ๊ทธ๋Œ€๋กœ TCP ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋ผ์„œ ์ด ๊ณผ์ • ์ค‘์— ๋ฐ์ดํ„ฐ(ํŽ˜์ด๋กœ๋“œ)๊ฐ€ ์ „์†ก๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” TCP ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ๋งŒ๋“  ์ดํ›„์— ์ˆ˜ํ–‰๋œ๋‹ค๊ณ  ํ•œ๋‹ค(์งˆ๋ฌธ/๋‹ต๋ณ€)

 

TCP ์—ฐ๊ฒฐ ์‹œ ์ˆ˜ํ–‰ํ•˜๋Š” 3-way handshaking ๊ณผ์ •

 

๊ฐ€์žฅ ๋จผ์ € ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„ ๋ชจ๋‘ Sequence Number ๋ผ๋Š” ๊ฒƒ์„ ์ƒ์„ฑํ•œ๋‹ค. ์ด ์ˆซ์ž๋Š” ๋žœ๋ค์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค. ์ตœ์ดˆ๋กœ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ ์ชฝ์œผ๋กœ SYN(synchronization) ์ด๋ผ๋Š” ๋ฉ”์„ธ์ง€์™€ ์‹œํ€€์Šค ๋„˜๋ฒ„๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ธ๋‹ค(์ด ๋•Œ ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ๋Š” SYN_SENT). ๊ทธ ๋•Œ ๋™์‹œ์— ์„œ๋ฒ„๋Š” ๋Œ€๊ธฐ ์ƒํƒœ์ธ LISTEN ์ƒํƒœ์— ์žˆ๋‹ค๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ณด๋‚ธ SYN ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์œผ๋ฉด SYN_RCVD ์ƒํƒœ๋กœ ๋ณ€ํ•œ๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ›์•˜๋˜ ๋ฉ”์„ธ์ง€๋ฅผ ์ž˜ ์ˆ˜์‹ ํ–ˆ๋‹ค๋Š” ACK(acknowledgement)์ด๋ผ๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋Š”๋ฐ, ์ด ๋•Œ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ณด๋‚ธ ์‹œํ€€์Šค ๋„˜๋ฒ„์— ์ˆซ์ž 1์„ ๋”ํ•ด์„œ ๋ณด๋‚ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„ ์ธก์—์„œ๋„ ํด๋ผ์ด์–ธํŠธ์™€ ์—ฐ๊ฒฐ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด SYN ๋ฉ”์„ธ์ง€์™€ ์„œ๋ฒ„ ์ชฝ์—์„œ ์ƒ์„ฑํ•œ ์‹œํ€€์Šค ๋„˜๋ฒ„(4000)์„ ํ•จ๊ป˜ ๋ณด๋‚ธ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ์„œ๋ฒ„์˜ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ๋“œ๋””์–ด ์„œ๋ฒ„์™€ TCP ์—ฐ๊ฒฐ์ด ๋˜์—ˆ๋‹ค๋Š” ์ƒํƒœ์ธ ESTABLISHED๊ฐ€ ๋˜๊ณ , ์ด ์—ฐ๊ฒฐ์ด ๋˜์—ˆ๋‹ค๋Š” ์ƒํƒœ๋ฅผ ์ธ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„ ์ธก์œผ๋กœ ๋‹ค์‹œ ACK ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค. ์ด ๋•Œ ์„œ๋ฒ„ ์ชฝ์—์„œ ๋ณด๋‚ธ ์‹œํ€€์Šค ๋„˜๋ฒ„ 4000์— 1์„ ๋”ํ•œ ๊ฐ’๋„ ๊ฐ™์ด ํ•จ๊ป˜ ๋„ฃ์–ด ๋ณด๋‚ธ๋‹ค. 

 

ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๋ณด๋‚ธ ACK ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์€ ์„œ๋ฒ„์ชฝ์€ ๊ทธ์ œ์„œ์•ผ ๋“œ๋””์–ด ํด๋ผ์ด์–ธํŠธ์™€ TCP ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ESTABLISHED ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•œ๊ฐ€์ง€ ์ฃผ๋ชฉํ•  ์ ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ๊ฐ TCP ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ์‹œ์ ์˜ ์ฐจ์ด๊ฐ€ ์•ฝ๊ฐ„ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ ๋ง์ด๋‹ค. ๊ทธ๋ž˜์„œ ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„ ๊ฐ„์˜ TCP ์—ฐ๊ฒฐ์€ ๋™์‹œ์— ๋œ๋‹ค๊ธฐ ๋ณด๋‹ค๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋จผ์ € ์—ฐ๊ฒฐ ์ƒํƒœ๊ฐ€ ๋˜๊ณ  ์•ฝ๊ฐ„ ์‹œ๊ฐ„์ด ํ๋ฅธ ๋’ค ์„œ๋ฒ„์˜ ์—ฐ๊ฒฐ ์ƒํƒœ๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค.

 

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ TCP ์—ฐ๊ฒฐ ์™„๋ฃŒ ์ƒํƒœ๊ฐ€ ๋˜๋Š” ์ง€์ ์—๋Š” ์•ฝ๊ฐ„ ์‹œ๊ฐ„ ์ฐจ์ด๊ฐ€ ์กด์žฌ

 

์œ„ ๊ณผ์ •์—์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ์•Œ์•„๋‘˜ ์ ์ด ์žˆ๋‹ค. ์œ„์™€ ๊ฐ™์ด TCP ์—ฐ๊ฒฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” 3-way handshaking ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ฃผ๊ณ ๋ฐ›๋Š” ์ •๋ณด๋“ค์— ๋Œ€ํ•œ ๊ฒƒ์ด๋‹ค.

 

๋จผ์ € Segment ๋ผ๋Š” ๊ฒƒ์„ ์ฃผ๊ณ  ๋ฐ›๋Š”๋ฐ, ๋ฐ”๋กœ L4 ๊ณ„์ธต์—์„œ์˜ ๋ฐ์ดํ„ฐ ์œ ํ†ต ๋‹จ์œ„์ธ Segment์™€ ๋™์ผํ•˜๋‹ค. ํ•˜์ง€๋งŒ TCP ์—ฐ๊ฒฐ ๊ณผ์ •์—์„œ ํ๋ฅด๋Š” Segment๋Š” ์‚ฌ์‹ค ์‹ค์งˆ์ ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ธฐ๋Š” ํŽ˜์ด๋กœ๋“œ ๋ถ€๋ถ„์€ ์—†๊ณ  TCP/IP ํ—ค๋” ๋ถ€๋ถ„๋งŒ ์กด์žฌํ•œ๋‹ค. ์ฆ‰, ์ด ๋•Œ ํ๋ฅด๋Š” Segment๋Š” ๋‹จ์ˆœ ๋‚ด์ˆ˜์—ฐ๊ฒฐ์„ ์œ„ํ•œ ๊ด€๋ฆฌ ๋ชฉ์ ์˜ ํŠน์ดํ•œ ์šฉ๋„์˜ ์„ธ๊ทธ๋จผํŠธ์ด๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  TCP ์—ฐ๊ฒฐํ•˜๋Š” ๋™์•ˆ ์ฃผ๊ณ  ๋ฐ›๋Š” ์ •๋ณด๊ฐ€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ, ๊ทธ์ค‘์—์„œ๋„ MSS(Maximum Segment Size)์— ๋Œ€ํ•ด์„œ๋„ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค. ์™œ ์ด๊ฒƒ์„ ์ฃผ๊ณ  ๋ฐ›์„๊นŒ? ๋งŒ์•ฝ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„ค์ •๋œ MSS๊ฐ€ 1.5KB ์ด๊ณ  ์„œ๋ฒ„์—์„œ ์„ค์ •๋œ MSS๊ฐ€ 1.3KB ๋ผ๋ฉด ํด๋ผ์ด์–ธํŠธ์—์„œ 1.5KB ์šฉ๋Ÿ‰์˜ Segment๋ฅผ ์ „์†กํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋Š” ์ž‘์€ MSS์— ๋งž์ถ”์–ด์•ผ ํ•œ๋‹ค. ๋ฌผ๋ก  ์ž‘์€ MSS์— ๋งž์ถ”๊ฒŒ ๋˜๋ฉด ์ „์†ก ํšจ์œจ์ด ๋–จ์–ด์ง€๋Š” ๊ฒƒ์€ ๊ฐ์•ˆํ•ด์•ผ ํ•œ๋‹ค.(๊ฐœ์ธ์ ์œผ๋กœ ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ํด๋ผ์ด์–ธํŠธ์—์„œ์˜ MSS๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ์••์ถ•ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Segment์— ๋‹ด๊ฒจ์ ธ ์žˆ๋Š” ํ—ค๋” ์ •๋ณด์—์„œ ๋ฐ์ดํ„ฐ ์†์‹ค์ด ์ผ์–ด๋‚˜๋Š” ๊ฒŒ ์•„๋‹Œ๊ฐ€ ํ–ˆ๋Š”๋ฐ, ๋ฐ์ดํ„ฐ ์†์‹ค๊นŒ์ง€๋Š” ์•„๋‹ˆ๋ผ๊ณ  ํ•œ๋‹ค. ์งˆ๋ฌธ/๋‹ต๋ณ€)

 

๋‹ค์Œ์œผ๋กœ ์•Œ์•„๋ณผ ๋‚ด์šฉ์€ ์ด์ œ TCP ์—ฐ๊ฒฐ์„ ํ–ˆ์œผ๋‹ˆ, ์ข…๋ฃŒํ•˜๋Š” ๊ณผ์ •์ธ 4-way handshaking ๊ณผ์ •์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ์—ฐ๊ฒฐํ•  ๋•Œ๋Š” 3๊ฐ€์ง€ ๋™์ž‘์ด์˜€๋Š”๋ฐ, 1๊ฐ€์ง€๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด์ž.

 

TCP ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์‹œ ์ˆ˜ํ–‰ํ•˜๋Š” 4-way handshaking ๊ณผ์ •

 

TCP ์—ฐ๊ฒฐ ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ข…๋ฃŒ ์‹œ์—๋„ ๋จผ์ € ์š”์ฒญ์„ ํ•˜๋Š” ์ฃผ์ฒด๋Š” ์ฃผ๋กœ ํด๋ผ์ด์–ธํŠธ์ด๋‹ค. ์ตœ์ดˆ์—๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๋ชจ๋‘ ์—ฐ๊ฒฐ ์ƒํƒœ(ESTABLISHED)์ผ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„ ์ชฝ์œผ๋กœ FIN(finish)๊ณผ ACK ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค. ์„œ๋ฒ„๋Š” ํ•ด๋‹น ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›๊ณ  (ํด๋ผ์ด์–ธํŠธ๊ฐ€) ๋Š์ž๊ณ  ํ•œ ์š”์ฒญ์„ ๋ฐ›๋Š” ์ƒํƒœ์ธ CLOSE_WAIT๊ฐ€ ๋œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์„œ๋ฒ„ ์ชฝ์œผ๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ์ˆœ๊ฐ„์— ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์ƒํƒœ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” FIN_WAIT 1๋ฒˆ ์ƒํƒœ๋กœ ๋ณ€ํ•˜๊ณ  ์„œ๋ฒ„ ์ธก์—์„œ ACK ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋ฉด ๊ทธ ๋•Œ FIN_WAIT 2๋ฒˆ ์ƒํƒœ๋กœ ์žฌ๋ณ€๊ฒฝ๋œ๋‹ค. 

 

๊ทธ๋Ÿฐ ๋‹ค์Œ TCP ์—ฐ๊ฒฐ ๋•Œ์™€๋Š” ๋‹ฌ๋ฆฌ ์ด๋ฒˆ์—” ์„œ๋ฒ„ ์ธก์—์„œ ์š”์ฒญ์„ ์‹œ์ž‘ํ•œ๋‹ค. ๋ฐฉ๊ธˆ๊นŒ์ง€๋Š” [ํด๋ผ์ด์–ธํŠธ → ์„œ๋ฒ„] ์ชฝ์œผ๋กœ ์—ฐ๊ฒฐ์„ ๋Š์ž๊ณ  ํ•œ ํ†ต์‹ ์ด์˜€๋‹ค๋ฉด ์ง€๊ธˆ์€ ํ•ด๋‹น ์š”์ฒญ์„ ๋ฐ›๊ณ  ์„œ๋ฒ„์ชฝ์—์„œ๋„ [์„œ๋ฒ„ → ํด๋ผ์ด์–ธํŠธ] ์ชฝ์œผ๋กœ ์—ฐ๊ฒฐ์„ ๋Š์ž๊ณ  ํ•˜๋Š” ํ†ต์‹ ๋„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ํ†ต์‹ ์„ ํ•˜๋Š” ์ˆœ๊ฐ„ ์„œ๋ฒ„๋Š” LAST_ACK ๋ผ๋Š” ์ƒํƒœ๋กœ ๋ณ€ํ•˜๊ฒŒ ๋˜๊ณ  ํด๋ผ์ด์–ธํŠธ ์ชฝ์œผ๋กœ FIN, ACK ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค. 

 

์ด๋ฅผ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ์ƒํƒœ๊ฐ€ TIME_WAIT๋กœ ๋ณ€ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด TIME_WAIT ํ‚ค์›Œ๋“œ๋ฅผ ์ž˜ ๊ธฐ์–ตํ•ด๋‘์ž. ํ•ด๋‹น ํ‚ค์›Œ๋“œ์˜ ์ƒํƒœ๋Š” ๋ฐ˜๋“œ์‹œ ์—ฐ๊ฒฐ์„ ๋Š๊ณ ์ž ํ•œ ์ฃผ์ฒด์—์„œ ๋ฐœ์ƒํ•œ๋‹ค. ๋ณดํ†ต์€ ํด๋ผ์ด์–ธํŠธ์ผ ๊ฒƒ์ด๊ณ  ๋งŒ์•ฝ ์„œ๋ฒ„ ์ธก์—์„œ ํ•ด๋‹น ํ‚ค์›Œ๋“œ์˜ ์ƒํƒœ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ์ด๋Š” ๋ญ”๊ฐ€ ํŠน์ˆ˜ํ•œ ์ƒํ™ฉ์ž„์„ ์˜๋ฏธํ•œ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„ ์ธก์œผ๋กœ ACK ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ƒ„์— ๋”ฐ๋ผ ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„ ๋ชจ๋‘ ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์ƒํƒœ์ธ CLOSED ์ƒํƒœ๋กœ ๋ณ€ํ•˜๊ฒŒ ๋œ๋‹ค. ์ดํ›„ TCP ์—ฐ๊ฒฐ ์‹œ ์‚ฌ์šฉํ•œ ์†Œ์ผ“๋“ค์€ ํšŒ์ˆ˜๋œ๋‹ค.(์ฐธ๊ณ ๋กœ ์†Œ์ผ“๋„ ๋ณธ์งˆ์ ์œผ๋กœ ํŒŒ์ผ์˜ ํ˜•ํƒœ์ด๋ฉฐ ์†Œ์ผ“๋„ ์œ ํ•œํ•œ ์ž์›์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ˜๋“œ์‹œ TCP ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋˜๋ฉด ํšŒ์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค)

 

๊ทธ๋ฆฌ๊ณ  UDP์— ๋Œ€ํ•ด์„œ๋Š” ์ž˜ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ, UDP๋Š” ๊ฐ„๋‹จํ•˜๋‹ค. ๋ฐฉ๊ธˆ๊นŒ์ง€ TCP๋Š” ์„œ๋ฒ„ ์ธก์—์„œ์˜ ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด์„œ ๊ณ„์† ๋Œ€๊ธฐํ•˜๊ณ  ํ•˜์ง€๋งŒ UDP๋Š” ์ƒ๋Œ€์˜ ์‘๋‹ต์ด ์˜ค๊ฑด ์•ˆ์˜ค๊ฑด ๊ณ„์† ํ†ต์‹ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. UDP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ๋Š” ๊ฒŒ์ž„ ์„œ๋ฒ„ ์ชฝ์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋งŒ์•ฝ ๊ฒŒ์ž„์„ ์ด์šฉํ•˜๋Š” ์œ ์ €๊ฐ€ 100๋ช…์ธ๋ฐ, ๋‹น์—ฐํžˆ ์ด 100๋ช…์˜ ์œ ์ € ๋ชจ๋‘ ๊ฐ๊ธฐ ๋„คํŠธ์›Œํฌ ์†๋„๊ฐ€ ์ฒœ์ฐจ๋งŒ๋ณ„์ผ ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ์— ์ด๋Ÿด ๋•Œ TCP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•˜๋ฉด 100๋ช… ์ค‘ ๊ฐ€์žฅ ๋Š๋ฆฐ ๋„คํŠธ์›Œํฌ ์†๋„๋ฅผ ๊ฐ–๋Š” ์œ ์ € 1๋ช… ๋•Œ๋ฌธ์— ๋‚˜๋จธ์ง€ 99๋ช…์˜ ๊ฒŒ์ž„ ํ™”๋ฉด์ด ์ •์ง€ํ•ด๋ฒ„๋ฆฌ๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋Ÿด ๋•Œ๋Š” UDP๋ฅผ ์ด์šฉํ•ด์„œ ๋งˆ์น˜ "1๋ช…์˜ ๋Š๋ฆฐ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ฐ–๋Š” ์œ ์ €๋Š” ๋ฒ„๋ฆฌ๋Š”..?" ์…ˆ์ด๋‹ค.

2. www.naver.com ์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฌด์Šจ์ผ์ด ์ผ์–ด๋‚ ๊นŒ? DNS

๋‹ค์Œ์€ DNS์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์ด๋‹ค. DNS๋Š” ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ํŠน์ • ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ์š”์ฒญํ•˜๋ฉด www.naver.com  ์ฒ˜๋Ÿผ IP ์ฃผ์†Œ ๊ฐ’์„ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋จผ์ € ๋„๋ฉ”์ธ ๋„ค์ž„๊ณผ ํ˜ธ์ŠคํŠธ ๋„ค์ž„์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ๋งŒ์•ฝ www.naver.com  ์ด๋ผ๋Š” ๋„๋ฉ”์ธ์ด ์žˆ๋‹ค๋ฉด dot($.$)์œผ๋กœ ๊ตฌ๋ถ„๋œ 3๊ฐœ์˜ ํ‚ค์›Œ๋“œ ๊ฐ„์—๋Š” ์ข…์† ๊ด€๊ณ„๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

 

 

๊ทธ๋Ÿฌ๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์„œ ์œ„์™€ ๊ฐ™์€ ์ข…์† ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š”๊ฑธ๊นŒ? ์ผ๋‹จ www.naver.com  ์—์„œ ๋„๋ฉ”์ธ ๋„ค์ž„๊ณผ ํ˜ธ์ŠคํŠธ ๋„ค์ž„์ด ์–ด๋–ค ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.

 

 

๊ฐ€์žฅ ํ•˜์œ„์— ์†ํ•˜๋Š” www๋Š” ํ˜ธ์ŠคํŠธ ๋„ค์ž„์— ์†ํ•˜๊ณ , ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์ด ๋„๋ฉ”์ธ ๋„ค์ž„์— ์†ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ www.naver.com  ์„ ๋ธŒ๋ผ์šฐ์ €์— ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋ฉด ๋œป์€ ์œ„์™€ ๊ฐ™๋‹ค. ์ด์ œ ์œ„์—์„œ ์‚ดํŽด๋ณธ ์ข…์† ๊ด€๊ณ„๋ฅผ ๋‹ค์‹œ ์ •๋ฆฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

 

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ์šฐ๋ฆฌ๊ฐ€ www.naver.com  ์„ ๋ธŒ๋ผ์šฐ์ €์— ์ž…๋ ฅํ•˜์˜€์„ ๋•Œ ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

www.naver.com์„ ์›น๋ธŒ๋ผ์šฐ์ €์— ์ž…๋ ฅํ–ˆ์„ ๋•Œ ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •

 

๊ทธ๋ฆผ์— ๋ฒˆํ˜ธ๋ฅผ ๋‹ฌ์•„๋†“์•˜๋‹ค. ๋ฒˆํ˜ธ ๋Œ€๋กœ ๊ณผ์ •์ด ์ง„ํ–‰๋œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ถ”๊ฐ€๋กœ ์•Œ์•„๋‘˜ ์ ์ด ์žˆ๋Š”๋ฐ, ์œ ํšจ๊ธฐ๊ฐ„๊ณผ DNS Cache์ด๋‹ค. ๋จผ์ € ์œ ํšจ๊ธฐ๊ฐ„์ด๋ผ๋Š” ๊ฒƒ์€ PC๊ฐ€ DNS ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ IP ์ฃผ์†Œ๋ฅผ ์‘๋‹ต๋ฐ›์„ ๋•Œ ๊ฐ™์ด ์‘๋‹ต๋ฐ›๋Š” ์ •๋ณด์ด๋‹ค. ์ด ์œ ํšจ๊ธฐ๊ฐ„์€ ์•ž์œผ๋กœ $N$ ์‹œ๊ฐ„ ๋™์•ˆ์—๋Š” PC๊ฐ€ DNS์— ์š”์ฒญํ•œ ๋„๋ฉ”์ธ์„ ๋˜ ์š”์ฒญํ•˜๋ฉด DNS ์„œ๋ฒ„๋กœ ์š”์ฒญํ•˜๋Š” ๋ฐ๊นŒ์ง€ ๊ฐ€์ง€ ์•Š๊ณ  ๊ทธ ์ „์— ์‘๋‹ตํ–ˆ๋˜ ๋™์ผํ•œ IP ์ฃผ์†Œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ผ์ข…์˜ ์ œํ•œ ์‹œ๊ฐ„์ด๋‹ค. ๋‹น์—ฐํžˆ ์ด $N$ ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  ๋‚œ ๋’ค์—๋Š” DNS ์„œ๋ฒ„๋กœ ์žฌ์š”์ฒญ์„ ํ•œ๋‹ค.

 

๋‹ค์Œ์€ DNS Cache์ด๋‹ค. ๊ฐœ์ธ PC๋Š” DNS ์„œ๋ฒ„์— ํ•œ ๋ฒˆ ์š”์ฒญ(์งˆ์˜)์„ ํ•˜๋ฉด PC๊ฐ€ RAM์— DNS ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต๋ฐ›์€ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์˜๋ฏธํ•œ๋‹ค.  ์ด๊ฑด ๋ณ„๊ฐœ์ง€๋งŒ ์ฐธ๊ณ ๋กœ ๊ณต์œ ๊ธฐ๊ฐ€ DNS๋กœ ํฌ์›Œ๋”ฉํ•ด์„œ DNS ์—ญํ• ์„ ๋Œ€์ฒดํ•˜๊ธฐ๋„ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  hosts ๋ผ๋Š” ํŒŒ์ผ์— ํŠน์ • ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ IP ์ฃผ์†Œ๊ฐ€ ์ ํ˜€์žˆ๋‹ค๋ฉด ํ•ด๋‹น ๋„๋ฉ”์ธ์œผ๋กœ๋Š” DNS๋กœ ์š”์ฒญํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

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

 

DNS ์„œ๋ฒ„๋„ ๋˜ ๋‹ค๋ฅธ DNS ์„œ๋ฒ„๋กœ ์งˆ์˜(์š”์ฒญ)ํ•œ๋‹ค

 

์šฐ๋ฆฌ์—๊ฒŒ IP ์ฃผ์†Œ๋ฅผ ์‘๋‹ตํ•ด์ค€ DNS ์„œ๋ฒ„๋„ ๋˜ ๋‹ค๋ฅธ DNS ์„œ๋ฒ„๋กœ ์งˆ์˜๋ฅผ ํ•œ๋‹ค. ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์ „์„ธ๊ณ„์— ์•ฝ 13๋Œ€ ๋ฐ–์— ์—†์€ Root DNS์ด๋‹ค. DNS ์„œ๋ฒ„๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๋„๋ฉ”์ธ ๋„ค์ž„ ์ฒด๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์œ„์ฒ˜๋Ÿผ ํŠธ๋ฆฌ ๋ชจ์–‘์„ ํ•˜๊ณ  ์žˆ๋‹ค. Root DNS๋Š” [๋„๋ฉ”์ธ ๋„ค์ž„ → ํ˜ธ์ŠคํŠธ ๋„ค์ž„] ์ˆœ์„œ๋ฅผ ๊ฐ–๋Š” ๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋ฐ, ๋งˆ์น˜ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)์ฒ˜๋Ÿผ ๊ฐ€์žฅ ํ•˜์œ„ ์ˆ˜์ค€์˜ ๋„๋ฉ”์ธ(์—ฌ๊ธฐ์„œ๋Š” naver)์„ ๋‹ด๋‹นํ•˜๋Š” DNS ์„œ๋ฒ„๋“ค์— ๋„๋‹ฌํ•˜๋ฉด ํ•ด๋‹น DNS ์„œ๋ฒ„๋“ค์—์„œ www ๋ผ๋Š” ํ˜ธ์ŠคํŠธ๋ฅผ ์ฐพ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ํ˜ธ์ŠคํŠธ์˜ IP ์ฃผ์†Œ๋ฅผ (์œ„ ๊ทธ๋ฆผ์˜ ๊นŒ๋งŒ์ƒ‰)DNS ์„œ๋ฒ„์— ์‘๋‹ตํ•ด์ฃผ๊ณ , ์šฐ๋ฆฌ PC ๊นŒ์ง€ ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

์‹ค์ œ๋กœ Root DNS ์„œ๋ฒ„๋“ค์ด ์–ด๋””์žˆ๋Š”์ง€ ๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” iana ์›นํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋ฉด ์•Œ ์ˆ˜ ์žˆ๋‹ค.

3. ์›น์˜ ์—ญ์‚ฌ์  ๋ฐœ์ „๊ณผ ํ•ต์‹ฌ ๊ธฐ์ˆ 

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

 

๊ทธ ์ „์— ์•ž์„œ์„œ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

3-1. ์›น(WEB) = HTML + HTTP

HTML์€ Hypertext ๋งˆํฌ๋‹ค์šด ์–ธ์–ด์ด๊ธด ํ•˜์ง€๋งŒ ์–ด์จŒ๊ฑด ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” ๋ฌธ์„œ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  HTTP๋Š” ์ด HTML ๋ฌธ์„œ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ํ”„๋กœํ† ์ฝœ(๊ทœ์น™)์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๋ฌธ์„œ๋“ค์„ ์ฃผ๊ณ ๋ฐ›๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ”„๋ผ ํ™˜๊ฒฝ์ด TCP/IP ์—ฐ๊ฒฐ์ด๋‹ค.

 

HTML ๋ฌธ์„œ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค๊ณ  ํ–ˆ๋‹ค. HTML ๋ฌธ์„œ๋„ ์–ด์จŒ๊ฑด ์›๋ก ์ ์œผ๋กœ๋Š” ํŒŒ์ผ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ํŒŒ์ผ์ด ์ €์žฅ๋œ ์œ„์น˜๋ฅผ Resource Locator ๋ผ๊ณ  ํ•œ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ Resource = File ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐœ๋…์— ์ž…๊ฐํ•ด์„œ ๋“ฑ์žฅํ•˜๋Š” ๊ฐœ๋…๋“ค์ด URL, URI ์ด๋‹ค.

 

์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด URI๋Š” URL์˜ ์ƒ์œ„ ๊ฐœ๋…์ด๋ฉฐ URI๊ฐ€ URL์„ ํฌ๊ด„ํ•œ๋‹ค.

 

URI๊ฐ€ URL์„ ํฌ๊ด„ํ•œ๋‹ค

 

URI, URL ํ˜•์‹์€ ์•„๋ž˜์™€ ๊ฐ™์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜์ž. ์•„๋ž˜ ์˜ˆ์‹œ ์ค‘ PORT ๋ฒˆํ˜ธ์— ๋Œ€ํ•ด์„œ๋Š” ์›น์ด ๊ธฐ๋ณธ์ ์œผ๋กœ 80 ํฌํŠธ ๋ฒˆํ˜ธ์ด๊ธฐ ๋•Œ๋ฌธ์— ํฌํŠธ๋ฒˆํ˜ธ๋Š” ์ƒ๋žต๋œ๋‹ค.

 

์›น์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 80์ด๋‹ค

3-2.์›น์˜ ๋ฐœ์ „์„ ๋”ฐ๋ผ๊ฐ€๋ณด์ž

์ด์ œ ๊ทธ๋Ÿฌ๋ฉด ์›น์ด ์—ญ์‚ฌ์ ์œผ๋กœ ๋“ฑ์žฅํ•  ๋•Œ๋ถ€ํ„ฐ์˜ ๊ธฐ๋Šฅ์—์„œ ํ˜„๋Œ€์˜ ๊ธฐ๋Šฅ๊นŒ์ง€ ๋ฐœ์ „ํ•ด์˜ค๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž.

 

์›น์˜ ์ดˆ์ฐฝ๊ธฐ

 

์›น์„ ์ตœ์ดˆ๋กœ ๊ฐœ๋ฐœํ•œ ํŒ€ ๋ฒ„๋„ˆ์Šค๋ฆฌ๋Š” ๋‹จ์ˆœํžˆ ์›น์„ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฌธ์„œ๋ฅผ ์‰ฝ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ทฐ์–ด์˜ ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜์˜€๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์›น ์ดˆ์ฐฝ๊ธฐ์—๋Š” ๋‹จ์ˆœํžˆ ์›น์„œ๋ฒ„์— ์š”์ฒญ์„ ํ•˜๋ฉด ์‘๋‹ต์ด ์˜ค๋Š” ๊ฒƒ์€ HTML ๋ฌธ์„œ์˜€๋‹ค. 

 

์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ํ…์ŠคํŠธ๋ฅผ ์กฐ๊ธˆ ๋” ์ด์˜๊ฒŒ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์—ˆ๋‹ค. ์ฆ‰, ๋””์ž์ธ์„ ์ข€ ๋ฐ˜์˜ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋“ฑ์žฅํ•œ ๊ฒƒ์ด CSS์ด๋‹ค. ์›น ์ดˆ์ฐฝ๊ธฐ ๋•Œ์™€๋Š” ๋‹ฌ๋ฆฌ ์ด๋ฒˆ์—” CSS ํŒŒ์ผ๋„ ๋” ์ถ”๊ฐ€๋กœ ์ „๋‹ฌํ•ด์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ์•„๋ž˜์ฒ˜๋Ÿผ ๋ฐœ์ „๋˜์—ˆ๋‹ค.

 

์ด์ œ๋Š” CSS ํŒŒ์ผ๋„ ์ „๋‹ฌํ•˜์—ฌ ์ข€ ๋” ์ด์œ ๋ฌธ์„œ ๋ทฐ์–ด๋ฅผ ์™„์„ฑ

 

๊ทธ๋Ÿฐ๋ฐ ์‚ฌ๋žŒ๋“ค์€ ์š•์‹ฌ(?)์ด ์—ฌ๊ธฐ์„œ ๊ทธ์น˜์ง€ ์•Š์•˜๋‹ค. ์ง€๊ธˆ๊นŒ์ง€๋Š” ๋‹จ์ˆœํžˆ ์›€์ง์ด์ง€ ์•Š๋Š” ์ •์ ์ธ ํŠน์„ฑ๋ฐ–์— ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์„œ๋ทฐ์–ด์˜€๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ด๋ฆฌ์ €๋ฆฌ ์›€์ง์ด๊ณ  ๋‹ค์ด๋‚˜๋ฏนํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜๋„ ๋„ฃ๊ณ  ์‹ถ์–ด์„œ ๋™์ ์ธ ํŠน์„ฑ์„ ๋ฐ˜์˜ํ•œ ๋ฌธ์„œ ๋ทฐ์–ด๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋‹ค. ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด 2๊ฐ€์ง€ ์‚ฌํ•ญ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. ๋จผ์ € ๊ธฐ์กด์— ์ „๋‹ฌํ•˜๊ณ  ์žˆ๋˜ HTML ํŒŒ์ผ์— ํƒœ๊ทธ(tag)๋ผ๋Š” ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด HTML ๊ตฌ๋ฌธ์„ ๋ถ„์„ํ•˜๋Š” Parser๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ํŒŒ์‹ฑ๋œ ๋ฌธ์„œ ๋‚ด์šฉ์„ ํ™”๋ฉด์— ๋ Œ๋”๋งํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋™์ ์ธ ํŠน์„ฑ์„ ์ •์˜ํ•˜๋Š” ๊ทœ์น™์„ ์Šคํฌ๋ฆฝํŠธ ํ˜•ํƒœ๋กœ ์ •์˜ํ•˜๋Š” JavaScript ์—”์ง„์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

 

๋™์  ํŠน์„ฑ์„ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์ถ”๊ฐ€

 

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

 

ํ•˜์ง€๋งŒ TCP/IP ์—ฐ๊ฒฐ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” HTTP ํ†ต์‹ ์€ Stateless ์ฆ‰, ์ƒํƒœ๊ฐ€ ์—†๋‹ค. ๊ณ ๋กœ ๋ฐฉ๊ธˆ ์ด์•ผ๊ธฐํ•œ ํŠน์„ฑ์„ HTTP ํ†ต์‹ ๋งŒ์œผ๋กœ๋Š” ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด๋Ÿฐ ์ƒํƒœ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์šฐ์„  ํด๋ผ์ด์–ธํŠธ ๋‹จ์—์„œ ์ƒํƒœ๋Š” ์ฟ ํ‚ค๋ผ๋Š” ๊ฒƒ์„ ์ด์šฉํ•ด์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์„œ๋ฒ„ ๋‹จ์—์„œ๋Š” ๋™์‹œ์— ์—ฌ๋Ÿฌ๋ช…์˜ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋“ค์„ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 2๊ฐ€์ง€์˜ ์ถ”๊ฐ€ ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•ด ๊ด€๋ฆฌ๋ฅผ ํ•œ๋‹ค.

 

์ฒซ ๋ฒˆ์งธ๋Š” ์œ ์ €๋“ค์˜ ์ƒํƒœ ๊ฐ’๋“ค์„ ์ €์žฅํ•ด๋†“๊ณ  ๊บผ๋‚ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ DB ์„œ๋ฒ„์ด๊ณ , ๋‘ ๋ฒˆ์งธ๋Š” WAS(Web Application Server)์ด๋‹ค. DB ์„œ๋ฒ„๋Š” ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ, WAS๋Š” ์™œ ํ•„์š”ํ• ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ ์ €์˜ ๋งˆ์ด ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์ด์ „ ํ™”๋ฉด์ธ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. ํด๋ผ์ด์–ธํŠธ๋Š” ์ž์‹ ์˜ id ์™€ password๋ฅผ ์ž…๋ ฅํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ผ๋‹จ WAS ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž…๋ ฅํ•œ id ์™€ password๊ฐ€ DB์— ์žˆ๋Š”์ง€ ์กฐํšŒํ•ด๋ณผ ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ ์กด์žฌํ•˜๋Š” ์œ ์ €๋ผ๋ฉด ๊ทธ ์œ ์ €์— ๋งž๊ฒŒ ๋งˆ์ดํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ๊ตฌ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด (๋งŒ์•ฝ ๊ตฌ๋… ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ์›นํŽ˜์ด์ง€๋ผ๋ฉด) ๊ฐ ์œ ์ €๋งˆ๋‹ค ๋ณด์—ฌ์ ธ์•ผ ํ•˜๋Š” ์ •๋ณด๋“ค์ด ์„œ๋กœ ๋‹ฌ๋ผ์งˆ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฆ‰, ์ด๋ ‡๊ฒŒ ๋™์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์ž‘์ด ํ•„์š”ํ•˜๊ฒŒ ๊ทธ์— ๋งž๊ฒŒ ์ตœ์ข…์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด์—ฌ์ค„ ๋ทฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ WAS ์„œ๋ฒ„์˜ ์—ญํ• ์ด๋‹ค. 

 

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง„ ๋‹จ๊ณ„

 

์ข€ ๋” ์ฒจ์–ธํ•˜๋ฉด ์œ„ ๊ทธ๋ฆผ ๊ธฐ์ค€์œผ๋กœ WAS ์„œ๋ฒ„ ์ž…์žฅ์—์„œ๋Š” ์™ผ์ชฝ์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ˆˆ์œผ๋กœ ๋ณด๊ณ  ์ž…๋ ฅํ•˜๋Š” ์ •๋ณด๊ฐ€ ์˜จ๋‹ค๊ณ  ํ•ด์„œ View, ์˜ค๋ฅธ์ชฝ์œผ๋กœ๋Š” DB์™€ ๊ฐ™์€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์–ป์€ ์ •๋ณด๋ฅผ ์ด์šฉํ•ด ์ตœ์ข…์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ํ•ด์„œ Model, WAS ์ž์ฒด์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž…๋ ฅํ•œ ์ •๋ณด๋“ค์— ๋Œ€ํ•œ ๊ฒ€์ฆ, ๊ธฐํƒ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” Control ํ•ด์„œ MVC ํŒจํ„ด์ด๋ผ๊ณ  ํ•œ๋‹ค.

3-3. JVM๊ณผ Restful API

๋งˆ์ง€๋ง‰์œผ๋กœ, [๋ชฉ์ฐจ 3-2]์—์„œ ์‚ดํŽด๋ณธ ๊ทธ๋ฆผ์„ ๊ฐ€์ง€๊ณ  WAS์— ์†ํ•˜๋Š” JVM์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , Restful API์— ๋Œ€ํ•ด ์ดํ•ดํ•ด๋ณด์ž. 

 

๋จผ์ € ์œ„ ๊ทธ๋ฆผ์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง€๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด [ํด๋ผ์ด์–ธํŠธ←→์„œ๋ฒ„←→WAS←→DB] ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์‚ดํŽด๋ณด์•˜๋‹ค. ์—ฌ๊ธฐ์„œ [WAS←→DB] ๊ฐ„์˜ RTT(Round Trip Time)์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ์†๋„๊ฐ€ ์•„๋ฌด๋ฆฌ ๋น ๋ฅด๋‹ค๊ณ  ํ•œ๋“ค ํ•ด๋‹น ๋‹จ๊ณ„์—์„œ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋ฉด ์•„๋ฌด ์†Œ์šฉ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์„ APM(Application Performance Monitoring)์ด๋ผ๊ณ  ํ•œ๋‹ค. APM์€ ์•„๋ž˜์˜ ๋‹จ๊ณ„๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•œ๋‹ค.

 

APM์€ WAS์™€ DB ๊ฐ„์˜ ํ†ต์‹ ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•œ๋‹ค

 

APM์€ ๊ทธ๋Ÿผ ์ •ํ™•ํžˆ ์–ด๋–ค ๋ถ€๋ถ„์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๋Š”์ง€ JVM์„ ์˜ˆ์‹œ๋กœ ๋“ค๋ฉด์„œ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž. ์šฐ์„  JVM์— ๋Œ€ํ•ด ์•Œ์•„๋‘˜ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. JVM์€ Java Virtual Machine์œผ๋กœ ์ด์ „ OS ํฌ์ŠคํŒ…์—์„œ ๋ฐฐ์› ์ง€๋งŒ 'Vritual Machine' ์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์—ˆ๋‹ค๋Š” ๊ฒƒ์€ CPU(Machine)์„ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ตฌํ˜„(Virtual) ํ–ˆ๋‹ค๋Š” ๋œป์ด๋‹ค. JVM์— ๋Œ€ํ•œ ์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด์ž.

 

JVM๊ณผ Servlet Container, ๊ทธ๋ฆฌ๊ณ  Spring

 

๋จผ์ € JVM์€ ํ•˜๋“œ์›จ์–ด CPU๋ฅผ Java๋ฅผ ์ด์šฉํ•ด์„œ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์œ„์—๋Š” JVM์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์ฒด๊ณ„์ธ ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์œ„์— ๋ฏธ๋“ค์›จ์–ด๋ผ๋Š” ๊ฒƒ์ด ๋“ฑ์žฅํ•˜๋Š”๋ฐ, ์ด ๋ฏธ๋“ค์›จ์–ด๊ฐ€ WAS๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๋ฏธ๋“ค์›จ์–ด์˜ ์—ญํ• ์€ ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ž˜ ๋™์ž‘ํ•˜๋„๋ก ์ง€์›ํ•ด์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ธ๋ฐ ๋Œ€ํ‘œ์ ์œผ๋กœ TCP/IP ์—ฐ๊ฒฐ, DB ์—ฐ๊ฒฐ, ํŒŒ์ผ ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฒƒ๋“ค์„ ์‰ฝ๊ฒŒ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ๊ทธ๋ž˜์„œ ๋ฏธ๋“ค์›จ์–ด๊ฐ€ TCP/IP ์—ฐ๊ฒฐ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์„ Servlet๊ณผ ์—ฐ๋™ํ•ด์ฃผ๋Š” ์ฃผ์ฒด๊ฐ€ ๋œ๋‹ค. ์ด Servlet์ด ๋ชจ์—ฌ์žˆ๋Š” Servlet ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ์ด๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”„๋ ˆ์ž„์›Œํฌํ™”์‹œํ‚จ ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์•„๋Š” Spring ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋œ๋‹ค. 

 

์ด์ œ ๋‹ค์‹œ APM์œผ๋กœ ๋Œ์•„์™€์„œ APM์€ ์œ„ ๊ทธ๋ฆผ์—์„œ JVM๊ณผ ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ ๋ถ€๋ถ„์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค.

 

APM์ด ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์‹ค์งˆ์ ์ธ ๋ถ€๋ถ„

 

๋‹ค์Œ์œผ๋กœ ์•Œ์•„๋ณผ ๊ฐœ๋…์€ Restful API์ด๋‹ค. ์ผ๋‹จ ๋‹ค์‹œ [ํด๋ผ์ด์–ธํŠธ←→์„œ๋ฒ„←→WAS←→DB] ๊ฐ„์— ํ†ต์‹ ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ณด์ž.

 

 

๊ทธ๋Ÿฐ๋ฐ ์š”์ฆ˜ ํ˜„๋Œ€์— ๋“ค์–ด์™€์„œ ์ƒํ™ฉ์ด ๋‹ฌ๋ผ์กŒ๋‹ค. ์ƒํ™ฉ์ด ๋‹ฌ๋ผ์ง„ ๋ถ€๋ถ„์€ ํด๋ผ์ด์–ธํŠธ ์ชฝ์ด๋‹ค. ์š”์ฆ˜ ๊ฐœ์ธ์ด ์†Œ์œ ํ•˜๋Š” OS๊ฐ€ ํƒ‘์žฌ๋œ ๊ธฐ๊ธฐ๋งŒ ํ•˜๋”๋ผ๋„ ์œˆ๋„์šฐ PC, Mac OS PC, ์•„์ดํŒจ๋“œ, ๊ฐค๋Ÿญ์‹œ ํƒœ๋ธ”๋ฆฟ, ๊ฐค๋Ÿญ์‹œ ํ•ธ๋“œํฐ, ์•„์ดํฐ, ... ์ด๋ ‡๊ฒŒ OS๊ฐ€ ๋‹ค์–‘ํ•ด์ง€๋ฉด์„œ ํด๋ผ์ด์–ธํŠธ ํ™˜๊ฒฝ์ด ๋‹ค์–‘ํ™”๋˜์—ˆ๋‹ค. ์ด ๋ง์€ ๊ณง ์„œ๋ฒ„ ์ชฝ์—์„œ ํ™”๋ฉด์„ ๋ณด์—ฌ์ค„ ๋•Œ ํด๋ผ์ด์–ธํŠธ ํ™˜๊ฒฝ์ด ๋ฌด์—‡์ธ์ง€์— ๋”ฐ๋ผ ๊ฐ๊ฐ ๋งž์ถฐ์„œ ๋ณด์—ฌ์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค์‹œ ๋งํ•ด, UI์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ์ด๊ฒƒ๊นŒ์ง€ ์„œ๋ฒ„์—๊ฒŒ ์œ„์ž„ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๊นŒ๋‹ค๋กญ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ UI์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ฆ‰, ์„œ๋ฒ„์ชฝ์—์„œ๋Š” ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋งŒ ์ „๋‹ฌํ•ด์ฃผ๊ณ , ํด๋ผ์ด์–ธํŠธ ํ™˜๊ฒฝ์— ๋งž๋Š” UI๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ฐ ํ™˜๊ฒฝ์— ๋งž๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ํด๋ผ์ด์–ธํŠธ ํ™˜๊ฒฝ์— ๋งž๋Š” UI๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์€ ํด๋ผ์ด์–ธํŠธ์˜ ๊ธฐ๊ธฐ(PC, ํ•ธ๋“œํฐ, ํƒœ๋ธ”๋ฆฟ ๋“ฑ..)์— ๋ฆฌ์•กํŠธ, ๋ทฐ์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ž‘์„ฑ๋œ ์†Œ์Šค์ฝ”๋“œ ํŒŒ์ผ๋“ค์ด ๋‹ค์šด๋กœ๋“œ ๋œ ํ›„ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

ํด๋ผ์ด์–ธํŠธ๋Š” ์ด์ œ ์š”์ฒญ์— ๋”ฐ๋ผ ์„œ๋ฒ„์—๊ฒŒ ๋‹ค์–‘ํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์–ด๋–ค ๋‚ด์šฉ๋“ค์„ ์ฝ์–ด๋“ค์ด๊ฑฐ๋‚˜ ์ƒ์„ฑํ•˜๊ธฐ, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œํ•˜๋Š” ๋™์ž‘ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋™์ž‘์˜ ์ข…๋ฅ˜๋ฅผ CRUD(Create, Read, Update, Delete) 4๊ฐ€์ง€๋กœ ๊ฐ„๋žตํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์˜ˆ๋ฅผ ๋“ค์–ด Create ๋™์ž‘์„ ์š”์ฒญํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ณง ์„œ๋ฒ„ ๋‚ด์— ์žˆ๋Š” ํŠน์ • ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์ด๊ฒƒ์„ ํด๋ผ์ด์–ธํŠธ ์ž…์žฅ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— API(Application Programming Interface)๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, CRUD ๋™์ž‘์„ ํด๋ผ์ด์–ธํŠธ์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” API๋ฅผ Restful API๋ผ๊ณ  ๋ถ€๋ฅด๊ฒŒ ๋œ๋‹ค.

3-4. ์›น์„œ๋ฒ„์—์„œ์˜ ๋ณด์•ˆ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ๋“ค

๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐ„๋žตํ•˜๊ฒŒ ์›น์„œ๋ฒ„ ๊ตฌ์กฐ์—์„œ ๋ณด์•ˆ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ๋“ค์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์•Œ์•„๋ณด์ž. ๋ฐฉ๊ธˆ ์‚ดํŽด๋ณธ ๊ทธ๋ฆผ์—์„œ ์ธํ„ฐ๋„ท์„ ๊ฑฐ์ณ ๋‚˜์˜จ ๋’ค ์›น์„œ๋ฒ„์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— 3๊ฐ€์ง€ ์š”์†Œ๋“ค์ด ์ถ”๊ฐ€๋กœ ์กด์žฌํ•œ๋‹ค.

 

IPS, SSL, WAF

 

๋จผ์ € IPS๋Š” ์นจ์ž… ๋ฐฉ์ง€ ์‹œ์Šคํ…œ์œผ๋กœ 1์ฐจ ๋ฐฉ์–ด์ฒด๊ณ„์— ํ•ด๋‹นํ•œ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ WAF๋Š” 2์ฐจ๋ฐฉ์–ด์ฒด๊ณ„๋กœ, ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์›น์„œ๋ฒ„์™€ WAS ์„œ๋ฒ„ ์‚ฌ์ด์˜ ๊ตฌ๊ฐ„์œผ๋กœ ์ด๋™ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์•Œ์•„๋ณผ ๊ฒƒ์€ SSL์ด๋‹ค. SSL์€ ์›น ์„œ๋ฒ„์™€ ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์ด์—์„œ ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•ด์„œ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ์ด๋‹ค. ์ธํ„ฐ๋„ท์„ ๊ฑฐ์ณ๊ฐ€๋Š” ๋™์•ˆ ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ค‘๊ฐ„์— ํ•ด์ปค๊ฐ€ ๊ฐ€๋กœ์ฑ„์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™” ํ•˜์—ฌ ํ†ต์‹ ํ•œ๋‹ค. ์ด๋Ÿฐ SSL์ด ์ ์šฉ๋œ HTTP ํ†ต์‹ ์ด ๋ฐ”๋กœ HTTPS์ด๋‹ค.

 

SSL์„ ๊ฑฐ์น˜๊ธฐ ์ „๊นŒ์ง€๋Š” HTTPS ํ†ต์‹ ์„ ํ•˜๊ณ , SSL ์ดํ›„์—๋Š” HTTP ํ†ต์‹ ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

ํ•˜์ง€๋งŒ ํ˜„๋Œ€์— ์™€์„œ๋Š” SSL๋ณด๋‹ค๋Š” ๋” ๋น ๋ฅด๊ณ  ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋œ TLS๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค. SSL๊ณผ TLS์— ๋Œ€ํ•œ ๋น„๊ต๋Š” ์ถ”ํ›„์— ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๋‹ค๋ค„๋ณด๊ฒ ๋‹ค.

 

 

 

๋ฐ˜์‘ํ˜•