์น ์๋น์ค ๋์ ๋ฐฉ์์ ๋ณด๋ฉด, ์ฌ์ฉ์๊ฐ url์ ์
๋ ฅํ์ ๋ ๋๋ฉ์ธ ์ฃผ์๋ฅผ ์ด์ฉํ์ฌ DNS์์ IP ์ฃผ์๋ฅผ ์ป์ด์ค๊ณ , ๊ทธ๋ ๊ฒ ์ป์ด์จ IP ์ฃผ์๋ฅผ ์น ๋ฐ์ดํฐ ํ์์ผ๋ก ๋ณํ์ฌ TCP ํต์ ์ ํตํด ์น ์๋ฒ์ ์ฃผ๊ณ ๋ฐ๊ฒ ๋ฉ๋๋ค. ์ด๋ TCP ํต์ ์ ํ๊ธฐ ์ํด 3-way handshake๋ก ์ ์์, 4-way handshake๋ก ์ ์ ํด์ ๋ฅผ ํด์ฃผ๊ฒ ๋ฉ๋๋ค.
์ค๋์ TCP ๋์ ๋ฐฉ์์ ์์๋ณด๊ธฐ ์ํด 3-way, 4-way handshake ๊ณผ์ ์ ์์๋ณด๊ฒ ์ต๋๋ค.
Client๋ ์ด์์ฒด์ ์ socket( ) ์์คํ ์ฝ์ ์ด์ฉํ์ฌ ์์ผ์ ์์ฑํฉ๋๋ค. ์ด์์ฒด์ ๋ ์์ผ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋นํ๊ณ , ์์ผ ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค.
- Client๋ Server์ ์ฐ๊ฒฐํ๊ธฐ ์ํด
3-way handshake๋ฅผ ํตํด ์ฐ๊ฒฐ ์์ฒญ์ ํ๊ฒ ๋ฉ๋๋ค. - ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์๊ฐํ๋ Client์ Server๋ ๋ชจ๋ ์๋ก ์ฐ๊ฒฐ ์์ฒญ์ ๋จผ์ ํ ์ ์๊ธฐ ๋๋ฌธ์, ์ฐ๊ฒฐ ์์ฒญ์ ๋จผ์ ์๋ํ ์์ฒญ์๋ฅผ Client๋ก, ์ฐ๊ฒฐ ์์ฒญ์ ๋ฐ์ ์์ ์๋ฅผ Server์ชฝ์ผ๋ก ์๊ฐํ๊ณ ๋ณด์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
- ์ด๋ ์๋ ๊ทธ๋ฆผ์์
a๋ Sequence Number,b๋ Acknowledgment Number๊ฐ ๋ฉ๋๋ค. - ACK : ๋๊ธฐํ ์์ฒญ์ ๋ํ ๋ต๋ณ - Client์ Sequence Number์ +1์ ํ์ฌ ACK๋ก ๋๋ ค์ค๋๋ค.
SYN(a)Client์์ Server์๊ฒ **SYN(a)**๋ฅผ ๋ณด๋ ๋๋ค. ์ด ๋ Client์ ์ํ๋ SYN์ ๋ณด๋๋ค๋SYN_SENT ์ํ๋ก ๋ฐ๋๊ฒ ๋ฉ๋๋ค.SYN(b) + ACK(a+1)Server์์๋ SYN์ ๋ฐ์๋ค๋SYN_RECEIVED ์ํ๋ก ๋ฐ๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ Client์๊ฒ ์ ๋ฐ์๋ค๋ ์๋ต์ **ACK(a+1)๊ณผ SYN(b)**๋ฅผ ๋ณด๋ ๋๋ค.ACK(b+1)Client์์๋ ์ํธ ์ฐ๊ฒฐ์ด ๋ ์ํ์ESTABLISHED ์ํ๋ก ๋ฐ๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ Server์๊ฒ **ACK(b+1)**์ ๋ณด๋ ๋๋ค.ESTABLISHEDServer์์๋ ACK๋ฅผ ๋ฐ์ ํ์ESTABLISHED ์ํ๋ก ๋ฐ๋๊ฒ๋ฉ๋๋ค.
- ์ฐ๊ฒฐ ์ข ๋ฃ ์์ฒญ ๋ํ ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์๊ฐํ๋ Client์ Server ๋ชจ๋ ๋จผ์ ์ข ๋ฃ ์์ฒญ์ ๋ณด๋ผ ์ ์๊ธฐ ๋๋ฌธ์ ๋จผ์ ์์ฒญํ ์ชฝ์ Client, ์์ฒญ์ ๋ฐ์ ์ชฝ์ Server๋ผ๊ณ ์๊ฐํ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.
- ์๋ ๊ทธ๋ฆผ์์ ์ฒ์ ๋ณด๋ด๋ ์ข
๋ฃ ์์ฒญ์ธ
1. FINํจํท์ ์ค์ง์ ์ผ๋ก ACK๊ฐ ํฌํจ๋์ด ์๋ ๊ฒ์ ์ ์ ์๋๋ฐ, ์ด๋Half-Close ๊ธฐ๋ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋๋ค.- ์ฆ, ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ค๊ณ ํ ๋ ์์ ํ ์ข ๋ฃํ์ง ์๊ณ ๋ฐ๋ง ์ข ๋ฃํฉ๋๋ค.
- Half-Close ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ฉด ์ข ๋ฃ ์์ฒญ์๊ฐ ์ฒ์ ๋ณด๋ด๋ FIN ํจํท์ ์น์ธ ๋ฒํธ๋ฅผ ํจ๊ป ๋ด์์ ๋ณด๋ด๊ฒ ๋๋๋ฐ, ์ด๋ ์น์ธ ๋ฒํธ์ ์๋ฏธ๋ "์ผ๋จ ์ฐ๊ฒฐ์ ์ข ๋ฃํ ๊ฑด๋ฐ ๊ท๋ ์ด์ด๋๊ฒ. ์ด ์น์ธ ๋ฒํธ๊น์ง ์ฒ๋ฆฌํ์ผ๋๊น ๋ ๋ณด๋ผ ๊ฑฐ ์์ผ๋ฉด ๋ณด๋ด" ๊ฐ ๋ฉ๋๋ค.
- ์ดํ ์์ ์๊ฐ ๋จ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ณด๋ด๊ณ ๋๋ฉด ๋ค์ ์์ฒญ์์๊ฒ FIN ํจํท์ ๋ณด๋์ผ๋ก์จ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ฒ๋ฆฌ๋์๋ค๋ ์ ํธ
3. FIN๋ฅผ ๋ณด๋ ๋๋ค. ๊ทธ๋ผ ์์ฒญ์๋ ๊ทธ๋ ๋๋จธ์ง ๋ฐ์ ๋ซ์ผ๋ฉด์ ์ข ๋ ์์ ํ๊ฒ ์ฐ๊ฒฐ์ ์ข ๋ฃํ ์ ์๊ฒ ๋ฉ๋๋ค.
FIN (+ACK)์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ TCP ์ฐ๊ฒฐ์ด ๋์ด์๋ ์ํ์์ ํด๋ผ์ด์ธํธ๊ฐ ์ ์์ ๋๊ธฐ ์ํด close( )๋ฅผ ํธ์ถํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ close( )๋ฅผ ํธ์ถํ๋ฉด์ ์๋ฒ์๊ฒ FIN ํจํท์ ๋ณด๋ด๊ฒ ๋๋๋ฐ, ์ด๋ FIN ํจํท์ ์ค์ง์ ์ผ๋ก๋ ACK๋ ํฌํจ๋์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ํด๋ผ์ด์ธํธ๋FIN_WAIT_1 ์ํ๋ก ๋ค์ด๊ฐ๋๋ค.ACK์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ๋ณด๋ด๊ณCLOSE_WAIT ์ํ์ ๋ค์ด๊ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ง ๋จ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ๋ง์ ์ ์ก์ ๋ง์น ํ์ close( )๋ฅผ ํธ์ถํฉ๋๋ค.FIN_WAIT_2ํด๋ผ์ด์ธํธ์์๋ ์๋ฒ์์ ACK๋ฅผ ๋ฐ์ ํ์ ์๋ฒ๊ฐ ๋จ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๋๋ด๊ณ FIN ํจํท์ ๋ณด๋ผ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฒ ๋ฉ๋๋ค.FIN์๋ฒ๋ ์ด์ ๋ชจ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ๋๋ฌ๋ค๊ณ ์ข ๋ฃ์ ํฉ์ ํ๋ค๋ ๋ป์ผ๋ก ํด๋ผ์ด์ธํธ์๊ฒ FIN ํจํท์ ๋ณด๋ธ ํ์ ์น์ธ ๋ฒํธ๋ฅผ ๋ณด๋ด์ค ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋LAST_ACK ์ํ๋ก ๋ค์ด๊ฐ๋๋ค.ACKํด๋ผ์ด์ธํธ๋ ์๋ฒ์์ FIN ํจํท์ ๋ฐ๊ณ ๋์ ๋ค์ ์๋ฒ์๊ฒ ACK ์๋ต์ ๋ณด๋ธ ํ์TIME_WAIT ์ํ๋ก ๋ค์ด๊ฐ๋ฉฐ ์ค์ง์ ์ธ ์ข ๋ฃ ๊ณผ์ (CLOSED)์ ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค. ์ด๋ TIME_WAIT ์ํ๋ ์๋์น ์์ ์๋ฌ๋ก ์ธํด ์ฐ๊ฒฐ์ด ๋ฐ๋๋ฝ์ผ๋ก ๋น ์ง๋ ๊ฒ์ ๋ฐฉ์งํ๋๋ฐ, ๋ง์ฝ ์๋ฌ๋ก ์ธํด ์ข ๋ฃ๊ฐ ์ง์ฐ๋๋ค๊ฐ ํ์์ด ์ด๊ณผ๋๋ฉด CLOSED๋ก ๋ค์ด๊ฐ๋๋ค.CLOSED์๋ฒ๋ ACK๋ฅผ ๋ฐ๊ณCLOSED ์ํ๋ก ๋ค์ด๊ฐ ์ข ๋ฃํ๊ฒ ๋ฉ๋๋ค.

