TCP 3(and 4) way handshake
ํธ๋์
ฐ์ดํฌ ๊ณผ์ ์ ๋คํธ์ํฌ ์์์ ์ ๋ขฐ์ฑ ์๋ ์ธ์
์ ๊ตฌ์ถํ๋๋ฐ ์ค์ํ ์ญํ ์ ํ๋ค.
์ด ๊ณผ์ ์ ํตํด ์์ชฝ ํธ์คํธ๋ ์๋ก์ ์กด์ฌ๋ฅผ ํ์ธํ๊ณ , ์ด๊ธฐ ์ํ์ค๋ฅผ ๊ตํํ๋ฉฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์์๋ฅผ ๋ณด์ฅํ์ฌ ๋คํธ์ํฌ ํผ์ก ์ํ๋ ๋ฐ์ดํฐ ์์ค ์์ด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ค.
TCP 3-way handshake

- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์์ SYN ํจํท์ ๋ณด๋
sequence : x (ํจํท์ ์ ์ฅ๋ ์ํ์ค ๋ฒํธ)
- ์๋ฒ๊ฐ SYN(x)์ ๋ฐ๊ณ , ํด๋ผ์ด์ธํธ๋ก ๋ฐ์๋ค๋ ์ ํธ์ธ ACK์ SYN ํจํท์ ๋ณด๋
(seqeunce : y, ACK : x+1)
- ์์ ์ ์ํ์ค ๋ฒํธ
y, ํด๋ผ์ด์ธํธ ์ํ์ค ๋ฒํธ + 1ํ ๊ฐ ACK : x+1
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์๋ต์
ACK(x+1)์ SYN(y) ํจํท์ผ๋ก ๋ฐ๊ณ , ์๋ฒ์ ์ํ์ค ๋ฒํธ + 1 ๊ฐ์
ACK ํ๋์ ์ค์ ํ์ฌ ACK ํจํท์ธ ACK(y+1)์ ์๋ฒ๋ก ๋ณด๋.
๋จ๊ณ๋ก ์ค๋ช
1๋จ๊ณ SYN ํจํท ์ ์ก
2๋จ๊ณ SYN-ACK ํจํท ์๋ต
3๋จ๊ณ ACK ํจํท ์ ์ก
TCP 4-way handshake - ์ฐ๊ฒฐ ํด์
์๋ ์ค์ ๋ก TCP ์ฐ๊ฒฐ ์ข
๋ฃ ๊ณผ์ ์์ ์ฌ์ฉ๋๋ ์ธ์ด๋ก, TCP 3-way๋ ํผ๋๋๊ธฐ ์ฝ๋ค.
TCP 3-way handshake๋ ์ฐ๊ฒฐ์ ์์ํ๋ ๊ณผ์
TCP 4-way handshake๋ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๋ ๊ณผ์
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๋ค๋ FIN(finish) ํ๋๊ทธ๊ฐ ์ค์ ๋ ํจํท์ ์ ์กํ๋ค.
- ์๋ฒ๋ FIN ํจํท์ ๋ฐ๊ณ , ํ์ธํ๋ค๋ ACK์ ํด๋ผ์ด์ธํธ์ ๋ณด๋ธ๋ค.
- ์ด๋ ์๋ฒ๋ CLOSE_WAIT ์ํ๊ฐ ๋๋ค.
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ข
๋ฃ ์์ฒญ์ ์ธ์งํ์ผ๋ ์๋ฒ์์ ์ฒ๋ฆฌํด์ผ ํ ๋ฐ์ดํฐ๊ฐ ์๊ฑฐ๋, ์ดํ๋ฆฌ์ผ์ด์
๋ ๋ฒจ์์ ์ข
๋ฃ ์ ์ฐจ๊ฐ ์ํ์ค์ธ ์ํ.
- ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ณด๋๋ค๋ฉด, ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์๋ค๋ FIN ํจํท์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ธ๋ค.
- ํด๋ผ์ด์ธํธ๋ FIN์ ๋ฐ๊ณ , ํ์ธํ๋ค๋ ACK๋ฅผ ์๋ฒ์๊ฒ ๋ณด๋ธ๋ค.
- ์ด๋ ์๋ฒ๊ฐ ACK๋ฅผ ๋ฐ์ผ๋ฉด ํด๋ผ์ด์ธํธ๋ TIME_WAIT ์ํ๋ก ๋ค์ด๊ฐ๋ค.
- ๋คํธ์ํฌ ์ง์ฐ ๋ฑ์ผ๋ก ๋ฐ์ง๋ชปํ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์์ผ๋ฏ๋ก ๋คํธ์ํฌ๋ฅผ ์ง์ฐํ๋ฉฐ ๊ธฐ๋ค๋ฆผ.
- ์๋ฒ๋ ACK๋ฅผ ๋ฐ์ ์ดํ ์์ผ์ ๋ซ๋๋ค. (Closed)
- TIME_WAIT ์๊ฐ์ด ๋๋๋ฉด ํด๋ผ์ด์ธํธ๋ ๋ซ๋๋ค. (Closed)