[๋คํธ์ํฌ] TCP/IP 4๊ณ์ธต ๋ชจ๋ธ(์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต, ์ ์ก ๊ณ์ธต)
์ธํฐ๋ท ํ๋กํ ์ฝ ์ค์ํธ(internet protocol suite)๋ ์ธํฐ๋ท์์ ์ปดํจํฐ๋ค์ด ์๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ ์ฐ์ด๋ ํ๋กํ ์ฝ์ ์งํฉ์ด๋ค.
์ด๋ฅผ TCP/IP 4๊ณ์ธต ๋ชจ๋ธ๋ก ์ค๋ช ํ๊ฑฐ๋ OSI 7๊ณ์ธต ๋ชจ๋ธ๋ก ์ค๋ช ํ๊ธฐ๋ ํ๋ค.
๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ TCP/IP 4๊ณ์ธต ๋ชจ๋ธ์ ์ค์ฌ์ผ๋ก ๊ณต๋ถํด๋ณด์!
๊ณ์ธต ๊ตฌ์กฐ
TCP/IP ๊ณ์ธต์ ํ๋กํ ์ฝ์ ๋คํธ์ํน ๋ฒ์์ ๋ฐ๋ผ ๋ค ๊ฐ์ ์ถ์ํ ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, OSI 7๊ณ์ธต๊ณผ ๋ง์ด ๋น๊ต๋๋ค.
์ ๊ทธ๋ฆผ์ฒ๋ผ OSI ๊ณ์ธต์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ ์ธ ๊ฐ๋ก ์ชผ๊ฐ๊ณ , ๋งํฌ ๊ณ์ธต์ ๋ฐ์ดํฐ ๋งํฌ ๊ณ์ธต, ๋ฌผ๋ฆฌ ๊ณ์ธต์ผ๋ก ๋๋ ์ ํํํ๋ฉฐ, ์ธํฐ๋ท ๊ณ์ธต์ ๋คํฐ์ํฌ ๊ณ์ธต์ผ๋ก ๋ถ๋ฅธ๋ค๋ ์ ์ด ๋ค๋ฅด๋ค.
์ด๋ฌํ ๊ณ์ธต๋ค์ ํน์ ๊ณ์ธต์ด ๋ณ๊ฒฝ๋์์ ๋ ๋ค๋ฅธ ๊ณ์ธต์ด ์ํฅ์ ๋ฐ์ง ์๋๋ก ์ค๊ณ๋์๋ค.
๊ฐ ๊ณ์ธต์ ๋ํํ๋ ์คํ์ ๋ค์์ ๊ฐ๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต : FTP / HTTP / SSH / SMTP / DNS
- ์ ์ก ๊ณ์ธต : TCP / UDP / QUIC
- ์ธํฐ๋ท ๊ณ์ธต : IP / ARP / ICMP
- ๋งํฌ ๊ณ์ธต : ์ด๋๋ท
์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต
์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ FTP / HTTP / SSH / SMTP / DNS ๋ฑ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ ๊ณ์ธต์ด๊ณ , ์น ์๋น์ค๋ ์ด๋ฉ์ผ ๋ฑ ์๋น์ค๋ฅผ ์ค์ง์ ์ผ๋ก ์ฌ๋๋ค์๊ฒ ์ ๊ณตํ๋ ๊ณ์ธต์ด๋ค.
- FTP : ์ฅ์น์ ์ฅ์น ๊ฐ์ ํ์ผ์ ์ ์กํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํ์ค ํต์ ํ๋กํ ์ฝ
- SSH : ๋ณด์๋์ง ์์ ๋คํธ์ํฌ์์ ๋คํธ์ํฌ ์๋น์ค๋ฅผ ์์ ํ๊ฒ ์ด์ํ๊ธฐ ์ํ ์ํธํ ๋คํธ์ํฌ ํ๋กํ ์ฝ
- HTTP : World Wide Web์ ์ํ ๋ฐ์ดํฐ ํต์ ์ ๊ธฐ์ด์ด์, ์น ์ฌ์ดํธ๋ฅผ ์ด์ฉํ๋ ๋ฐ ์ฐ๋ ํ๋กํ ์ฝ
- SMTP : ์ด๋ฉ์ผ ์ ์ก์ ์ํ ์ธํฐ๋ท ํ์ค ํต์ ํ๋กํ ์ฝ
- DNS : ๋๋ฉ์ธ ์ด๋ฆ๊ณผ IP ์ฃผ์๋ฅผ ๋งคํํด์ฃผ๋ ์๋ฒ
- ์๋ฅผ ๋ค์ด, www.naver.com์ DNS ์ฟผ๋ฆฌ๊ฐ ์ค๋ฉด Root DNS -> .com DNS -> .naver DNS -> .www DNS ๊ณผ์ ์ ๊ฑฐ์ณ์ ์๋ฒฝํ ์ฃผ์๋ฅผ ์ฐพ์ IP ์ฃผ์๋ฅผ ๋งคํํ๋ค. ์ด๋ฅผ ํตํด IP ์ฃผ์๊ฐ ๋ฐ๋์ด๋ ์ฌ์ฉ์๋ค์๊ฒ ๋๊ฐ์ ๋๋ฉ์ธ ์ฃผ์๋ก ์๋น์คํ ์ ์๋ค.
์ ์ก ๊ณ์ธต
์ ์ก ๊ณ์ธต์ ์ก์ ์์ ์์ ์๋ฅผ ์ฐ๊ฒฐํ๋ ํต์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ฉฐ ์ฐ๊ฒฐ ์งํฅ ๋ฐ์ดํฐ ์คํธ๋ฆผ ์ง์, ์ ๋ขฐ์ฑ, ํ๋ฆ ์ ์ด๋ฅผ ์ ๊ณตํ ์ ์์ผ๋ฉฐ
์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต๊ณผ ์ธํฐ๋ท ๊ณ์ธต ์ฌ์ด์ ๋ฐ์ดํฐ๊ฐ ์ ๋ฌ๋ ๋ ์ค๊ณ ์ญํ ์ ํ๋ค. ๋ํ์ ์ผ๋ก TCP์ UDP๊ฐ ์๋ค.
- TCP
- ํจํท ์ฌ์ด์ ์์๋ฅผ ๋ณด์ฅํ๊ณ ์ฐ๊ฒฐ์งํฅ ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ ์ฐ๊ฒฐํจ์ผ๋ก์จ ์ ๋ขฐ์ฑ์ ๊ตฌ์ถํด์ ์์ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ฉฐ, '๊ฐ์ ํ์ ํจํท ๊ตํ ๋ฐฉ์'์ ์ฌ์ฉํ๋ค.
- ๊ฐ์ํ์ ํจํท ๊ตํ ๋ฐฉ์
- ๊ฐ ํจํท์๋ ๊ฐ์ํ์ ์๋ณ์(VCI) ํฌํจ๋๋ฉฐ ๋ชจ๋ ํจํท์ ์ ์กํ๋ฉด ๊ฐ์ํ์ ์ด ํด์ ๋๊ณ ํจํท๋ค์ ์ ์ก๋ ์์๋๋ก ๋์ฐฉํ๋ ๋ฐฉ์
- ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด, 3, 2, 1๋ก ์ด๋ฃจ์ด์ง ํจํท์ด ์ด๋ค ํ์ ์ ๋ฐ๋ผ ์์๋๋ก ๋์ฐฉํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
- UDP
- ํจํท ์ฌ์ด์ ์์๋ฅผ ๋ณด์ฅํ์ง ์๊ณ ์์ ์ฌ๋ถ๋ฅผ ํ์ธํ์ง ์๊ณ ๋จ์ํ ๋ฐ์ดํฐ๋ง ์ฃผ๋ '๋ฐ์ดํฐ๊ทธ๋จ ํจํท ๊ตํ ๋ฐฉ์'์ ์ฌ์ฉํ๋ค.
- ๋ฐ์ดํฐ๊ทธ๋จ ํจํท ๊ตํ ๋ฐฉ์
- ํจํท์ด ๋ ๋ฆฝ์ ์ผ๋ก ์ด๋ํ๋ฉฐ ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ์ ํํ์ฌ ๊ฐ์ง๋๋ฐ, ํ๋์ ๋ฉ์์ง์์ ๋ถํ ๋ ์ฌ๋ฌ ํจํท์ ์๋ก ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ ์ก๋ ์ ์์ผ๋ฉฐ ๋์ฐฉํ '์์๊ฐ ๋ค๋ฅผ ์ ์๋' ๋ฐฉ์์ด๋ค.
- ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด 3,2,1๋ก ์ด๋ฃจ์ด์ง ํจํท์ด ์์๋ ๋ค๋ฅด๊ณ ์ด๋ ํ ํ์ ์ ์ค์ฌ์ผ๋ก ๊ฐ๋ ๊ฒ์ด ์๋๋ผ ๋ฐ๋ก๋ฐ๋ก ์ด๋ํ๋ฉฐ ์์๋ ๋ค๋ฅด๊ฒ ๋์ฐฉํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
TCP ์ฐ๊ฒฐ ์ฑ๋ฆฝ ๊ณผ์
TCP๋ ์ ๋ขฐ์ฑ์ ํ๋ณดํ๊ธฐ ์ํด 3-way handshake๋ผ๋ ์์ ์ ์งํํ๋ค.
์ ๊ทธ๋ฆผ์ฒ๋ผ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํต์ ํ ๋ ๋ค์๊ณผ ๊ฐ์ ์ธ ๋จ๊ณ์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- SYN ๋จ๊ณ : ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ SYN์ ์ ์กํ๋ค. ์ด๋, ํด๋ผ์ด์ธํธ์ ISN์ ๋ด์ ๋ณด๋ธ๋ค.
- SYN+ACK ๋จ๊ณ : ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ SYN์ ์์ ํ๊ณ ์๋ฒ์ ISN๊ณผ ์น์ธ๋ฒํธ(ํด๋ผ์ด์ธํธ ISN+1)๋ฅผ ๋ด์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ธ๋ค.
- ACK ๋จ๊ณ : ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ISN+1 ๊ฐ์ธ ์น์ธ๋ฒํธ๋ฅผ ACK์ ๋ด์ ์๋ฒ๋ก ๋ณด๋ธ๋ค.
* SYN : SYNchronizaion์ ์ฝ์์ด๋ฉฐ, ์ฐ๊ฒฐ ์์ฒญ ํ๋๊ทธ
* ACK : ACKnowledgement์ ์ฝ์์ด๋ฉฐ, ์๋ต ํ๋๊ทธ
* ISN : Initial Sequence Numbers์ ์ฝ์์ด๋ฉฐ, ์๋ก์ด TCP ์ฐ๊ฒฐ์ ์ฒซ ๋ฒ์งธ ํจํท์ ํ ๋น๋ 32 ๋นํธ ๊ณ ์ ์ํ์ค ๋ฒํธ(์ฅ์น๋ง๋ค ๋ค๋ฅด๋ฉฐ, ์ 12010์ด๋ผ๋ ์ซ์๋ ์์๋ก ๋ ์์์ ์ซ์์ด๋ค)
์์ ๊ฐ์ด 3-way handshake ๊ณผ์ ์ดํ ์ ๋ขฐ์ฑ์ด ๊ตฌ์ถ๋๊ณ ๋ฐ์ดํฐ ์ ์ก์ ์์ํ๋ค.
TCP๋ ์ด์ ๊ฐ์ ์ ๋ขฐ์ฑ ๊ตฌ์ถ ๊ณผ์ ์ด ์๊ธฐ ๋๋ฌธ์ '์ ๋ขฐ์ฑ์ด ์๋ ๊ณ์ธต'์ด๋ผ๊ณ ํ๋ฉฐ,
UDP๋ ์ด์ ๊ฐ์ ๊ณผ์ ์ด ์๊ธฐ ๋๋ฌธ์ '์ ๋ขฐ์ฑ์ด ์๋ ๊ณ์ธต'์ด๋ผ๊ณ ํ๋ค.
TCP ์ฐ๊ฒฐ ํด์ ๊ณผ์
TCP๊ฐ ์ฐ๊ฒฐ์ ํด์ ํ ๋๋ 4-way handshake ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- ๋จผ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ์ ๋ซ์ผ๋ ค๊ณ ํ ๋ FIN์ผ๋ก ์ค์ ๋ ์ธ๊ทธ๋จผํธ๋ฅผ ์๋ฒ๋ก ๋ณด๋ธ๋ค. ์ดํ ํด๋ผ์ด์ธํธ๋ FIN_WAIT1 ์ํ๊ฐ ๋๋ฉฐ, ์๋ฒ์ ์๋ต์ ๊ธฐ๋ค๋ฆฐ๋ค.
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ก ACK๋ผ๋ ์น์ธ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ธ๋ค. ์ดํ ์๋ฒ๋ CLOSE_WAIT ์ํ๊ฐ ๋๋ฉฐ , ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋ณด๋ธ ACK๋ฅผ ๋ฐ์ผ๋ฉด FIN_WAIT2 ์ํ๊ฐ ๋๋ค.
- ์๋ฒ๋ ACK๋ฅผ ๋ณด๋ธ ํ ์ผ์ ์๊ฐ ํ์ ํด๋ผ์ด์ธํธ์๊ฒ FIN์ด๋ผ๋ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ธ๋ค.
- ์๋ฒ๋ก๋ถํฐ FIN ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์ ํด๋ผ์ด์ธํธ๋ TIME_WAIT ์ํ๊ฐ ๋๊ณ , ๋ค์ ์๋ฒ๋ก ACK๋ฅผ ๋ณด๋ด์ ์๋ฒ๋ CLOSES ์ํ๊ฐ ๋๋ค. ์ดํ, ํด๋ผ์ด์ธํธ๋ ์ผ์ ์๊ฐ ๋์ TIME_WAIT ์ํ๋ก ๋๊ธฐํ ๋ค์ ์ฐ๊ฒฐ์ด ๋ซํ๊ณ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๋ชจ๋ ์์๊ณผ ์ฐ๊ฒฐ์ด ํด์ ๋๋ค.
์ฌ๊ธฐ์ ๊ฐ์ฅ ์ค์ํ ์ ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ๋ก ์ฐ๊ฒฐ์ ๋ซ์ง ์๊ณ TIME_WAIT ์ํ๋ก ์ผ์ ์๊ฐ ๋๊ธฐํ ๋ค์ ์ฐ๊ฒฐ์ ๋ซ๋ ๊ฒ์ด๋ค.
๋คํธ์ํฌ ํ๊ฒฝ์ ํจํท์ ์ง์ฐ, ์์ ๋ณ๊ฒฝ, ์์ค ๋ฑ๊ณผ ๊ฐ์ ์ฌ๋ฌ ๋ถํ์คํ ์์๋ฅผ ํฌํจํ๊ณ ์๊ธฐ ๋๋ฌธ์, TIME-WAIT ์ํ๋ ์ด๋ฌํ ๋ถํ์ค์ฑ์ ์ฒ๋ฆฌํ๋ ์ค์ํ ์ญํ ์ ํ๋ค.
- ์ง์ฐ ํจํท์ด ๋ฐ์ํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ๋ ๊ฒ์ด๋ค. ํจํท์ด ๋ค๋ฆ๊ฒ ๋๋ฌํ๊ณ ์ด๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ฉด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- ์ฆ, ์ฐ๊ฒฐ ํด์ ์ ์ ์์ง ์์ ์ง์ ๋์ฐฉํ์ง ๋ชปํ ํจํท์ ๊ธฐ๋ค๋ ค์ค์ผ๋ก์จ ํจํท์ด ์ ์ค๋๋ ๊ฒ์ ๋ง๋ ๊ฒ
- ๋ ์ฅ์น๊ฐ ์ฐ๊ฒฐ์ด ๋ซํ๋์ง ํ์ธํ๊ธฐ ์ํ ๊ฒ์ด๋ค. ๋ง์ฝ ์๋ฒ๊ฐ LAST_ACK ์ํ์์ ๋ซํ๊ฒ ๋๋ฉด ๋ค์ ์๋ก์ด ์ฐ๊ฒฐ์ ํ๋ ค๊ณ ํ ๋ ์ฅ์น๋ ๊ณ์ LAST_ACK์ธ ์ํ์ด๊ธฐ ๋๋ฌธ์ ์ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
- ์๋ฅผ ๋ค์ด, ํด๋ผ์ด์ธํธ๊ฐ ๋ง์ง๋ง์ผ๋ก ์๋ฒ์ ๋ณด๋ธ ACK๊ฐ ์ ์ค๋์๋ค๊ณ ๊ฐ์ ํด๋ณด์. TCP๋ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ฉด ์๋ต์ ๋ฐ์์ผ ํ๋๋ฐ, ์๋ฒ๊ฐ ๋ณด๋ธ FIN์ ๋ํ ์๋ต์ธ ACK๊ฐ ์ ์ค๋์๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ ACK๋ฅผ ๋ฐ์ง ๋ชปํด ํด๋ผ์ด์ธํธ๋ก FIN์ ์ฌ์ ์กํ๊ฒ ๋๋ค.
- ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ TIME-WAIT์ ๊ฐ์ง์ง ์๊ณ ํด๋ผ์ด์ธํธ๊ฐ ACK๋ฅผ ๋ณด๋ธ ๋ค์ ๋ฐ๋ก ์ฐ๊ฒฐ์ ๋์ด๋ฒ๋ ธ๋ค๋ฉด ์๋ฒ์ ์ฌ์ ์ก๋ FIN์ ๋ฐ์ ์ฒ๋ฆฌํด์ค ํด๋ผ์ด์ธํธ๊ฐ ์กด์ฌํ์ง ์๊ฒ ๋๊ณ , ์๋ฒ๋ ์ฐ๊ฒฐ์ด ๋ซํ์ง ์์ LAST_ACK ์ํ๋ก ๋จ๊ฒ ๋๋ค.
- ์ด ์ํฉ์์ ์๋ก์ด ์ฐ๊ฒฐ์ ์๋ํ๋ฉด ์ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
* TIME-WAIT : ์์ผ์ด ๋ฐ๋ก ์๋ฉธ๋์ง ์๊ณ ์ผ์ ์๊ฐ๋์ ์ ์ง๋๋ ์ํ๋ฅผ ๋งํ๋ฉฐ, CentOS6, ์ฐ๋ถํฌ ๋ฑ์์ 60์ด๋ก ์ค์ ๋์ด ์์ผ๋ฉฐ ์๋์ฐ์์ 4๋ถ์ผ๋ก ์ค์ ๋์ด ์๋ค. OS๋ง๋ค ๋๊ธฐ ์ํ์ ์๊ฐ์ ๋ค๋ฅผ ์ ์๋ค.
* ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ : ๋ฐ์ดํฐ์ ์ ํ์ฑ๊ณผ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ๋ณด์ฆํ๋ ๊ฒ