Search

TCP

TCP๋ž€?

TCP๋Š” OSI 4๊ณ„์ธต ์ „์†ก ๊ณ„์ธต์— ์†ํ•˜๋Š” ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
์ธํ„ฐ๋„ท์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ ๋ขฐ์„ฑ ์žˆ๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ๊ฒฐ ์ง€ํ–ฅํ˜• ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

ํŠน์ง•

โ€ข
์—ฐ๊ฒฐ ์ง€ํ–ฅ์  : ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•œ๋‹ค. ์ด ๋•Œ 3-way handshaking์„ ์‚ฌ์šฉํ•œ๋‹ค.
โ€ข
์‹ ๋ขฐ์„ฑ : ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜๊ฑฐ๋‚˜ ์†์ƒ๋˜์—ˆ์„ ๋•Œ ์ด๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์žฌ์ „์†กํ•œ๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹  ํ–ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
โ€ข
์ˆœ์„œ๋ณด์žฅ : ํŒจํ‚ท์˜ ์ „์†ก ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋œ๋‹ค.
โ€ข
ํ๋ฆ„ ์ œ์–ด : ์†ก์‹ ์ž๊ฐ€ ์ˆ˜์‹ ์ž์˜ ์ฒ˜๋ฆฌ ์†๋„์— ๋งž์ถฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.

TCP ํ•ธ๋“œ์…ฐ์ดํ‚น

TCP๋Š” ์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์†ก์‹ ๋ถ€์™€ ์ˆ˜์‹ ๋ถ€๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.
์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•  ๋•Œ๋Š” 3-way handshaking, ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•  ๋•Œ๋Š” 4-way handshaking์„ ํ•œ๋‹ค.

3-way handshaking

3-way handshaking์€ TCP ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์ „์— ์„œ๋กœ๋ฅผ ์ธ์‹ํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ์ค€๋น„ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
1.
์†ก์‹ ์ž Client๋Š” SYN์„ ์ˆ˜์‹ ๋ถ€์— ๋ณด๋‚ธ๋‹ค. SYN๋Š” Synchronization(๋™๊ธฐํ™”)๋ฅผ ์˜๋ฏธํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๋•Œ ์†ก์‹ ์ž๋Š” ์ž์‹ ์˜ Sequence Number๋ฅผ ํฌํ•จํ•˜์—ฌ SYN ํŒจํ‚ท์„ ๋ณด๋‚ธ๋‹ค. (SYN, seq : 100)
2.
์ˆ˜์‹ ์ž Server๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ  ์ด๋ฅผ ์Šน์ธ(ACK)ํ•˜๋ฉฐ ์†ก์‹ ์ž์˜ seq์— +1์„ ํ•˜์—ฌ ๋ณด๋‚ด๊ณ , ๋™์‹œ์˜ ์ž์‹ ์˜ Sequence Number๋ฅผ SYN ํŒจํ‚ท์— ํฌํ•จํ•˜์—ฌ ๋ณด๋‚ธ๋‹ค. (SYN-ACK, seq: 200, ack: 101)
3.
์†ก์‹ ์ž Client๊ฐ€ ์„œ๋ฒ„์˜ SYN์„ ํ™•์ธ(ACK)ํ•˜๋ฉด ์—ฐ๊ฒฐ์ด ์„ฑ๋ฆฝ๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ์ธ ESTABLLISHED ์ƒํƒœ๊ฐ€ ๋˜๋ฉฐ TCP ์—ฐ๊ฒฐ์ด ์™„์ „ํžˆ ์„ฑ๋ฆฝ๋œ๋‹ค. ์†ก์‹ ์ž๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ACK์—๋Š” ์ƒ๋Œ€์˜ seq์— +1์„ ํ•ด์„œ ๋ณด๋‚ด๊ณ  ์ž์‹ ์˜ seq์ธ 101์„ ๋ณด๋‚ธ๋‹ค. (ACK, seq:101, ack: 201) ์ˆ˜์‹ ์ž Server๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ESTABLLISHED ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

4-way handshaking

4-way handshaking์€ TCP๊ฐ€ ์—ฐ๊ฒฐ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ข…๋ฃŒํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •์ด๋‹ค. 4๋ฒˆ์˜ ํŒจํ‚ท์ด ์˜ค๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฆ„์ด ๋ถ™์—ˆ๊ณ  ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ๋งˆ๋ฌด๋ฆฌ์™€ ๋ฆฌ์†Œ์Šค ํ•ด์ œ๋ฅผ ์œ„ํ•œ ๋‹จ๊ณ„์ด๋‹ค.
1.
์†ก์‹ ์ž Client๊ฐ€ ์ˆ˜์‹ ์ž Server์™€์˜ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๋ ค๊ณ  FIN ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค.
2.
Server๊ฐ€ Clinet๋กœ๋ถ€ํ„ฐ FIN ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์œผ๋ฉด ์ด์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ACK๋ฅผ ๋ณด๋‚ธ๋‹ค. ์ด ๋•Œ Server๋Š” CLOSE_WAIT ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. Server๋Š” ACK๋ฅผ ๋ณด๋‚ธ ํ›„ ์•ฑ์„ ์ข…๋ฃŒํ•˜๋Š” ๋“ฑ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์„ ํ•œ๋‹ค. Client๋Š” Server์—์„œ ๋ณด๋‚ธ ACK๋ฅผ ๋ฐ›๊ณ  ๋‚œ ํ›„ FIN_WAIT2 ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
3.
Server๋Š” ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•  ์ค€๋น„๊ฐ€ ๋๋‚˜๋ฉด Client์— FIN ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  LAST_WAIT ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
4.
Client๋Š” Server๋กœ ๋ถ€ํ„ฐ ๋ฐ›์€ FIN ๋ฉ”์„ธ์ง€์— ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ACK ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  TIME_WAIT ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ๊ทธ ํ›„ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด CLOSED ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ์ผ์ •์‹œ๊ฐ„ ๋™์•ˆ TIME_WAIT ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ด์œ ๋Š” FIN ๋ฉ”์„ธ์ง€ ์ „์— ๋ณด๋‚ธ ํŒจํ‚ท์ด FIN ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ๋ณด๋‹ค ์ง€์—ฐ๋˜์–ด ์œ ์‹ค๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋‹ค. Server๋Š” Client๋กœ๋ถ€ํ„ฐ ACK๋ฅผ ๋ฐ›์œผ๋ฉด CLOSED ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.