๐ 1. ๊ฐ๋
TCP๋ ์ ๋ขฐ์ฑ์ ํ๋ณดํ ๋ 3-Way Handshake๋ฅผ ์ฌ์ฉํ๋ค.
์ด๋ฒ ๊ธ์ ํตํด TCP๊ฐ ์ฐ๊ฒฐ์ ํ ๋ ์ฌ์ฉํ๋ 3-Way HandShake์ ์ฐ๊ฒฐ์ ํด์ ํ ๋ ์ฌ์ฉํ๋ 4-Way Handshake์ ๋ํด์ ์์๋ณด๊ณ ์ ํ๋ค.
๋ค์ด๊ฐ๊ธฐ์ ์์ 3-Way HandShake๋ฅผ ๊ฐ๋จํ ๋น์ ๋ฅผ ํตํด ์์๋ณด์. ๋ง์ฝ A์ B๊ฐ ์์ฌ์ํต์ ํ๋ค๊ณ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์งํ๋ ๊ฒ์ด๋ค.
- B๋. ์ ๋ง ๋ค๋ฆฌ์๋์?
- ์ ๋ค๋ฆฝ๋๋ค. A๋์ ์ ๋ง ๋ค๋ฆฌ์๋์?
- ์ ๋ค๋ฆฝ๋๋ค.
์ด๋ ๊ฒ A์ B๊ฐ ๋ํ๋ฅผ ์งํํ๊ธฐ์ ์์ ์๋ก ์ฐ๊ฒฐ์ด ์ ๋์๋์ง ํ์ธํ๋ ๊ณผ์ ์ 3-Way Handshake๋ผ๊ณ ํ ์ ์๋ค.
๐ 2. ์ฌ์ ์ง์
3-Way Handshake์์๋ 3๋ฒ์ ์ธ๊ทธ๋จผํธ(TCP์์ ํจํท์ ์ธ๊ทธ๋จผํธ๋ผ๊ณ ๋ถ๋ฆ)๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉด์ ํต์ ์ ํ๊ฒ ๋๋ค.
์ด๋, ์ด๋ค ์ธ๊ทธ๋จผํธ๊ฐ ์๋ก์ด ์ฐ๊ฒฐ ์๋์ธ์ง ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์ธ๊ทธ๋จผํธ๊ฐ ๊ธฐ์กด ํต์ ์ ๋ํ ์๋ต์ธ์ง๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด์ TCP Header์ ์๋ Flag๋ค์ ์ฌ์ฉํ๋ค. (๊ธฐ์กด์๋ 6๊ฐ์ Flag๋ง ์ฌ์ฉํ์ง๋ง, ํผ์ก ์ ์ด ๊ธฐ๋ฅ์ ํฅ์์ ์ํด Reserved ํ๋๋ฅผ ์ฌ์ฉํ์ฌ NS, CWR, ECE ํ๋๊ทธ๊ฐ ์ถ๊ฐ๋์๋ค.)
์ด๋ฒ ๊ธ์์ ์ฌ์ฉํ Flag๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
- SYN (SYNchronization)
์ฐ๊ฒฐ ์์ฒญ ํ๋๊ทธ - ACK (ACKnowledgement)
์๋ต ํ๋๊ทธ - FIN (Finish)
์ฐ๊ฒฐ ์ข ๋ฃ ์์ฒญ ํ๋๊ทธ
์ธ์ ์ฐ๊ฒฐ์ ์ข ๋ฃ์ํฌ ๋ ์ฌ์ฉ๋๋ฉฐ ๋ ์ด์ ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์์์ ๋ํ๋
๐ 3. 3-Way Handshake
TCP๊ฐ ์ฐ๊ฒฐํ ๋ 3-Way Handshake ๊ณผ์ ์ด ๋ฐ์ํ๋ค.
[STEP 1]
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ISN์ ๋ด์ SYN๋ฅผ ๋ณด๋ธ๋ค. (ISN์ ์๋ก์ด TCP ์ฐ๊ฒฐ์ ์ฒซ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ์ ํ ๋น๋ ์์์ ์ํ์ค ๋ฒํธ(์์๋ก๋ 12010)๋ฅผ ๋งํ๋ฉฐ ์ด๋ ์ฅ์น๋ง๋ค ๋ค๋ฅผ ์ ์๋ค.)
[STEP 2]
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ SYN๋ฅผ ์์ ํ๊ณ ์๋ฒ์ ISN์ ๋ณด๋ด๋ฉฐ ์น์ธ๋ฒํธ๋ก ํด๋ผ์ด์ธํธ์ 'ISN + 1'์ ๋ณด๋ธ๋ค.
[STEP 3]
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ 'ISN+1'ํ ๊ฐ์ธ ์น์ธ๋ฒํธ๋ฅผ ๋ด์ ACK๋ฅผ ์๋ฒ์ ๋ณด๋ธ๋ค.
์์ 3๊ฐ์ง ๊ณผ์ ์ด 3-Way HandShake์ด๋ค. ์ด๋ฅผ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ์ํ ๊ด์ ์์ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- ์๋ฒ์์๋ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ์ ์ ์์ ๋ฐ์๋ค์ผ ์ ์๋ LISTEN ์ํ๋ก ๋๊ธฐํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ํต์ ์ ์๋ํ ๋ SYN ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ด๋๋ฐ, ํด๋ผ์ด์ธํธ์์๋ ์ด ์ํ๋ฅผ SYN_SENT๋ผ๊ณ ํ๋ค.
- ํด๋ผ์ด์ธํธ์ SYN๋ฅผ ๋ฐ์ ์๋ฒ๋ SYN-RECEIVE ์ํ๊ฐ ๋๊ณ , SYN+ACK๋ก ์๋ตํ๋ค.
- SYN+ACK ์๋ต์ ๋ฐ์ ํด๋ผ์ด์ธํธ๋ ESTABLISHED ์ํ๊ฐ ๋๊ณ , ๊ทธ์ ๋ํญ ์๋ต์ ์๋ฒ๋ก ๋ณด๋ธ๋ค.
- ์๋ฒ์์๋ ํด๋ผ์ด์ธํธ์ ์๋ต์ ๋ฐ๊ณ ESTABLISHED ์ํ๊ฐ ๋๋ค.
๐ 4. 4-Way Handshake
TCP๊ฐ ์ฐ๊ฒฐ์ ํด์ ํ ๋ 4-Way Handshake ๊ณผ์ ์ด ๋ฐ์ํ๋ค.
[STEP 1]
- ๋จผ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ์ ๋ซ์ผ๋ ค๊ณ ํ ๋ FIN์ผ๋ก ์ค์ ๋ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ธ๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ธ๋ผ์ด์ธํธ๋ FIN_WAIT_1 ์ํ๋ก ๋ค์ด๊ฐ๊ณ ์๋ฒ์ ์๋ต์ ๊ธฐ๋ค๋ฆฐ๋ค.
[STEP 2]
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ก ACK๋ผ๋ ์น์ธ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ธ๋ค.
- ๊ทธ๋ฆฌ๊ณ CLOSE_WAIT ์ํ๋ก ๋ค์ด๊ฐ๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์ผ๋ฉด FIN_WAIN_2 ์ํ๊ฐ ๋๋ค.
[STEP 3]
- ์๋ฒ๋ ACK๋ฅผ ๋ณด๋ด๊ณ ์ผ์ ์๊ฐ ์ดํ์ ํด๋ผ์ด์ธํธ์ FIN์ด๋ผ๋ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ธ๋ค.
[STEP 4]
- ํด๋ผ์ด์ธํธ๋ TIME_WAIT ์ํ๊ฐ ๋๊ณ ๋ค์ ์๋ฒ๋ก ACK๋ฅผ ๋ณด๋ด์ ์๋ฒ๋ CLOSED ์ํ๊ฐ ๋๋ค.
- ์ดํ ํด๋ผ์ด์ธํธ๋ ์ด๋ ์ ๋์ ์๊ฐ์ ๋๊ธฐํ ํ ์ฐ๊ฒฐ์ด ๋ซํ๊ณ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๋ชจ๋ ์์์ ์ฐ๊ฒฐ์ด ํด์ ๋๋ค.
๐ 5. TIME_WAIT
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก๋ถํฐ FIN(์ฐ๊ฒฐ ์ข ๋ฃ ์์ฒญ ํ๋๊ทธ)๋ฅผ ๋ฐ๊ณ ๊ทธ๋ฅ ์ฐ๊ฒฐ์ ๋ซ์ผ๋ฉด ๋์ง ์ ๊ตณ์ด ์ผ์ ์๊ฐ ๋ค์ ๋ซ์๊น?
๋ง์ฝ ํด๋ผ์ด์ธํธ์์ ์ธ์ ์ ์ข ๋ฃ์ํจ ํ ๋ค๋ฆ๊ฒ ๋์ฐฉํ ํจํท ์๊ณ ์ด๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ค๋ฉด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ์ด๋ฌํ ์ง์ฐ ํจํท์ด ๋ฐ์ํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด์ ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ FIN์ ์์ ํ๋๋ผ๋ ์ผ์ ์๊ฐ ์ธ์ ์ ๋จ๊ฒจ๋๊ณ ํน์๋ ํ๋ ๋ง์์ ๋๋จธ์ง ํจํท์ ๊ธฐ๋ค๋ฆฌ๋ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ค.
์ด ๊ณผ์ ์ TIME_WAIT๋ผ ํ๊ณ , 'CeotOS6, ์ฐ๋ถํฌ'์์๋ 60์ด๋ก '์๋์ฐ'๋ 4๋ถ์ผ๋ก ์ค์ ๋์ด ์๋ค.
ํด๋น ๊ธ์
resilient ๋์ '[๋คํธ์ํฌ network] TCP 3-way HandShake & 4-way HandShake',
Evan Moon ๋์ 'TCP์ ํค๋์๋ ์ด๋ค ์ ๋ณด๋ค์ด ๋ด๊ฒจ์๋๊ฑธ๊น?',
kim.svadoz ๋์ '[Network] 07. ํธ๋์ธ์ดํฌ(Handshake)',
์ฃผํ์ฒ ๋์ '๋ฉด์ ์ ์ํ CS ์ ๊ณต์ง์ ๋ ธํธ'
๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค.
'๐ ๋คํธ์ํฌ > ๊ฐ๋ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋์นญํค vs ๊ณต๊ฐํค(๋น๋์นญํค) (0) | 2023.06.30 |
---|---|
TCP vs UDP (0) | 2023.06.16 |
TCP/IP 4๊ณ์ธต (TCP/IP 4 Layer) (0) | 2023.06.12 |
OSI 7๊ณ์ธต (OSI 7 Layer) (0) | 2023.06.12 |
๋คํธ์ํฌ ๊ธฐ๋ณธ ๊ฐ๋ (0) | 2023.01.08 |