๋งค์ผ๋ฉ์ผ ๋ฐฑ์๋ ์ง๋ฌธ์ ์ฐธ๊ณ ํด ๊ฐ์ธ์ ์ผ๋ก ํ์ตํ ๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค.
์ค๋ฅ๊ฐ ์๋ค๋ฉด ์ธ์ ๋ ํผ๋๋ฐฑ ์ฃผ์๋ฉด ๋ฐ๋ก ๋ฐ์ํ๊ฒ ์ต๋๋ค..!
TCP๋?
TCP๋ Transmission Control Protocol์ ์ฝ์๋ก, TCP/IP ๋ชจ๋ธ์ ์ ์ก ๊ณ์ธต(Transport Layer)์์ ์๋ํ๋ ํต์ฌ ํ๋กํ ์ฝ์
=> ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก์ ๋ณด์ฅํ๋ ์ญํ ์ ๋งก์
TCP๊ฐ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์
- ์ฐ๊ฒฐ ์งํฅ(Connection-Oriented) : ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ธฐ ์ ์ ๋ฐ๋์ ์๋๋ฐฉ๊ณผ ํต์ ์ฑ๋(์ธ์
)์ ๋ฏธ๋ฆฌ ์ค์ ํจ
=> ์ด ๊ณผ์ ์ด 3-Way Handshake - ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก(Reliable Data Transfer) : ๋ฐ์ดํฐ๋ฅผ ํจํท ๋จ์๋ก ๋๋๊ณ ๊ฐ ํจํท์ ์์ ๋ฒํธ(Sequence Number)๋ฅผ ๋ถ์ฌํจ
=> ์์ ์ธก์ ์ด ๋ฒํธ๋ฅผ ๋ณด๊ณ ๋น ์ง ํจํท์ด ์๋์ง, ์์๊ฐ ๋ง๋์ง ํ์ธํ๊ณ ํ์ธ ์๋ต(ACK)์ ๋ณด๋
(๋ง์ฝ ํจํท์ด ์ค๊ฐ์ ์ ์ค๋๋ฉด ์ฌ์ ์ก์ ์์ฒญํ์ฌ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅ) - ํ๋ฆ ์ ์ด(Flow Control) : ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ์์ ์ธก์ ์ฒ๋ฆฌ ์๋์ ๋ง์ถฐ ์ก์ ์ธก์ด ๋ฐ์ดํฐ ์ ์ก๋์ ์กฐ์ ํจ
=> ์์ ์ธก์ด ์ฒ์ฒํ ๋ณด๋ด๋ฌ๋ผ๊ณ ์ ํธ๋ฅผ ์ฃผ๋ฉด, ์ก์ ์ธก์ด ์๋๋ฅผ ๋ฆ์ถ๋ ๋ฐฉ์์ผ๋ก ๋์ - ํผ์ก ์ ์ด(Congestion Control) : ๋คํธ์ํฌ ์ ์ฒด์ ํธ๋ํฝ ์ํฉ์ ๊ฐ์งํ๊ณ , ๋คํธ์ํฌ๊ฐ ํผ์กํ๋ค๊ณ ํ๋จ๋๋ฉด ๋ฐ์ดํฐ ์ ์ก ์๋๋ฅผ ์ค์ค๋ก ์ค์ฌ์ ๋คํธ์ํฌ๊ฐ ๋ง๋น๋๋ ๊ฒ์ ๋ฐฉ์งํจ
์ด๋ฌํ ํน์ง ๋๋ฌธ์ TCP๋ ์ด๋ฉ์ผ, ํ์ผ ์ ์ก ๋ฑ๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ์กฐ๊ธ์ด๋ผ๋ ์ ์ค๋๊ฑฐ๋ ์์๊ฐ ๋ฐ๋๋ฉด ์ ๋๋ ์ค์ํ ํต์ ์ ์ฌ์ฉ๋๋ ๋ฐ๋ฉด, ์ค์๊ฐ ์์ ์คํธ๋ฆฌ๋ฐ์ด๋ ์จ๋ผ์ธ ๊ฒ์์ฒ๋ผ ์ฝ๊ฐ์ ๋ฐ์ดํฐ ์์ค์ ๊ฐ์ํ๋๋ผ๋ ์๋๊ฐ ๋ ์ค์ํ ๊ฒฝ์ฐ์๋ UDP๋ผ๋ ํ๋กํ ์ฝ์ด ์ฌ์ฉ๋จ
3-Way Handshake๋?
์์์ ์ค๋ช ํ๋ฏ์ด, TCP๋ ์ฐ๊ฒฐ ์งํฅ ํ๋กํ ์ฝ์ด๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฌด์์ ๋ณด๋ด๋ ๊ฒ์ด ์๋๋ผ, ๋จผ์ ์๋๋ฐฉ๊ณผ ํต์ ํ ์ค๋น๊ฐ ๋์๋์ง ํ์ธํ๊ณ ์๋ก์ ์ํ๋ฅผ ๋๊ธฐํํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋๋ฐ ์ด Handshake๊ณผ์ ์ ํตํด ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๋ค์๊ณผ ๊ฐ์ ์ค์ํ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ์ ๋ขฐํ ์ ์๋ ํต์ ์ฑ๋์ ๋ง๋ฌ
1. ์ฐ๊ฒฐ ์์ฒญ ๋ฐ ์๋ฝ: ์์ชฝ ๋ชจ๋ ํต์ ํ ์์ฌ๊ฐ ์์์ ํ์ธ
2. ์ด๊ธฐ ์์ ๋ฒํธ(ISN) ๊ตํ: ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ์ฌ์ฉํ ๊ณ ์ ํ ์์ ๋ฒํธ๋ฅผ ์๋๋ฐฉ์๊ฒ ์๋ฆฌ๊ณ ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์์๊ฐ ๋ค์์ด๊ฑฐ๋ ์ ์ค๋๋ ๊ฒ์ ๋ฐฉ์งํจ
3. ์ํธ ์ํ ๋๊ธฐํ: ์์ชฝ์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ค๋น๊ฐ ๋์์์ ์ต์ข ์ ์ผ๋ก ํ์ธ
3-Way Handshake์ ๋์ ๋ฐฉ์
3-Way Handshake์ ํต์ฌ ์์
SYN (Synchronize Sequence Numbers)
SYN์ ์ TCP ์ฐ๊ฒฐ์ ์์ํ๊ฒ ๋ค๋ ์ฐ๊ฒฐ ์์ฒญ ํ๋๊ทธ์
=> 3-way handshake์ 1๋จ๊ณ์์ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋
๋ ๋ฐฉํฅ(ํด๋ผ์ด์ธํธ→์๋ฒ, ์๋ฒ→ํด๋ผ์ด์ธํธ)์ด ๊ฐ์ ์์ ์ํ์ค ๋ฒํธ(ISN)๋ฅผ ํฉ์ํ๊ธฐ ์ํ ์ ํธ๋ก SYN์ ๋ฐ์ดํฐ๊ฐ ์์ด๋ ์ํ์ค ๋ฒํธ๋ฅผ 1๋ฐ์ดํธ ์๋นํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋จ.
=> ์ฆ, ์ดํ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ผ ๋ค์ ๋ฐ์ดํธ ๋ฒํธ๋ ISN+1
ISN์ ๊ณ ์ ๊ฐ์ด ์๋ ๋์(์์ธก ์ด๋ ค์ด ๊ฐ) ๋ก ์ก์์ผ๋ก์จ ์์ ์ฐ๊ฒฐ์์ ๋ ๋๋ค ๋ค๋ฆ๊ฒ ๋์ฐฉํ ์ค๋ณต ์ธ๊ทธ๋จผํธ์ ๊ตฌ๋ถํ๊ณ ์ํ์ค ์์ธก์ ์ด์ฉํ ์คํธํ ๊ณต๊ฒฉ์ ์ด๋ ต๊ฒ ํจ
ACK (Acknowledgement)
ACK๋ ์ด ์ธ๊ทธ๋จผํธ์ Acknowledgment Number ํ๋๊ฐ ์ ํจํ๋ค๋ผ๋ ์๋ฏธ์ ํ๋๊ทธ์
=> 3-way handshake์ 2, 3๋จ๊ณ๋ถํฐ๋ฅผ ํฌํจํด, ์ฐ๊ฒฐ ์ฑ๋ฆฝ ์ดํ ์ค๋ ๊ฑฐ์ ๋ชจ๋ ์ธ๊ทธ๋จผํธ๊ฐ ACK ํ๋๊ทธ๋ฅผ ์ผฌ
Sequence Number (์์ ๋ฒํธ)
TCP๊ฐ ์ ๋ฌํ๋ ๋ฐ์ดํธ ์คํธ๋ฆผ์์ ์ด ์ธ๊ทธ๋จผํธ๊ฐ ์ค์ ์ฒซ ๋ฐ์ดํธ์ ์์น๋ฅผ ๋ํ๋ด๋ 32๋นํธ ๋ฒํธ์
- ๋ฐ์ดํธ ๋จ์๋ก ๋ฒํธ๋ฅผ ๋งค๊น(์ธ๊ทธ๋จผํธ ๋จ์ ์๋)
- ๊ฐ ๋ฐฉํฅ๋ณ๋ก ๋ณ๊ฐ๋ก ๊ด๋ฆฌ(ํด๋ผ์ด์ธํธ→์๋ฒ, ์๋ฒ→ํด๋ผ์ด์ธํธ ๊ฐ๊ฐ ์ํ์ค๊ฐ ๋ฐ๋ก ๋์๊ฐ)
- 32๋นํธ์ด๋ฏ๋ก 0~(2³²-1) ์ฌ์ด์์ ์ํ
- SYN/FIN์ ๊ฐ๊ฐ 1๋ฐ์ดํธ ์๋น, ์์ ACK๋ง ๋ด๊ธด ์ธ๊ทธ๋จผํธ๋ ์ํ์ค ์๋น X
(FIN์ TCP์์ ์ฐ๊ฒฐ์ ์ข ๋ฃํ ๋ ์ฐ๋ ์ ์ด ํ๋๊ทธ)
- ์์
- ํด๋ผ์ด์ธํธ ISN = 1000์ด๋ฉด, ์ฒซ SYN์ SEQ=1000
- SYN์ด 1์ ์๋นํ๋, ๋ค์์ ๋ฐ์ดํฐ ๋ณด๋ผ ๋ ์์ SEQ๋ 1001
- ํด๋ผ์ด์ธํธ ISN = 1000์ด๋ฉด, ์ฒซ SYN์ SEQ=1000
Acknowledgement Number (ํ์ธ ์๋ต ๋ฒํธ)
Acknowledgement Number๋ ๋ค์์ ๋ฐ๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ ๋ฐ์ดํธ์ ๋ฒํธ๋ก ๊ทธ ๋ฒํธ ๋ฏธ๋ง์ ์ ๋ถ ์ ๋ฐ์๋ค๋ ๋์ ํ์ธ์
๊ณ์ฐ ๋ฐฉ์
- ๋ด๊ฐ ๋ฐฉ๊ธ ๋ฐ์ ์๋ ์ธ๊ทธ๋จผํธ๊ฐ SEQ = X๋ถํฐ L๋ฐ์ดํธ์ ๋ฐ์ดํฐ๋ฅผ ์ค์๋ค๋ฉด, ๋ด๊ฐ ๋๋ ค๋ณด๋ผ ACK ๋ฒํธ๋ X + L์
- ๋ง์ฝ ๊ทธ ์ธ๊ทธ๋จผํธ์ SYN/FIN์ด ์์๋ค๋ฉด ๊ฐ๊ฐ +1์ ์ถ๊ฐ(SYN/FIN์ 1๋ฐ์ดํธ๋ก ์น๋ฏ๋ก)
๋์ ACK๋ผ์ ์ค๊ฐ์ ๋น ์ง(์์ค๋) ๊ตฌ๊ฐ์ด ์์ผ๋ฉด ๊ทธ ์ง์ ๋ถํฐ๋ ๋ชป ๋ฐ์๋ค๊ณ ๊ฐ์ฃผํ๊ณ ๋์ผํ ACK ๋ฒํธ๋ฅผ ๋ฐ๋ณต(์ค๋ณต ACK) → ์ก์ ์๊ฐ ์์ค์ ๋์น์ฑ๊ณ ์ฌ์ ์ก ํธ๋ฆฌ๊ฑฐ
=> ์ด ๋ SACK(์ ํ์ ์๋ต, TCP ์ต์
์)์ ์ฐ๋ฉด ์์ค๋์ง ์์ ๋ฐ์ดํฐ ๋ธ๋ก์ ๊ตฌ์ฒด์ ์ผ๋ก ๋ณด๋ด์ค์, ์ก์ ์๊ฐ ์์ด๋ฒ๋ฆฐ ๋ถ๋ถ๋ง ์ฌ์ ์กํ๊ฒ ํด์ค
(์ฌ์ ์ก ํจ์จ์ ๋์ผ ์ ์์)
ACK๋ ํ๋๊ทธ ์ด๋ฆ์ด๊ณ , Acknowlegment Number๋ ํ๋ ๊ฐ์
=> ํ๋๊ทธ๊ฐ ์ผ์ ธ ์์ด์ผ ๊ทธ ์ซ์๊ฐ ์๋ฏธ๊ฐ ์์
3-way Handshake ์์
ํด๋ผ์ด์ธํธ ISN = 1000, ์๋ฒ ISN = 4000๋ก ๊ฐ์
- ํด๋ผ์ด์ธํธ → ์๋ฒ : SYN, SEQ=1000
(SYN์ด 1 ๋ฐ์ดํธ ์๋น -> ํด๋ผ์ด์ธํธ์ ๋ค์ SEQ๋ 1001) - ์๋ฒ → ํด๋ผ์ด์ธํธ : SYN+ACK, SEQ=4000, ACK=1001
(์๋ฒ SYN๋ 1 ์๋น -> ์๋ฒ ๋ค์ SEQ๋ 4001) - ํด๋ผ์ด์ธํธ → ์๋ฒ : ACK, SEQ=1001, ACK=4001
(์๋ฒ์ SYN์ ์ ๋ฐ์๊ณ ๋ค์์ 4001์ ๊ธฐ๋)
3-Way Handshake์ ๋จ๊ณ
1๋จ๊ณ : ํด๋ผ์ด์ธํธ → ์๋ฒ (SYN)
ํด๋ผ์ด์ธํธ์ ๋์
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์ ์์ ์์ฒญํ๊ธฐ ์ํด TCP ์ธ๊ทธ๋จผํธ๋ฅผ ์์ฑํจ
- SYN ํ๋๊ทธ๋ฅผ 1๋ก ์ค์ (์ฐ๊ฒฐ ์์ฒญ์ ์๋ฏธ)
- ์์์ ์ด๊ธฐ ์์ ๋ฒํธ(ISN)๋ฅผ ์์ฑํ์ฌ Sequence Number ํ๋์ ๋ด์ ๋ณด๋
- ์ด ์ธ๊ทธ๋จผํธ๋ฅผ ์๋ฒ๋ก ์ ์กํ ํ, ํด๋ผ์ด์ธํธ๋ SYN-SENT ์ํ๊ฐ ๋์ด ์๋ฒ์ ์๋ต์ ๊ธฐ๋ค๋ฆผ
2๋จ๊ณ: ์๋ฒ → ํด๋ผ์ด์ธํธ (SYN + ACK)
์๋ฒ์ ๋์
- ์๋ฒ๋ LISTEN ์ํ์์ ํด๋ผ์ด์ธํธ์ SYN ์์ฒญ์ ๋ฐ์
- ์๋ฒ๋ ์์ฒญ์ ์๋ฝํ๊ณ , ์๋ต ์ธ๊ทธ๋จผํธ๋ฅผ ์์ฑ
- SYN ํ๋๊ทธ๋ฅผ 1๋ก ์ค์
=> ์๋ฒ ์์ ๋ ์ฐ๊ฒฐ์ ์์ํ๊ฒ ๋ค๋ ์๋ฏธ - ACK ํ๋๊ทธ๋ฅผ 1๋ก ์ค์
=> ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ๋ฐ์๋ค๋ ์๋ฏธ - Acknowledgement Number ํ๋์ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ Sequence Number + 1 ๊ฐ์ ๋ด์
- ์๋ฒ ์์ ๋ง์ ์์์ ISN์ ์์ฑํ์ฌ Sequence Number ํ๋์ ๋ด์
- ์ด ์ธ๊ทธ๋จผํธ๋ฅผ ํด๋ผ์ด์ธํธ๋ก ์ ์กํ ํ, ์๋ฒ๋ SYN-RECEIVED ์ํ๊ฐ ๋ฉ๋๋ค.
3๋จ๊ณ: ํด๋ผ์ด์ธํธ → ์๋ฒ (ACK)
ํด๋ผ์ด์ธํธ์ ๋์
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋ณด๋ธ SYN+ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์
- Acknowledgement Number๊ฐ ์์ ์ด ๋ณด๋๋ seq + 1 ๊ณผ ์ผ์นํ๋์ง ํ์ธํ์ฌ ์๋ฒ๊ฐ ์์ ์ ์์ฒญ์ ์๋ตํ์์ ํ์ธ
- ์๋ฒ์ ์ฐ๊ฒฐ ์์ฒญ(SYN)์ ๋ํ ํ์ธ ์๋ต์ผ๋ก ๋ค์ ์ธ๊ทธ๋จผํธ๋ฅผ ์์ฑ
- ACK ํ๋๊ทธ๋ฅผ 1๋ก ์ค์
- Acknowledgement Number ํ๋์ ์๋ฒ๊ฐ ๋ณด๋ธ Sequence Number + 1 ๊ฐ์ ๋ด์
- ์ด ์ธ๊ทธ๋จผํธ๋ฅผ ์๋ฒ๋ก ์ ์กํ๊ณ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ ์ํ๋ ESTABLISHED๊ฐ ๋จ
์๋ฒ์ ๋์
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ๊ณ , Acknowledgement Number๊ฐ ์์ ์ด ๋ณด๋๋ seq + 1 ๊ณผ ์ผ์นํ๋์ง ํ์ธ
- ํ์ธ์ด ์๋ฃ๋๋ฉด ์๋ฒ์ ์ฐ๊ฒฐ ์ํ๋ ESTABLISHED๋ก ๋ณ๊ฒฝ๋จ
์ด 3๊ฐ์ง ๋จ๊ณ๋ฅผ ๋ชจ๋ ๊ฑฐ์น๋ฉด, ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ ๋ขฐํ ์ ์๋ ์๋ฐฉํฅ ํต์ ์ฑ๋์ด ์ด๋ฆฌ๊ณ , ์ค์ ๋ฐ์ดํฐ(HTTP ์์ฒญ/์๋ต ๋ฑ)๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์์ํจ
4-Way Handshake?
TCP ์ฐ๊ฒฐ์ ์์ ํ๊ฒ ์ข ๋ฃํ๊ธฐ ์ํ 4-Way Handshake๋ผ๋ ์ ์ฐจ๋ ์กด์ฌํจ
=> ํ์ชฝ์ด ์ผ๋ฐฉ์ ์ผ๋ก ๋๋ ๊ฒ์ด ์๋๋ผ, ์์ชฝ ๋ชจ๋ ํ์ธํ๋ฉฐ ์ฐ๊ฒฐ์ ์์ฐจ์ ์ผ๋ก ๋ซ๋ ๊ณผ์ ์
๊ฐ๋จํ๊ฒ ์ดํด๋ณด๋ฉด
์ฐ๊ฒฐ์ ๋จผ์ ๋๊ณ ์ ํ๋ ์ชฝ์ ํด๋ผ์ด์ธํธ, ์๋๋ฐฉ์ ์๋ฒ๋ผ๊ณ ๊ฐ์ ํ์ ๋
- ํด๋ผ์ด์ธํธ → ์๋ฒ (FIN)
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์ฐ๊ฒฐ ์ข
๋ฃ๋ฅผ ์๋ฆฌ๋ FIN (Finish) ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ํด๋ผ์ด์ธํธ๋ FIN_WAIT_1 ์ํ๊ฐ ๋จ
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์ฐ๊ฒฐ ์ข
๋ฃ๋ฅผ ์๋ฆฌ๋ FIN (Finish) ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ํด๋ผ์ด์ธํธ๋ FIN_WAIT_1 ์ํ๊ฐ ๋จ
- ์๋ฒ → ํด๋ผ์ด์ธํธ (ACK)
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ FIN์ ๋ฐ์๋ค๋ ํ์ธ ACK (Acknowledgement) ๋ฉ์์ง๋ฅผ ๋ณด๋
=> ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก์ ํต์ ์ ๋ซํ - ํ์ง๋ง ์๋ฒ๋ ์์ง ์ฒ๋ฆฌํ๊ณ ๋จ์ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์์ผ๋ฏ๋ก, ๋ชจ๋ ๋ณด๋ผ ๋๊น์ง ์ ์ ์ฐ๊ฒฐ์ ์ ์งํจ
=> ์ด๋ ์๋ฒ๋ CLOSE_WAIT ์ํ๊ฐ ๋จ
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ FIN์ ๋ฐ์๋ค๋ ํ์ธ ACK (Acknowledgement) ๋ฉ์์ง๋ฅผ ๋ณด๋
- ์๋ฒ → ํด๋ผ์ด์ธํธ (FIN)
- ์๋ฒ๊ฐ ์์ ์ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก์ ๋ง์น๋ฉด, ํด๋ผ์ด์ธํธ์๊ฒ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๊ฒ ๋ค๋ FIN ๋ฉ์์ง๋ฅผ ๋ณด๋
=> ์๋ฒ๋ LAST_ACK ์ํ๊ฐ ๋จ
- ์๋ฒ๊ฐ ์์ ์ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก์ ๋ง์น๋ฉด, ํด๋ผ์ด์ธํธ์๊ฒ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๊ฒ ๋ค๋ FIN ๋ฉ์์ง๋ฅผ ๋ณด๋
- ํด๋ผ์ด์ธํธ → ์๋ฒ (ACK)
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ FIN์ ๋ฐ์๋ค๋ ๋ง์ง๋ง ํ์ธ ACK ๋ฉ์์ง๋ฅผ ๋ณด๋
=> ์๋ฒ๋ ์ด ACK๋ฅผ ๋ฐ์ผ๋ฉด ์ฆ์ ์ฐ๊ฒฐ์ ๋ซ๊ณ ํด๋ผ์ด์ธํธ๋ ํน์ ๋ชจ๋ฅผ ๋คํธ์ํฌ ์ค๋ฅ์ ๋๋นํด ์ ์ ๊ธฐ๋ค๋ฆฐ ํ(TIME_WAIT ์ํ) ์ฐ๊ฒฐ์ ์์ ํ ๋ซ์
(ํน์ ๋คํธ์ํฌ ๋ฌธ์ ๋ก ๋ง์ง๋ง ACK๊ฐ ์์ค๋ ์ ์์ผ๋ ์ฌ์ ์ก์ ๋์ํ๊ธฐ ์ํด)
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ FIN์ ๋ฐ์๋ค๋ ๋ง์ง๋ง ํ์ธ ACK ๋ฉ์์ง๋ฅผ ๋ณด๋
์ด์ฒ๋ผ ์๋ฐฉํฅ์ผ๋ก ๊ฐ๊ฐ ์ข ๋ฃ ์์ฌ๋ฅผ ๋ฌป๊ณ ๋ตํ๋ 4๋จ๊ณ ๊ณผ์ ์ ํตํด ๋ฐ์ดํฐ ์ ์ค ์์ด ์์ ํ๊ฒ ์ฐ๊ฒฐ์ด ์ข ๋ฃ๋๋ ๊ฒ์
'๐ป CS > ๋งค์ผ๋ฉ์ผ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ์ฒ์ ์ ๊ทผํ ๋์ ๊ณผ์ (0) | 2025.08.24 |
|---|---|
| ๋๊ธฐ, ๋น๋๊ธฐ / ๋ธ๋กํน, ๋ ผ๋ธ๋กํน (@Async) (3) | 2025.08.16 |
| ๋์ผ์ฑ๊ณผ ๋๋ฑ์ฑ : == ์ equals() (3) | 2025.08.08 |
| ํฐ์บฃ(Tomcat)์ด๋? (5) | 2025.08.05 |
| ์์ ๋ณต์ฌ์ ๊น์ ๋ณต์ฌ์ ์ฐจ์ด (4) | 2025.08.04 |