[Network] L4 ๊ณ์ธต์ TCP/UDP ๊ทธ๋ฆฌ๊ณ ์น์ ๊ธฐ์
๐ ํด๋น ํฌ์คํ ์ ์ธํ๋ฐ ๊ฐ์ ๋๋ํ๊ฐ๋ฐ์๋์ ์ธ์์ ๋๋ด๋ ๋คํธ์ํฌ ํต์ฌ์ด๋ก - ๊ธฐ์ด ๋ด์ฉ์ ๊ณต๋ถํ๋ฉด์ ๋ฐฐ์ด ๋ด์ฉ์ ์ ๋ง์ ๋ฐฉ์์ผ๋ก ์ฌ์ ๋ฆฌํ๊ณ ์ ํ๋ ๋ชฉ์ ํ์ ์์ฑ๋๋ ํฌ์คํ ์ ๋๋ค. ์๋ ํฌ์คํ ์์ ์ฌ์ฉ๋๋ ๋ชจ๋ ์๋ฃ๋ ์ ๊ฐ ์ง์ ์ฌ๊ตฌ์ฑํ์์ ์๋ฆฝ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ OSI 7 ๊ณ์ธต ์ค ์ ์ก ๊ณ์ธต์ ํด๋นํ๋ L4 ๊ณ์ธต์ TCP/UDP์ ๋ํด ์์๋ณด๊ณ , ์น(Web)์ด๋ผ๋ ๊ธฐ์ ์ด ์ญ์ฌ์ ์ผ๋ก ์ด๋ป๊ฒ ๋ฐ์ ํด์๋์ง ์ดํด๋ณด๋ฉด์ ํต์ฌ ์์๋ค์ ์ดํดํด๋ณด์.
1. TCP๋ ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ์ด๋ค
TCP๋ ๋ฌผ๋ฆฌ์ ์ธ ๊ฒ์ด ์๋ ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ์ด๋ค. ๋ฌผ๋ฆฌ์ ์ธ ์ฐ๊ฒฐ์ L2 ์ค์์น์ฒ๋ผ ๋ง ๊ทธ๋๋ก ์ง์ง ๋ฌผ๋ฆฌ์ ์ธ ํ์ ์ ๊ฐ์ง๊ณ ์ฅ์น ๊ฐ์ ์ง์ง ์ฐ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค. ํ์ง๋ง TCP๋ ์ด๋ฌํ ๋ฌผ๋ฆฌ์ ์ฐ๊ฒฐ์ด ์๋ ๋ง์น ๊ฐ์ํ๋ ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ์ด๋ค. ๊ทธ๋์ ์ฌ๊ธฐ์ '์ฐ๊ฒฐ'์ด๋ผ๋ ๋จ์ด๋ฅผ ์์ด๋ก ํ๋ฉด Connection ์ด๋ผ๊ณ ๋ ํ๊ณ Session์ด๋ผ๊ณ ๋ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๊ฒฐ์ ๊ฒฐ๊ณผ์ ์ผ๋ก ์์๋ฒํธ๊ฐ ์กด์ฌํ๋ค. ์ฐ๋ฆฌ๊ฐ ์ด์ ํฌ์คํ ์์ ์ ์ ์ดํด๋ณด์๋ TCP/IP ์ก,์์ ๊ตฌ์กฐ ๊ทธ๋ฆผ์ ์ผ๋ถ๋ถ์ ์ดํด๋ณด์.
๋ถํ์ ์ ์ ๋ค๋ชจ์นธ์ผ๋ก ํ์๋ ๋ถ๋ถ์ ์ฃผ๋ชฉํด๋ณด์. TCP/IP ์ก,์์ ๊ณผ์ ์์ ๋ฐ์ดํฐ๋ฅผ Segment๋ผ๋ ๋จ์๋ก ์ชผ๊ฐ์ ธ์ ์ ๋ฌ๋๊ณ , ์์ ์ธก์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ผ๋ฉด ์ก์ ์ธก์ผ๋ก ์ ๋ฐ์๋ค๊ณ ๋ด์ฉ์ ์ ๋ฌํด์ค ๋ Segment ๋ฒํธ๋ฅผ ์ ๋ฌํด์ค๋ค๊ณ ํ๋ค. ์ด ๋ง์ Segment์ ์ผ์ข ์ ๋ฒํธ๊ฐ ๋ถํ์ ธ ์๋ค๋ ๊ฒ์ด๊ณ ์ด๊ฒ์ด ๊ณง TCP ์ฐ๊ฒฐ์ ์์๋ฒํธ๋ฅผ ์๋ฏธํ๋ค. ์์ ๋ฒํธ๊ฐ 1,2,3,4 ์ฉ ์ฆ๊ฐํด์ ๋ถ๋ ๊ฒ์ ์๋๊ณ ์์ ๋ฒํธ๋ Segment์ ๋ฐ์ดํฐ ์ฉ๋ ๋ฐ์ดํธ ์๋งํผ ์ฆ๊ฐํ๋ค.
๊ทธ๋ฆฌ๊ณ TCP๋ '์ฐ๊ฒฐ'์ด๋ผ๊ณ ํ ์ ์์ ์ ์ ์๋ ๋ถ๋ถ์ ๋ฐ๋ก ์ํ ์ ์ด ๊ฐ๋ ์ ๋๋ฐํ๋ค๋ ๊ฒ์ด๋ค. ์๋ ๊ทธ๋ฆผ์ผ๋ก ํด๋ผ์ด์ธํธ, ์๋ฒ๋ก ๊ตฌ์ฑ๋๋ TCP ์ฐ๊ฒฐ ๊ณผ์ ์ ๋ํด ์์๋ณด์.
(์ ๊ทธ๋ฆผ์์ '๋ฐ์ดํฐ ์์ ์ธก' ๊ณผ '๋ฐ์ดํฐ ์ก์ ์ธก' ๊ฐ์ ์์น๊ฐ ์๋ก ๋ฐ๋์๋ค๋ ์ ์๋ ค๋๋ฆฝ๋๋ค)
๊ฐ์ฅ ๋จผ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋๋ค ๋คํธ์ํฌ ํต์ ์ ์ํ ์์ผ์ ์์ฑํ๊ณ ๊ฐ๋ฐฉํ๋ค. ์ด ๋ ์๋ฒ ์ธก์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋ ์ญํ ์ด๋ฏ๋ก ๋๊ธฐ ์ํ(Listen)์ ๋์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ํ, ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ์ปค๋๋ค ๋ชจ๋ ๊ฐ๊ฐ ํต์ ์ ์๋ณ์์ธ ํฌํธ๋ฒํธ๋ฅผ ๋ถ์ฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ผ์ฐํฐ์ ์ธํฐ๋ท ์ฅ์น๋ค์ ํตํด ํต์ ์ ํ๋ ์์์ด๋ค.
๋ค์์ผ๋ก ์ดํด๋ณผ ๊ฒ์ TCP ์ฐ๊ฒฐ ์์ฒด๋ฅผ ์ํํ๋ ๊ณผ์ ์ธ 3-way handshaking ๊ณผ์ ์ ๋ํด ์์๋ณด์. ์ฌ๊ธฐ์ '์ฐ๊ฒฐ ์์ฒด๋ฅผ ์ํ'ํ๋ค๋ ๊ฒ์ ๋ง ๊ทธ๋๋ก TCP ์ฐ๊ฒฐ ์ํ๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ผ์ ์ด ๊ณผ์ ์ค์ ๋ฐ์ดํฐ(ํ์ด๋ก๋)๊ฐ ์ ์ก๋๋ ๊ฒ์ ์๋๋ค. ๋ฐ์ดํฐ๋ TCP ์ฐ๊ฒฐ ์ํ๋ฅผ ๋ง๋ ์ดํ์ ์ํ๋๋ค๊ณ ํ๋ค(์ง๋ฌธ/๋ต๋ณ)
๊ฐ์ฅ ๋จผ์ ํด๋ผ์ด์ธํธ, ์๋ฒ ๋ชจ๋ 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 ์ฐ๊ฒฐ์ ์ํํ๋ 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 ์ฐ๊ฒฐ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ข ๋ฃ ์์๋ ๋จผ์ ์์ฒญ์ ํ๋ ์ฃผ์ฒด๋ ์ฃผ๋ก ํด๋ผ์ด์ธํธ์ด๋ค. ์ต์ด์๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋ชจ๋ ์ฐ๊ฒฐ ์ํ(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 ์ ๋ธ๋ผ์ฐ์ ์ ์ ๋ ฅํ์์ ๋ ๋ด๋ถ์ ์ผ๋ก ์ด๋ค ์ผ์ด ๋ฐ์ํ๋์ง ์์๋ณด์. ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
๊ทธ๋ฆผ์ ๋ฒํธ๋ฅผ ๋ฌ์๋์๋ค. ๋ฒํธ ๋๋ก ๊ณผ์ ์ด ์งํ๋๋ค๊ณ ๋ณด๋ฉด ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ถ๊ฐ๋ก ์์๋ ์ ์ด ์๋๋ฐ, ์ ํจ๊ธฐ๊ฐ๊ณผ 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 ์๋ฒ๋ก ์์ฒญํ๋ ๋ถ๋ถ์ ์ข ํ๋ํ๋ค.
์ฐ๋ฆฌ์๊ฒ 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 ํ์์ ์๋์ ๊ฐ์ผ๋ ์ฐธ๊ณ ํ์. ์๋ ์์ ์ค PORT ๋ฒํธ์ ๋ํด์๋ ์น์ด ๊ธฐ๋ณธ์ ์ผ๋ก 80 ํฌํธ ๋ฒํธ์ด๊ธฐ ๋๋ฌธ์ ํฌํธ๋ฒํธ๋ ์๋ต๋๋ค.
3-2.์น์ ๋ฐ์ ์ ๋ฐ๋ผ๊ฐ๋ณด์
์ด์ ๊ทธ๋ฌ๋ฉด ์น์ด ์ญ์ฌ์ ์ผ๋ก ๋ฑ์ฅํ ๋๋ถํฐ์ ๊ธฐ๋ฅ์์ ํ๋์ ๊ธฐ๋ฅ๊น์ง ๋ฐ์ ํด์ค๋ ๊ณผ์ ์ ์ดํด๋ณด๋๋ก ํ์.
์น์ ์ต์ด๋ก ๊ฐ๋ฐํ ํ ๋ฒ๋์ค๋ฆฌ๋ ๋จ์ํ ์น์ ์ฌ๋ฌ๊ฐ์ง ๋ฌธ์๋ฅผ ์ฝ๊ฒ ๋ณผ ์ ์๋ ๋ทฐ์ด์ ๋ชฉ์ ์ผ๋ก ๊ฐ๋ฐํ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ๊ทธ๋ฆผ์ฒ๋ผ ์น ์ด์ฐฝ๊ธฐ์๋ ๋จ์ํ ์น์๋ฒ์ ์์ฒญ์ ํ๋ฉด ์๋ต์ด ์ค๋ ๊ฒ์ HTML ๋ฌธ์์๋ค.
์๊ฐ์ด ์ง๋๋ฉด์ ํ ์คํธ๋ฅผ ์กฐ๊ธ ๋ ์ด์๊ฒ ๋ณด์ฌ์ฃผ๊ณ ์ถ์๋ค. ์ฆ, ๋์์ธ์ ์ข ๋ฐ์ํ๊ณ ์ถ์๋ค. ๊ทธ๋ ๊ธฐ์ ๋ฑ์ฅํ ๊ฒ์ด 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์ ๊ทธ๋ผ ์ ํํ ์ด๋ค ๋ถ๋ถ์ ๋ชจ๋ํฐ๋ง ํ๋์ง JVM์ ์์๋ก ๋ค๋ฉด์ ์ดํด๋ณด๋๋ก ํ์. ์ฐ์ JVM์ ๋ํด ์์๋ ํ์๊ฐ ์๋ค. JVM์ Java Virtual Machine์ผ๋ก ์ด์ OS ํฌ์คํ ์์ ๋ฐฐ์ ์ง๋ง 'Vritual Machine' ์ด๋ผ๋ ํค์๋๊ฐ ๋ถ์๋ค๋ ๊ฒ์ CPU(Machine)์ ์ํํธ์จ์ด๋ก ๊ตฌํ(Virtual) ํ๋ค๋ ๋ป์ด๋ค. JVM์ ๋ํ ์๋ ๊ทธ๋ฆผ์ ๋ณด์.
๋จผ์ JVM์ ํ๋์จ์ด CPU๋ฅผ Java๋ฅผ ์ด์ฉํด์ ์ํํธ์จ์ด๋ก ๊ตฌํํ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์๋ JVM์ด ์ดํดํ ์ ์๋ ๋ช ๋ น์ฒด๊ณ์ธ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๊ฐ ์กด์ฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ ๋ฏธ๋ค์จ์ด๋ผ๋ ๊ฒ์ด ๋ฑ์ฅํ๋๋ฐ, ์ด ๋ฏธ๋ค์จ์ด๊ฐ WAS๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ๋ฏธ๋ค์จ์ด์ ์ญํ ์ ๋ค๋ฅธ ์ํํธ์จ์ด๊ฐ ์ ๋์ํ๋๋ก ์ง์ํด์ฃผ๋ ์ํํธ์จ์ด์ธ๋ฐ ๋ํ์ ์ผ๋ก TCP/IP ์ฐ๊ฒฐ, DB ์ฐ๊ฒฐ, ํ์ผ ๋ฑ ์ฌ๋ฌ๊ฐ์ง ๊ฒ๋ค์ ์ฝ๊ฒ ๊ฐ์ ธ๋ค ์ธ ์ ์๋๋ก ํด์ค๋ค. ๊ทธ๋์ ๋ฏธ๋ค์จ์ด๊ฐ TCP/IP ์ฐ๊ฒฐ๊ณผ ๊ฐ์ ๊ฒ๋ค์ Servlet๊ณผ ์ฐ๋ํด์ฃผ๋ ์ฃผ์ฒด๊ฐ ๋๋ค. ์ด Servlet์ด ๋ชจ์ฌ์๋ Servlet ์ปจํ ์ด๋๊ฐ ์กด์ฌํ๋๋ฐ, ์ด๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ์์ํฌํ์ํจ ๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ํํ ์๋ Spring ํ๋ ์์ํฌ๊ฐ ๋๋ค.
์ด์ ๋ค์ APM์ผ๋ก ๋์์์ APM์ ์ ๊ทธ๋ฆผ์์ JVM๊ณผ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋ ๋ถ๋ถ์ ๋ชจ๋ํฐ๋งํ๋ค.
๋ค์์ผ๋ก ์์๋ณผ ๊ฐ๋ ์ 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๋ ์นจ์ ๋ฐฉ์ง ์์คํ ์ผ๋ก 1์ฐจ ๋ฐฉ์ด์ฒด๊ณ์ ํด๋นํ๋ค. ๊ทธ๋ฐ ๋ค์ WAF๋ 2์ฐจ๋ฐฉ์ด์ฒด๊ณ๋ก, ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์น์๋ฒ์ WAS ์๋ฒ ์ฌ์ด์ ๊ตฌ๊ฐ์ผ๋ก ์ด๋ํ ์๋ ์๋ค. ๋ง์ง๋ง์ผ๋ก ์์๋ณผ ๊ฒ์ SSL์ด๋ค. SSL์ ์น ์๋ฒ์ ๋ธ๋ผ์ฐ์ ์ฌ์ด์์ ์ ์ก๋๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํํด์ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ๋ณดํธํ๊ธฐ ์ํ ๊ธฐ์ ์ด๋ค. ์ธํฐ๋ท์ ๊ฑฐ์ณ๊ฐ๋ ๋์ ์ ์ก๋๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ง ์๋๋ค๋ฉด ์ค๊ฐ์ ํด์ปค๊ฐ ๊ฐ๋ก์ฑ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ฅผ ๋ง๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ํธํ ํ์ฌ ํต์ ํ๋ค. ์ด๋ฐ SSL์ด ์ ์ฉ๋ HTTP ํต์ ์ด ๋ฐ๋ก HTTPS์ด๋ค.
SSL์ ๊ฑฐ์น๊ธฐ ์ ๊น์ง๋ HTTPS ํต์ ์ ํ๊ณ , SSL ์ดํ์๋ HTTP ํต์ ์ ํ๊ฒ ๋๋ค.
ํ์ง๋ง ํ๋์ ์์๋ SSL๋ณด๋ค๋ ๋ ๋น ๋ฅด๊ณ ๋ณด์์ด ๊ฐํ๋ TLS๋ฅผ ์์ฃผ ์ฌ์ฉํ๋ค. SSL๊ณผ TLS์ ๋ํ ๋น๊ต๋ ์ถํ์ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ค๋ค๋ณด๊ฒ ๋ค.