Suhee Coding Archive
[๋คํธ์ํฌ] TCP์ 3 way handshake์ 4 way handshake ๋ณธ๋ฌธ
๐TCP ๋์ ๋ฐฉ์
์์ผ ์์ฑ -> 3- way handshake(์ฐ๊ฒฐ) -> ๋ฐ์ดํฐ ์ก์ , ์์ -> 4-way handshake(์ฐ๊ฒฐ ๋๊ธฐ)
TCP ๋ ๋ ํธ์คํธ๊ฐ ๊ตํํ๋ ๋ฐ์ดํฐ์ ์น์ธ ๋ฉ์ธ์ง์ ํ์์ ์ ์ํด , ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ขฐ์ฑ์๊ฒ ์ ๋ฌํ๊ธฐ ์ํด ๋ง๋ค์ด์ค ๊ท์ฝ์ด๋ค.
๋คํธ์ํฌ ์ ๋ก๋ฅผ ํตํด ๋ฐ์ดํฐ๊ฐ ์ ๋ฌ์ด ๋๋๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ณผ์ ์์ ๊ทธ ์์๊ฐ ๋ฐ๋๊ฑฐ๋ ๋ฐ์ดํฐ๊ฐ ์์ค์ด ๋์ด ์ ๋ฌ ๋ ์ ์๋ค. ๊ทธ๋์ TCP๋ ๋ฐ์ดํฐ ํจํท์ ์ผ๋ จ์ ๋ฒํธ๋ฅผ ๋ถ์ฌํจ์ผ๋ก์จ, ๋ฐ์ดํฐ ์์ค์ ์ฐพ์๋ด ๊ต์ ํ๊ณ , ์์๋ฅผ ์ฌ์กฐํฉํด ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ ์ ์๊ฒ ํด์ค๋ค.
๋ฐ์ดํฐ ์ ๋ฌ ๋ณด์ฆ, ์์๋ฅผ ๋ณด์ฅ ํ ์ ์๋ ์ด์ ๋ 3-way handshake ๊ณผ์ ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
๐3-way handshake
์ ํํ ์ ์ก์ ๋ณด์ฅํด์ผํ๊ธฐ ๋๋ฌธ์ ํต์ํ๊ธฐ ์ ๋ ผ๋ฆฌ์ ์ธ ์ ์์ ์ฑ๋ฆฝํ๊ธฐ ์ํด 3-way handshake ๊ณผ์ ์ ์งํํ๋ค.

CLOSED -> ์ฐ๊ฒฐ ์์ฒญ์ ์์ํ์ง ์์๊ธฐ ๋๋ฌธ์ ์๋ฌด๋ฐ ์ฐ๊ฒฐ๋ ์๋ ์ํ
LISTEN -> ํฌํธ๊ฐ ์ด๋ฆฐ ์ํ๋ก ์ฐ๊ฒฐ ์์ฒญ ๋๊ธฐ ์ค์ธ ์ํ
a -> Sequence Number b-> Acknowledgment Number
ACK -> ๋๊ธฐํ ์์ฒญ์ ๋ํ ๋ต๋ณ์ Sequence Number์ +1์ ํด ACK๋ก ๋๋ ค์ค๋ค.
(1) Client์์ Server์๊ฒ SYN(a) ํจํท์ ๋ณด๋ธ๋ค. ์ด ๋ Client์ ์ํ๋ SYN์ ๋ณด๋๋ค๋ SYN_SENT ์ํ๋ก ๋ฐ๋๊ฒ ๋๋ค.
(2) Server์์๋ SYN์ ๋ฐ์๋ค๋ SYN_RECEIVED ์ํ๋ก ๋ฐ๋๋ค. ๊ทธ ํ Client์๊ฒ ์ ๋ฐ์๋ค๋ ์๋ต์ ACK(a+1)๊ณผ SYN(b)๋ฅผ ๋ณด๋ธ๋ค.
(3) Client์์๋ ์ํธ ์ฐ๊ฒฐ์ด ๋ ์ํ์ ESTABLISHED๋ก ๋ฐ๋๋ค. ๊ทธ ํ Server์๊ฒ ACK(b+1)์ ๋ณด๋ธ๋ค. Server์์๋ ACK๋ฅผ ๋ฐ์ ํ์ ESTABLISHED ์ํ๋ก ๋ฐ๋๊ฒ๋๋ค.
์ด๋ ๊ฒ 3๋ฒ์ ํต์ ์ด ์๋ฃ๋๋ฉด ์ฐ๊ฒฐ์ด ์ฑ๋ฆฝ๋๋ค.
๐4-way handshake

