[์ปดํจํฐ๋คํธ์ํฌ] TCP์ 3-way/4-way handshake
๐งช Computer Science/Computer Network
3-way handshake
- TCP ํต์ ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด ๋คํธ์ํฌ
์ฐ๊ฒฐ์ ์ค์ (Connection Establish)
ํ๋ ๊ณผ์ - ์ ์ชฝ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ค๋น๊ฐ ๋์๋ค๋ ๊ฒ์ ๋ณด์ฅํ๊ณ , ์ค์ ๋ก ๋ฐ์ดํฐ ์ ๋ฌ์ด ์์ํ๊ธฐ ์ ์ ํ ์ชฝ์์ ๋ค๋ฅธ ์ชฝ์ด ์ค๋น๋์๋ค๋ ๊ฒ์ ์ ์ ์๋๋ก ํ๋ค.
- ์ฆ, TCP/IP ํ๋กํ ์ฝ์ ์ด์ฉํด์ ํต์ ์ ํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ ์ ๋จผ์ ์ ํํ ์ ์ก์ ๋ณด์ฅํ๊ธฐ ์ํด ์๋๋ฐฉ ์ปดํจํฐ์ ์ฌ์ ์ ์ธ์ ์ ์๋ฆฝํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค.
A ํ๋ก์ธ์ค(Client)๊ฐ B ํ๋ก์ธ์ค(Server)์ ์ฐ๊ฒฐ์ ์์ฒญ
1) A โ B: SYN
- ์ ์ ์์ฒญ ํ๋ก์ธ์ค A๊ฐ ์ฐ๊ฒฐ ์์ฒญ ๋ฉ์์ง ์ ์ก(SYN)
- ์ก์ ์๊ฐ ์ต์ด๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ Sequence Number๋ฅผ ์์์ ๋๋ค ์ซ์๋ก ์ง์ ํ๊ณ , SYN ํ๋๊ทธ ๋นํธ๋ฅผ 1๋ก ์ค์ ํ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ๋ค.
- PORT ์ํ -
B: LISTEN
,A: CLOSED
2) B โ A: SYN + ACK
- ์ ์ ์์ฒญ์ ๋ฐ์ ํ๋ก์ธ์ค B๊ฐ ์์ฒญ์ ์๋ฝํ์ผ๋ฉฐ, ์ ์ ์ซใ ํ๋ก์ธ์ค์ธ A๋ ํฌํธ๋ฅผ ์ด์ด ๋ฌ๋ผ๋ ๋ฉ์์ง ์ ์ก(SYN+ACK)
- ์์ ์๋ Acknowledgdn
- PORT ์ํ -
B: SYN_RCV
,A: CLOSED
3) A โ B: ACK
- PORT ์ํ -
B: SYN_RCV
,A: ESTABLISHED
- ๋ง์ง๋ง์ผ๋ก ์ ์ ์์ฒญ ํ๋ก์ธ์ค A๊ฐ ์๋ฝ ํ์ธ์ ๋ณด๋ด ์ฐ๊ฒฐ์ ๋งบ์(ACK)
- ์ด ๋, ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ์ด ๋จ๊ณ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ค.
- PORT ์ํ -
B: ESTABLISHED
,A: ESTABLISHED
4-way handshake
- TCP์
์ฐ๊ฒฐ์ ํด์ (Connection Termination)
ํ๋ ๊ณผ์
A ํ๋ก์ธ์ค(Client)๊ฐ B ํ๋ก์ธ์ค(Server)์ ์ฐ๊ฒฐ ํด์ ๋ฅผ ์์ฒญ
1) A โ B: FIN
- ํ๋ก์ธ์ค A๊ฐ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๊ฒ ๋ค๋ FIN ํ๋๊ทธ๋ฅผ ์ ์ก
- ํ๋ก์ธ์ค B๊ฐ FIN ํ๋๊ทธ๋ก ์๋ตํ๊ธฐ ์ ๊น์ง ์ฐ๊ฒฐ์ ๊ณ์ ์ ์ง
2) B โ A: ACK
- ํ๋ก์ธ์ค B๋ ์ผ๋จ ํ์ธ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์์ ์ ํต์ ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค.(์ด ์ํ๊ฐ TIME_WAIT ์ํ)
- ์์ ์๋ Acknowledgement Number ํ๋๋ฅผ (Sequence Number + 1)๋ก ์ง์ ํ๊ณ , ACK ํ๋๊ทธ ๋นํธ๋ฅผ 1๋ก ์ค์ ํ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ์์ ์ด ์ ์กํ ๋ฐ์ดํฐ๊ฐ ๋จ์์๋ค๋ฉด ์ด์ด์ ๊ณ์ ์ ์กํ๋ค.
3) B โ A: FIN
- ํ๋ก์ธ์ค B๊ฐ ํต์ ์ด ๋๋ฌ์ผ๋ฉด ์ฐ๊ฒฐ ์ข ๋ฃ ์์ฒญ์ ํฉ์ํ๋ค๋ ์๋ฏธ๋ก ํ๋ก์ธ์ค A์๊ฒ FIN ํ๋๊ทธ๋ฅผ ์ ์ก
4) A โ B: ACK
- ํ๋ก์ธ์ค A๋ ํ์ธํ๋ค๋ ๋ฉ์์ง๋ฅผ ์ ์ก
ํฌํธ(PORT) ์ํ ์ ๋ณด
- CLOSED: ํฌํธ๊ฐ ๋ซํ ์ํ
- LISTEN: ํฌํธ๊ฐ ์ด๋ฆฐ ์ํ๋ก ์ฐ๊ฒฐ ์์ฒญ ๋๊ธฐ ์ค
- SYN_RCV: SYNC ์์ฒญ์ ๋ฐ๊ณ ์๋๋ฐฉ์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ์ค
- ESTABLISHED: ํฌํธ ์ฐ๊ฒฐ ์ํ
ํ๋๊ทธ ์ ๋ณด
- TCP Header์๋ CONTROL BIT(ํ๋๊ทธ๋นํธ, 6bit)๊ฐ ์กด์ฌํ๋ฉฐ, ๊ฐ๊ฐ์ bit๋ "URG-ACK-PSH-RST-SYN-FIN"์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค.
- ์ฆ, ํด๋น ์์น์ bit๊ฐ 1์ด๋ฉด ํด๋น ํจํท์ด ์ด๋ ํ ๋ด์ฉ์ ๋ด๊ณ ์๋ ํจํท์ธ์ง๋ฅผ ๋ํ๋ธ๋ค.
- SYN(Synchrosize Sequence Number) / 000010
- ์ฐ๊ฒฐ ์ค์ . Sequence Number๋ฅผ ๋๋ค์ผ๋ก ์ค์ ํ์ฌ ์ธ์ ์ ์ฐ๊ฒฐํ๋๋ฐ ์ฌ์ฉํ๋ฉฐ, ์ด๊ธฐ์ Sequence Number๋ฅผ ์ ์กํ๋ค.
- ACK(Acknowledgement) / 010000
- ์๋ต ํ์ธ. ํจํท์ ๋ฐ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- Acknowledgement Number ํ๋๊ฐ ์ ํจํ์ง๋ฅผ ๋ํ๋ธ๋ค.
- ์๋จ ํ๋ก์ธ์ค๊ฐ ์ฌ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค๊ณ ๊ฐ์ ํ๋ฉด ์ต์ด ์ฐ๊ฒฐ ์ค์ ๊ณผ์ ์์ ์ ์ก๋๋ ์ฒซ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์ธํ ๋ชจ๋ ์ธ๊ทธ๋จผํธ์ ACK ๋นํธ๋ 1๋ก ์ง์ ๋๋ค๊ณ ์๊ฐํ ์ ์๋ค.
- FIN(Finish) / 000001
- ์ฐ๊ฒฐ ํด์ . ์ธ์ ์ฐ๊ฒฐ์ ์ข ๋ฃ์ํฌ ๋ ์ฌ์ฉ๋๋ฉฐ, ๋ ์ด์ ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์์์ ์๋ฏธํ๋ค.
'๐งช Computer Science > Computer Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ปดํจํฐ๋คํธ์ํฌ] GET ๋ฉ์๋์ POST ๋ฉ์๋ (0) | 2021.06.23 |
---|---|
[์ปดํจํฐ๋คํธ์ํฌ] SSL ํต์ ๊ณผ์ (1) | 2021.06.23 |
[์ปดํจํฐ๋คํธ์ํฌ] HTTP์ HTTPS (0) | 2021.06.23 |
[์ปดํจํฐ๋คํธ์ํฌ] TCP์ UDP (0) | 2021.06.18 |
[์ปดํจํฐ๋คํธ์ํฌ] OSI 7๊ณ์ธต (0) | 2021.06.17 |