๐TCP
๐TCP ๋์ ๊ณผ์

- TCP๋ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ์ฐ๊ฒฐ ์ค์ /ํด์ ๊ณผ์ ์ด ํ์ โ handshake ๊ณผ์
๐3 way handshake
TCP ํต์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์ค์ ํ๋ ๊ณผ์

- ์์ชฝ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ค๋น๊ฐ ๋์๋ค๋ ๊ฒ์ ๋ณด์ฅ
๐3 way handshake ๊ณผ์
1. client๋ server์ ์ฐ๊ฒฐ์ ์์ฒญํ๋ SYN ํจํท์ ์ ์ก
SYNํจํท :์ํ์ค ๋๋ฒ+SYN ํ๋๊ทธ- client๋
SYN/ACK์ ๊ธฐ๋ค๋ฆฌ๋SYN_SENT์ํ๊ฐ ๋จ
2. server๋ SYN ์์ฒญ์ ๋ฐ๊ณ client์ ์์ฒญ์ ์๋ฝํ๋ ACK ํจํท์ ์ ์ก
ACKํจํท :์ํ์ค ๋๋ฒ+ACK ๋๋ฒ+SYN+ACK ํ๋๊ทธ- server๋
SYN_RECEIVED์ํ๊ฐ ๋จ
3. client๊ฐ server์๊ฒ ACK์ ์ ์ก
- server๋
ESTABLISHED์ํ๊ฐ ๋จ
4. ์ฐ๊ฒฐ ์ฑ๊ณต
๐๋ฐ์ดํฐ ๊ตํ ๊ณผ์
์๋ก์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์๋ค๋ ์ฌ์ค์ ์๋ฆฌ๊ธฐ ์ํ
ACK ๋๋ฒ๋ฅผ ์ ์ก ์ด ๋, ๊ฐ์ ์๋๋ฐฉ์ผ๋ก๋ถํฐ ๋ฐ์์ํ์ค ๋๋ฒ์ 1์ ๋ํด ์ ์ก โ ์ด ๊ฐ์ ์ด์ฉํด ๋ฐ์ดํฐ ์์ค ํ์ ๊ฐ๋ฅ

1. client์์ server๋ก ๋ฐ์ดํฐ ์ ์ก
- ๋ฐ์ดํฐ :
์ํ์ค ๋๋ฒ+ACK ํ๋๊ทธ
2. server์์ client๋ก ๋ฐ์ดํฐ ์ ์ก
- ๋ฐ์ดํฐ :
์ํ์ค ๋๋ฒ+ACK ๋๋ฒ+ACK ํ๋๊ทธ
๐4 way handshake
TCP ํต์ ์์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ๊ณผ์

- ์ผ๋ฐฉ์ ์ผ๋ก ์ฐ๊ฒฐ์ ์ข ๋ฃํ๊ฒ ๋๋ค๋ฉด, ์๋๋ ์ฐ๊ฒฐ์ด ์ง์๋๊ณ ์๋์ง ์ฐ๊ฒฐ์ด ๋์ด์ก๋์ง๋ฅผ ์ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ํ์์ ์ธ ๊ณผ์
๐4 way handshake ๊ณผ์
1. client๊ฐ server์ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๊ฒ ๋ค๋ FIN ํจํท์ ์ ์ก
- client๋
FIN_WAIT_1์ํ๊ฐ ๋จ
2. server๋ ์ผ๋จ ํ์ธ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๊ณ ์์ ์ ํต์ ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆผ
- server๋
CLOSE_WAIT์ํ๊ฐ ๋จ - client๊ฐ ํจํท์ ๋ฐ๋๋ค๋ฉด
FIN_WAIT_2์ํ๊ฐ ๋จ
3. ์ฐ๊ฒฐ์ ์ข
๋ฃํ ์ค๋น๊ฐ ๋๋ฉด, ์ฐ๊ฒฐ ์ข
๋ฃ๋ฅผ ์ํ ์ค๋น๊ฐ ๋์์์ ์๋ฆฌ๊ธฐ ์ํด client์๊ฒ FIN ํจํท์ ์ ์ก
- server๋
ESTABLISHED์ํ๊ฐ ๋จ
4. client๊ฐ server์๊ฒ ํ์ธํ๋ค๋ ๋ฉ์ธ์ง ๋ณด๋
- client๋
TIME_WAIT์ํ๊ฐ ๋จ - server๊ฐ ํจํท์ ๋ฐ๋๋ค๋ฉด
CLOSED์ํ๊ฐ ๋จ
5. ์ฐ๊ฒฐ ์ข ๋ฃ
- client๋ ์ด๋ ์ ๋์ ์๊ฐ์ ๋๊ธฐ ํ ํ(
TIME_WAIT) client์ server์ ๋ชจ๋ ์์์ ์ฐ๊ฒฐ์ด ํด์ ๋จ
FIN ํจํท๋ณด๋ค ๋ฆ๊ฒ ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ๋ ์ํฉ์ด ๋ฐ์ํ๋ค๋ฉด?
client๋ ์ด๋ฅผ ๋๋นํ๊ธฐ ์ํด
FINํจํท์ ์์ ํ๋๋ผ๋ ์ผ์ ์๊ฐ๋์ ์ธ์ ์ ๋จ๊ฒจ๋์์ด ๊ณผ์ ์
TIME_WAIT์ด๋ผ๊ณ ํจ๐ย ๋ฐ์ดํฐ๊ฐ ๋ฆ๊ฒ ๋์ฐฉํ๋ ์ํฉ
- Routing ์ง์ฐ
- ํจํท ์ ์ค๋ก ์ธํ ์ฌ์ ์ก