TCP
์ง๋ ๊ธ์์ TCP๋ ์์ ํ๊ณ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก ํ๋กํ ์ฝ์ด๋ผ๊ณ ๋ค๋ค์๋ค.
๊ทธ๋ ๋ค๋ฉด TCP๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ๋๋ฌธ์ ์์ ํ ๊ฒ์ผ๊น?
์ฐ์ TCP๋ ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ 1๋ 1๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
์ฆ, ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ด๋ค.
3-Way-Handshake
์ด ๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์์ ํ๊ฒ ์ ๋ฌ๋๋ ค๋ฉด ์ฐ๊ฒฐ์ด ํ์คํ๊ฒ ๋์ด์๋์ง ํ์ธํด์ผ ํ ๊ฒ์ด๋ค.
๊ทธ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก "3-Way-Handshake" ์ด๋ค.
์ด๋ฆ์ด 3 way handshake์ธ ์ด์ ๋ 3๋ฒ ์ ํธ๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ์ฐ๊ฒฐ๋์ด ์๋ ์ํ๋ฅผ ํ์ธํ๊ธฐ ๋๋ฌธ์ด๋ค.
1. ํด๋ผ์ด์ธํธ -> ์๋ฒ
ํด๋ผ์ด์ธํธ ์ธก์์ ๋จผ์ ์๋ฒ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด์ ํน์ ์ซ์๊ฐ ๋ด๊ธด ์ ํธ๋ฅผ ๋ณด๋ธ๋ค.
2. ์๋ฒ -> ํด๋ผ์ด์ธํธ
์๋ฒ๋ ํด๋ผ์ด์ธํธ ์ธก์์ ๋ณด๋ธ ํจํท์ ๋ฐ๊ณ ์ ๋ฌ ๋ฐ์๋ค๋ ์ ํธ๋ฅผ ์๋ฒ์๊ฒ ๋ณด๋ธ๋ค.
3. ํด๋ผ์ด์ธํธ -> ์๋ฒ
๋ค์ ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ฒ๊ฐ ์ ๋๋ก ํจํท์ ๋ฐ์๋ค๋ ์ ํธ๋ฅผ ๋ฃ๊ณ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค.
์๋ ๋ธ๋ก๊ทธ์์ ์์ฃผ ๋น์ ๋ฅผ ์ ์ ํ๊ฒ ํด๋์๋๋ฐ "์ ํ"๋ก ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ๊ฐ ์ฝ๋ค.
1. ๋ค๋ ค?
2. ์ ๋ค๋ ค! ๋ ์ด๋?
3. ๋๋ ๋ค๋ ค! ์ด์ ๋งํ ๊ฒ
๊ฐ ๋ฐ๋ก 3-Way-Handshake๊ฐ ๋๋ ๊ฒ์ด๋ค.
SYN๊ณผ ACK
SYN
์ 3-Way-Handshake์์ ํน์ ์ซ์๋ฅผ ๋ณด๋ธ๋ค๊ณ ์ค๋ช ํ๋ค.
๋ฐ๋ก ์ด ํน์ ์ซ์๊ฐ SYN(SYnchronize sequence Number)์ด๋ค.
SYN์ ์์์ ๋๋ค ์ซ์๋ฅผ ์๋ฏธํ๋ฉฐ ํด๋ผ์ด์ธํธ์์ ์๋ฒ์ธก์ ์ฐ๊ฒฐ ํ์ธ์ ์ํ์ฌ ๋ณด๋ด๋ ์ญํ ์ ํ๋ค.
ACK
ACK ๋ํ ํน์ ์ซ์๋ก ์ด๋ฃจ์ด์ ธ ์๋๋ฐ, ์ด๋ SYN์ด ๋ณด๋ธ ์ซ์์ +1์ ํ ์ซ์์ด๋ค.
ACK(ACKnowledgements)๋ ํด๋ผ์ด์ธํธ ์ธก์์ ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์๋ค๋ผ๊ณ ํ์ธ ์์ผ์ฃผ๋ ์ญํ ์ ํ๋ค.
Statement
3-Way-Handshake๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ค๋นํ๋ ์ํ, ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ํ ๋ฑ ์ฌ๋ฌ ์ํ๊ฐ ์กด์ฌํ๋ค.
1. CLOSED
๋ง ๊ทธ๋๋ก ๋ซํ ์ํ์ธ๋ฐ, ์ด๊ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ ์ฐ๊ฒฐ์ด ์๋ ๊ธฐ๋ณธ ์ํ๋ฅผ ์๋ฏธํ๋ค.
2. SYN-SENT
ํด๋ผ์ด์ธํธ ์ธก์์ SYN์ ๋ณด๋๋ค๋ ์ํ๋ก, ์ด ๋ง์ ๋ค๋ฅธ ๋ง๋ก ์๋ฒ์ธก์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ๋ฅผ ์๋ฏธํ๋ค.
3. LISTEN
CLOSED ์ํ์ ์๋ ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ค๋น๊ฐ ๋์ด ๋๊ธฐํ๋ ์ํ๋ฅผ ์๋ฏธํ๋ค.
4. SYN-RECEIVED
ํด๋ผ์ด์ธํธ ์ธก์์ ๋ณด๋ธ SYN์ ์๋ฒ ์ธก์์ ์ ๋ฐ์๋ค๋ ์ํ๋ฅผ ์๋ฏธํ๋ค.
5. ESTABLISHED
์ฐ๊ฒฐ์ด ์ฑ๊ณต์ ์ผ๋ก ๋์๋ค๋ ์ํ๋ฅผ ์๋ฏธํ๋ค.
ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ฒ์ ์๋ต์ ๋ฐ์ผ๋ฉด ํด๋น ์ํ๊ฐ ๋๊ณ , ์๋ฒ ์ธก์์ ์๋ต์ ๋ณด๋ด๊ณ ๋ค์ ํด๋ผ์ด์ธํธ ์ธก์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ฉด ํด๋น ์ํ๊ฐ ๋๋ค.
4-Way-Handshake
์์์ 3-Way-Handshake๋ฅผ ํตํด ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋ํด ์ดํด๋ณด์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ ์ก์ด ๋๋๊ณ ์ด์ ์ฐ๊ฒฐ์ ํด์ ํด์ผ ํ ๋๋ ์ด๋ป๊ฒ ํด์ผํ ๊น?
๋ฐ๋ก "4-Way-Handshake"๋ฅผ ํตํด ์ ์ธก์ ์ฐ๊ฒฐ์ ํด์ ํ๋ค.
4-Way-Handshake๋ ๋ง ๊ทธ๋๋ก 3-Way-Handshake ๋ณด๋ค ์ ํธ๋ฅผ ํ๋ฒ ๋ ์ฃผ๊ณ ๋ฐ์ ์ด 4๋ฒ์ ์ ํธ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
1. ํด๋ผ์ด์ธํธ -> ์๋ฒ
ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ฒ๋ก ์ฐ๊ฒฐ์ ํด์ ํ๊ฒ ๋ค๋ ์ ํธ๋ฅผ ๋ณด๋ธ๋ค.
2. ์๋ฒ -> ํด๋ผ์ด์ธํธ
์๋ฒ ์ธก์์ ํ์ธํ๋ค๋ ์ ํธ๋ฅผ ๋ณด๋ด์ง๋ง, ์์ ์ ์ ์ก์ด ๋๋ ๋๊น์ง ๋๊ธฐํ๋ค.
3. ์๋ฒ -> ํด๋ผ์ด์ธํธ
์๋ฒ ์ธก์์ ์์ ํ ํต์ ์ด ๋๋ ๋ค ํด๋ผ์ด์ธํธ ์ธก์ ์ฐ๊ฒฐ์ ํด์ ํ๊ฒ ๋ค๊ณ ์ ํธ๋ฅผ ๋ณด๋ธ๋ค.
4. ํด๋ผ์ด์ธํธ -> ์๋ฒ
์๋ฒ ์ธก์์ ๋ณด๋ธ ์ฐ๊ฒฐ ํด์ ์ ํธ๋ฅผ ๋ฐ๊ณ ํ์ธํ๋ค๋ ์ ํธ๋ฅผ ๋ณด๋ธ๋ค.
์ด๊ฒ๋ 3-Way-Handshake์ ๊ฐ์ด "์ ํ"๋ก ์ฝ๊ฒ ๋น์ ํ๋ฉด ์๋์ ๊ฐ๋ค.
1. ๋ ์ด์ ์ ํ ๋๊ณ ์ถ์ด
2. ์, ๋ ์ด๊ฑฐ ๊น์ง๋ง ๋งํ๊ณ ๋์๊ฒ
3. ์ด์ ๋ค ๋งํ์ด ๋์!
4. ์, ๊ทธ๋~
๊ฐ 4-Way-Handshake๊ฐ ๋๋ ๊ฒ์ด๋ค.
FIN๊ณผ ACK
FIN
4-Way-Handshake์์ ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ฒ์ ์ฐ๊ฒฐ์ ํด์ ํ๊ฒ ๋ค๊ณ ๋จผ์ ์ ํธ๋ฅผ ๋ณด๋ธ๋ค.
์ด ์ ํธ๊ฐ ๋ฐ๋ก "FIN(FINish)" ์ด๋ค.
FIN message ํน์ FIN flag๋ก ๋ํ๋ด๋ฉฐ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๊ฒ ๋ค๋ ์ ํธ๋ฅผ ์๋ฏธํ๋ค.
ACK
3-Way-Handshake์ ๊ฐ์ด ์์ฒญ์ ์๋ตํ๋ค๋ ์ ํธ๋ฅผ ์๋ฏธํ๋ค.
Statement
3-Way-Handshake์ ๋ง์ฐฌ๊ฐ์ง๋ก 4-Way-Handshake๋ ์ฐ๊ฒฐ์ ํด์ ํ๋ ๊ณผ์ ์์ ์ฐ๊ฒฐ์ ๋๋๋ค ํต๋ณดํ๋ ์ํ, ์ฐ๊ฒฐ ํด์ ๋ฅผ ๋๊ธฐํ๋ ์ํ ๋ฑ ์ฌ๋ฌ ์ํ๊ฐ ์๋ค.
1. FIN-WAIT
ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ฒ์ ์ฐ๊ฒฐ์ ํด์ ํ๊ฒ ๋ค๊ณ ์ ํธ๋ฅผ ๋ณด๋ธ ์ํ๋ฅผ ์๋ฏธํ๋ค.
2. CLOSE-WAIT
์๋ฒ ์ธก์์ ํด๋ผ์ด์ธํธ๋ก ๋ถํฐ ์ฐ๊ฒฐ์ ํด์ ํ๊ฒ ๋ค ์ ํธ๋ฅผ ๋ฐ์ ์ํ์ด๋ฉฐ, ์์ง ์ ์ก์ด ๋๋ ๋๊น์ง ๋๊ธฐํ๋ ์ํ์ด๋ค.
์ด๋ฌํ ๋๊ธฐํ๋ ์ํ๋ ์ ์ก์ด ๋๋์ง ์์ ๋ฐ์ดํฐ์ ์์ค์ ์๋ฐฉํด์ค๋ค.
3. LAST-ACK
์๋ฒ ์ธก์์ ์ ์ก์ด ๋๋๊ณ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก ์ ์ก์ด ์์ ํ ๋๋ฌ๋ค๋ ์ ํธ๋ฅผ ๋ณด๋ธ ์ํ์ด๋ค.
4. TIME-WAIT
ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ฒ ์ธก์ผ๋ก๋ถํฐ ์ ์ก์ด ๋๋ฌ๋ค๋ ์ ํธ๋ฅผ ๋ฐ์ ์ํ์ด๋ฉฐ, ์์ ํ ์ฐ๊ฒฐ์ ํด์ ํ ์ค๋นํ๋ ์ํ์ด๋ค.
CLOSE-WAIT๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ก์ด ๋๋์ง ์์ ๋ฐ์ดํฐ์ ์์ค์ ์๋ฐฉํด์ค๋ค.
5. CLOSED
์ฐ๊ฒฐ์ด ํด์ ๋ ์ํ๋ก ํด๋ผ์ด์ธํธ ์ธก๊ณผ ์๋ฒ ์ธก์ ๊ธฐ๋ณธ ์ํ๊ฐ ๋๋ค.
๋๊ธ