(1)์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ TCP ์ฐ๊ฒฐ์ด ๋์ด์๋ ์ํ์์ ํด๋ผ์ด์ธํธ๊ฐ ์ ์์ ๋๊ธฐ ์ํด close( )๋ฅผ ํธ์ถํ๋ค. ํด๋ผ์ด์ธํธ๊ฐ close( )๋ฅผ ํธ์ถํ๋ฉด์ ์๋ฒ์๊ฒ FIN ํจํท์ ๋ณด๋ด๊ฒ ๋๋๋ฐ, ์ด๋ FIN ํจํท์ ์ค์ง์ ์ผ๋ก๋ ACK๋ ํฌํจ๋์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ํด๋ผ์ด์ธํธ๋ FIN_WAIT_1 ์ํ๋ก ๋ค์ด๊ฐ๋ค.
FIN์ ACK๋ฅผ ํฌํจํ๋ ์ด์ ๋ Half-Close ๊ธฐ๋ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ค๊ณ ํ ๋ ์์ ํ ์ข ๋ฃํ์ง ์๊ณ ๋ฐ๋ง ์ข ๋ฃํ๋ค. Half-Close ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ฉด ์ข ๋ฃ ์์ฒญ์๊ฐ ์ฒ์ ๋ณด๋ด๋ FIN ํจํท์ ์น์ธ ๋ฒํธ๋ฅผ ํจ๊ป ๋ด์์ ๋ณด๋ด๊ฒ ๋๋๋ฐ, ์ด๋ ์น์ธ ๋ฒํธ์ ์๋ฏธ๋ "์ผ๋จ ์ฐ๊ฒฐ์ ์ข ๋ฃํ ๊ฑด๋ฐ ๊ท๋ ์ด์ด๋๊ฒ. ์ด ์น์ธ ๋ฒํธ๊น์ง ์ฒ๋ฆฌํ์ผ๋๊น ๋ ๋ณด๋ผ ๊ฑฐ ์์ผ๋ฉด ๋ณด๋ด" ๊ฐ ๋๋ค.์ดํ ์์ ์๊ฐ ๋จ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ณด๋ด๊ณ ๋๋ฉด ๋ค์ ์์ฒญ์์๊ฒ FIN ํจํท์ ๋ณด๋์ผ๋ก์จ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ฒ๋ฆฌ๋์๋ค๋ ์ ํธ FIN๋ฅผ ๋ณด๋ ๋๋ค. ๊ทธ๋ผ ์์ฒญ์๋ ๊ทธ๋ ๋๋จธ์ง ๋ฐ์ ๋ซ์ผ๋ฉด์ ์ข ๋ ์์ ํ๊ฒ ์ฐ๊ฒฐ์ ์ข ๋ฃํ ์ ์๊ฒ ๋๋ค.
(2) ์๋ฒ๋ FIN์ ๋ฐ๊ณ ํ์ธํ๋ค๋ ACK๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ธ๋ค. CLOSE_WAIT ์ํ์ ๋ค์ด๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ ์์ง ๋จ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ๋ง์ ์ ์ก์ ๋ง์น ํ์ close( )๋ฅผ ํธ์ถํ๋ค.
(3) ํด๋ผ์ด์ธํธ์์๋ ์๋ฒ์์ ACK๋ฅผ ๋ฐ์ ํ์ ์๋ฒ๊ฐ ๋จ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๋๋ด๊ณ FIN ํจํท์ ๋ณด๋ผ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ค.
(4) ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ณด๋๋ค๋ฉด, ์๋ฒ๋ ์ด์ ๋ชจ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ๋๋ฌ๋ค๊ณ ์ข ๋ฃ์ ํฉ์ ํ๋ค๋ ๋ป์ผ๋ก ํด๋ผ์ด์ธํธ์๊ฒ FIN ํจํท์ ๋ณด๋ธ ํ์ ์น์ธ ๋ฒํธ๋ฅผ ๋ณด๋ด์ค ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ LAST_ACK ์ํ๋ก ๋ค์ด๊ฐ๋ค.
(5) ํด๋ผ์ด์ธํธ๋ ์๋ฒ์์ FIN ํจํท์ ๋ฐ๊ณ ๋์ ๋ค์ ์๋ฒ์๊ฒ ACK ์๋ต์ ๋ณด๋ธ ํ์ TIME_WAIT ์ํ๋ก ๋ค์ด๊ฐ๋ฉฐ ์ค์ง์ ์ธ ์ข ๋ฃ ๊ณผ์ (CLOSED)์ ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค. ์ด๋ TIME_WAIT ์ํ๋ ์๋์น ์์ ์๋ฌ๋ก ์ธํด ์ฐ๊ฒฐ์ด ๋ฐ๋๋ฝ์ผ๋ก ๋น ์ง๋ ๊ฒ์ ๋ฐฉ์งํ๋๋ฐ, ๋ง์ฝ ์๋ฌ๋ก ์ธํด ์ข ๋ฃ๊ฐ ์ง์ฐ๋๋ค๊ฐ ํ์์ด ์ด๊ณผ๋๋ฉด CLOSED๋ก ๋ค์ด๊ฐ๋ค.
(6) ์๋ฒ๋ ACK๋ฅผ ๋ฐ๊ณ CLOSED ์ํ๋ก ๋ค์ด๊ฐ ์ข ๋ฃํ๊ฒ ๋๋ค.
์ด๋ ๊ฒ 4๋ฒ์ ํต์ ์ด ์๋ฃ๋๋ฉด ์ฐ๊ฒฐ์ด ํด์ ๋๋ค.
๐์ฐธ๊ณ
- ํฌํธ(PORT) ์ํ ์ ๋ณด
- CLOSED: ํฌํธ๊ฐ ๋ซํ ์ํ
- LISTEN: ํฌํธ๊ฐ ์ด๋ฆฐ ์ํ๋ก ์ฐ๊ฒฐ ์์ฒญ ๋๊ธฐ ์ค
- SYN_RCV: SYNC ์์ฒญ์ ๋ฐ๊ณ ์๋๋ฐฉ์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ์ค
- ESTABLISHED: ํฌํธ ์ฐ๊ฒฐ ์ํ
- ํ๋๊ทธ ์ ๋ณด
- TCP Header์๋ CONTROL BIT(ํ๋๊ทธ ๋นํธ, 6bit)๊ฐ ์กด์ฌํ๋ฉฐ, ๊ฐ๊ฐ์ bit๋ "URG-ACK-PSH-RST-SYN-FIN"์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค. ์ฆ, ํด๋น ์์น์ bit๊ฐ 1์ด๋ฉด ํด๋น ํจํท์ด ์ด๋ ํ ๋ด์ฉ์ ๋ด๊ณ ์๋ ํจํท์ธ์ง๋ฅผ ๋ํ๋ธ๋ค.
- SYN(Synchronize Sequence Number) / 000010
- ์ฐ๊ฒฐ ์ค์ . Sequence Number๋ฅผ ๋๋ค์ผ๋ก ์ค์ ํ์ฌ ์ธ์ ์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉํ๋ฉฐ, ์ด๊ธฐ์ Sequence Number๋ฅผ ์ ์กํ๋ค.
- ACK(Acknowledgement) / 010000
- ์๋ต ํ์ธ. ํจํท์ ๋ฐ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- Acknowledgement Number ํ๋๊ฐ ์ ํจํ์ง๋ฅผ ๋ํ๋ธ๋ค.
- ์๋จ ํ๋ก์ธ์ค๊ฐ ์ฌ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค๊ณ ๊ฐ์ ํ๋ฉด ์ต์ด ์ฐ๊ฒฐ ์ค์ ๊ณผ์ ์์ ์ ์ก๋๋ ์ฒซ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์ธํ ๋ชจ๋ ์ธ๊ทธ๋จผํธ์ ACK ๋นํธ๋ 1๋ก ์ง์ ๋๋ค๊ณ ์๊ฐํ ์ ์๋ค.
- FIN(Finish) / 000001
- ์ฐ๊ฒฐ ํด์ . ์ธ์ ์ฐ๊ฒฐ์ ์ข ๋ฃ์ํฌ ๋ ์ฌ์ฉ๋๋ฉฐ, ๋ ์ด์ ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์์์ ์๋ฏธํ๋ค.
'CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋คํธ์ํฌ] ๋ก๋๋ฐธ๋ฐ์ฑ (0) | 2023.01.03 |
|---|---|
| [๋คํธ์ํฌ] IPv6 (0) | 2022.12.28 |
| [๋์์ธ ํจํด] MVVM ํจํด (0) | 2022.12.14 |
| [๋์์ธ ํจํด] MVP ํจํด (0) | 2022.12.14 |
| [๋์์ธ ํจํด] MVC ํจํด (0) | 2022.12.14 |