TCP๋ ์ ๋ขฐ์ฑ์ ํ๋ณดํ๊ธฐ ์ํด ์ก์์ ์ ์ฌ์ด ์ฐ๊ฒฐ๊ณผ์
๊ณผ ์ฐ๊ฒฐ ํด์ ๊ณผ์
์์
์ ์งํํ๋ค.
+ ๊ธฐ์ด ์ง์
์ ์ด ํ๋๊ทธ(์ฝ๋ ๋นํธ)
์ธ๊ทธ๋จผํธ ํค๋์ ์๋ ์์ญ์ผ๋ก TCP ์ฐ๊ฒฐ ํ์ ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ดํ๊ธฐ ์ํ ๋นํธ์ด๋ค. 6๊ฐ์ ์ข ๋ฅ๊ฐ ์๋๋ฐ TCP ์ฐ๊ฒฐ ๋ฐ ํด์ ์์ ์๋ 3๊ฐ์ ์ข ๋ฅ๋ง ์ฌ์ฉ๋๋ค.
ACK
: Acknowledgement์ ์ฝ์๋ก “์๋ต”์ ์๋ฏธํ๋ ํ๋๊ทธSYN
: Synchronize์ ์ฝ์๋ก “์ฐ๊ฒฐ ์์ฒญ”์ ์๋ฏธํ๋ ํ๋๊ทธFIN
: Finish์ ์ฝ์๋ก “์ฐ๊ฒฐ ํด์ ์์ฒญ”์ ์๋ฏธํ๋ ํ๋๊ทธ
์ด๊ธฐ๊ฐ: 0
/ ํ์ฑ ์: 1
ํฌํธ ์ํ ์ ๋ณด
๊ฐ ํธ์คํธ์ ํฌํธ ์ํ๋ฅผ ์๋ฏธ
CLOSED
: ํฌํธ๊ฐ ๋ซํ ์ํLISTEN
: ํฌํธ๊ฐ ์ด๋ฆฐ ์ํ๋ก ์ฐ๊ฒฐ ์์ฒญ ๋๊ธฐ ์คSYN_SENT
: SYN์์ฒญ์ ๋ณด๋ด๊ณ SYN+ACK ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ์ํSYN_RECEIVED
: SYN ์์ฒญ์ ๋ฐ๊ณ ์๋๋ฐฉ์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ์ํESTABLISHED
: ํฌํธ ์ฐ๊ฒฐ ์ํ
์ฐ๊ฒฐ ๊ณผ์ (3-way handshake)
ํต์ ํ ๋คํธ์ํฌ ์ฅ์น ๊ฐ ๋
ผ๋ฆฌ์ ์ ์(Establish) ์ํ๋ฅผ ๋ง๋ค๊ธฐ ์ํด 3-way handshake
๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. ์ด ๊ณผ์ ์ ์ํด TCP์ ์ธ๊ทธ๋จผํธ ํค๋์ ์กด์ฌํ๋ ํ๋๊ทธ(์ฝ๋ ๋นํธ)์์ ACK
์ SYN
๋นํธ๊ฐ ์ฌ์ฉ๋๋ค.
step1: SYN ๋จ๊ณ
“์ฐ๊ฒฐ ์์ฒญ”
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ํด๋ผ์ด์ธํธISN
์ ๋ด์ SYN
์ ๋ณด๋ธ๋ค.
*ISN์ ์ฒซ ๋ฒ์งธ ํจํท์ ํ ๋น๋ ์์์ ์ํ์ค ๋ฒํธ
SYN : 1
client ISN : 12010 (๋ด ๊ณ ์ ๋ฒํธ)
step2: SYN + ACK ๋จ๊ณ
“ํ์ธ + ๋๋ ์ฐ๊ฒฐ ์์ฒญ”
์๋ฒ๋ ํด๋ผ์ด์ธํธ์ SYN
์ ์์ ํ๊ณ ์๋ฒISN
์ ๋ณด๋ด๋ฉฐ ์น์ธ๋ฒํธ๋ก ํด๋ผ์ด์ธํธISN + 1
์ ๋ด์ ACK
๋ฅผ ๋ณด๋ธ๋ค.
SYN: 1
sever ISN: 5000 (๋ด ๊ณ ์ ๋ฒํธ)
ACK: 1
client ISN: 12011 (๋ ๊ณ ์ ๋ฒํธ + 1 → ํ์ธํ๋จ ๋ป)
step3: ACK ๋จ๊ณ
“ํ์ธ”
ํด๋ผ์ด์ธํธ๋ ์๋ฒISN + 1
์ ๊ฐ์ ์น์ธ๋ฒํธ๋ก ๋ด์ ACK
๋ฅผ ์๋ฒ์ ๋ณด๋ธ๋ค.
ACK: 1
server ISN: 5001 (๋ ๊ณ ์ ๋ฒํธ + 1 → ํ์ธํ๋จ ๋ป)
์ฐ๊ฒฐ ํด์ ๊ณผ์ (4-way handshake)
์ฐ๊ฒฐ์ ํด์ ํ ๋๋ 4๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง 4-way handshake
๊ณผ์ ์ด ๋ฐ์ํ๋ค.
step1: FIN
“ํด์ ์์ฒญ”
ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ ํด์ ํ๊ณ ์ ํ ๋ FIN
์ธ๊ทธ๋จผํธ๋ฅผ ์๋ฒ์ ๋ณด๋ธ๋ค.
๊ทธ๋ฐ ํ ํด๋ผ์ด์ธํธ๋ FIN_WAIT_1
์ํ๋ก ๋ค์ด๊ฐ ์๋ฒ์ ์๋ต์ ๊ธฐ๋ค๋ฆฐ๋ค.
FIN : 1
client: FIN_WAIT_1 (์๋ฒ ์๋ต ๋๊ธฐ)
server: ESTABLISHED
step2: ACK
“ํ์ธ(์์ ์๋ฃ๋๋ฉด ๋งํด์ค๊ฒ)”
์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ACK
๋ฅผ ๋ณด๋ด ํด์ ์์ฒญ์ ํ์ธํ์์ ์๋ฆฐ๋ค.
๊ทธ๋ฐ ํ ์๋ฒ๋ CLOSE_WAIT
์ํ๋ก ๋ค์ด๊ฐ๋ค. ์๋ฒ์ ACK
์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์ผ๋ฉด ํด๋ผ์ด์ธํธ๋ FIN_WAIT_2
์ํ๊ฐ ๋๋ค.
ACK: 1
client: FIN_WAIT_2 (์๋ฒ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋ฃ ๋๊ธฐ)
server: CLOSE_WAIT (์ฒ๋ฆฌ ๋จ์ ๋ฐ์ดํฐ ์๋ค๋ฉด ์ ์ก ๋ง์น ํ close ํธ์ถ)
step3: FIN
“ํด์ ์์ฒญ(๋ชจ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋๋์ด)”
์๋ฒ๋ 2๋จ๊ณ์์ ACK
๋ฅผ ๋ณด๋ด๊ณ ์ผ์ ์๊ฐ ์ดํ์ ํด๋ผ์ด์ธํธ์๊ฒ FIN
์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ธ๋ค. ์๋ฒ๋ก๋ถํฐ ACK
๋ฅผ ๋ฐ์ ํด๋ผ์ด์ธํธ๋ TIME_WAIT
์ํ๊ฐ๋๋ค.
FIN: 1
client: TIME_WAIT (์ผ์ ์๊ฐ ์๋ค๊ฐ ํฌํธ ๋ซ์๊ฒ)
server: LAST_ACK (ํด๋ผ์ด์ธํธ ์น์ธ ๋๊ธฐ)
step4: ACK
“ํ์ธ, ํด์ ํด (๋ ์ข ์๋ค ํด์ ํ ๊ฒ)”TIME_WAIT
์ํ๊ฐ ๋ ํด๋ผ์ด์ธํธ๋ ๋ค์ ์๋ฒ๋ก ACK
๋ฅผ ๋ณด๋ด๊ณ ์ด๋ฅผ ๋ฐ์ ์๋ฒ๋ CLOSED
์ํ๊ฐ ๋๋ค. ํด๋ผ์ด์ธํธ๋ ์ด๋ ์ ๋ TIME_WAIT
์ํ๋ฅผ ์ ์ง(๋๊ธฐ) ํ ํ CLOSED
์ํ๋ก ์ฐ๊ฒฐ์ด ๋ซํ๊ณ ์ด๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๋ชจ๋ ์์ ์ฐ๊ฒฐ์ด ํด์ ๋๋ค.
์ด๋ ํด๋ผ์ด์ธํธ๊ฐ ACK
๋ฅผ ๋ณด๋ด๊ณ ๋ฐ๋ก ํฌํธ๋ฅผ ๋ซ์ง ์๊ณ TIME_WAIT
์ํ๋ก ์ผ์ ์๊ฐ ์ ์งํ๋ ์ด์ ๋ ์ฐ๊ฒฐ ๋ฐ๋๋ฝ ์ํ๋ฅผ ๋ฐฉ์งํ๊ณ ์ ํจ์ด๋ค. ACK
๋ฅผ ๋ณด๋ด์๋ง์ ํด๋ผ์ด์ธํธ๊ฐ ํฌํธ๋ฅผ ๋ซ์๋ฒ๋ ธ๋ค๊ณ ๊ฐ์ ํด ๋ณด์. ์ด๋, ๋ง์ง๋ง์ผ๋ก ๋ณด๋ธ ACK
์ธ๊ทธ๋จผํธ๊ฐ ์ ์ก ๋์ค ์๋ฉธ๋์ ๊ฒฝ์ฐ ์๋ฒ๋ FIN
์ ๋ณด๋ธ ์ดํ ์น์ธ ๋ฉ์์ง๋ฅผ ๋ฐ์ง ๋ชปํด ํฌํธ๊ฐ ์์ง ์ด๋ ค์๋ ์ํ์ด๋ค. ํ์ง๋ง ํด๋ผ์ด์ธํธ ํฌํธ๋ ์ด๋ฏธ ๋ซ์๋ฒ๋ ธ๊ธฐ ๋๋ฌธ์ ์น์ธ ๋ฉ์์ง๋ฅผ ๋ค์ ๋ณด๋ผ ์ ์๊ฒ ๋์ด ์๋ฒ๋ ๊ณ์ ์๋ต ๋ฉ์์ง๋ง ๊ธฐ๋ค๋ฆด ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ์ํ๋ฅผ ๋ฐฉ์งํ๊ณ ์ ACK
์ ์ก์ด ์๋ฌ ๋ฌ์ ๊ฒฝ์ฐ ๋ค์ ์ฌ์ ์ก ๊ฐ๋ฅํ๋๋ก ์ง์ฐ์๊ฐ์ ๋ ๊ฒ์ด๋ค.
ACK: 1
client: TIME_WAIT (์ผ์ ์๊ฐ ํ ํด๋ผ์ด์ธํธ closed)
server: CLOSED
'๐ CS > ๐ Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋คํธ์ํฌ] HTTP (HTTP/1.X, HTTP/2, HTTP/3) (0) | 2023.07.25 |
---|---|
[Network] ๋คํธ์ํฌ ๊ธฐ๊ธฐ (0) | 2023.07.11 |
[Network] TCP vs UDP (0) | 2023.07.10 |
[Network] ๋คํธ์ํฌ ๊ณ์ธต ๊ตฌ์กฐ (OSI 7๊ณ์ธต, TCP/IP 4๊ณ์ธต) (0) | 2023.07.10 |
[Network] ๋คํธ์ํฌ ๊ธฐ์ด (์ฉ์ด, ๋ถ๋ฅ, ํ ํด๋ก์ง) (0) | 2023.07.06 |