TCP

TCP (Transmission Control Protocol)

  • ํŒจํ‚ท ์œ ์‹ค ๋ฌธ์ œ ํ•ด๊ฒฐ

  • ์‹ ๋ขฐ์„ฑ ๋ณด์žฅ

TCP ํ—ค๋”

  • IPํŒจํ‚ท์„ ๋ฐ์ดํ„ฐ ์˜์—ญ์— ๋‹ด๊ณ , TCP ํ—ค๋”๋ฅผ ๋ถ™์ž„

  • ํฌํ•จ ๋‚ด์šฉ : ๋ฐœ์‹ ์ง€ ์ฃผ์†Œ, ๋ชฉ์ ์ง€ ์ฃผ์†Œ, ์‹œํ€€์Šค ๋ฒˆํ˜ธ, ์œˆ๋„ ํฌ๊ธฐ, ํ”Œ๋ž˜๊ทธ

ํ”Œ๋ž˜๊ทธ (flag)

  • ACK(Acknowledgement) : ์•ž์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜ ์ฒ˜๋ฆฌํ–ˆ๋‹ค๋Š” ์˜๋ฏธ

  • SYN(Synchronize) : ๋‚˜๋„ ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ์—ฐ๊ฒฐํ•ด๋„ ๋˜๋Š”์ง€ ์—ฐ๊ฒฐ ์š”์ฒญํ•˜๋Š” ์˜๋ฏธ

  • FIN(Finish) : ํ†ต์‹ ์ด ๋งˆ๋ฌด๋ฆฌ๋˜์–ด ์—ฐ๊ฒฐ์˜ ํ•ด์ œ๋ฅผ ์š”์ฒญํ•˜๋Š” ํ”Œ๋ž˜๊ทธ

์—ฐ๊ฒฐํ˜• ํ”„๋กœํ† ์ฝœ

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ํ†ต์‹ ํ•  ์ค€๋น„๊ฐ€ ๋๋Š”์ง€ ํ™•์ธํ•จ

3๋ฐฉํ–ฅ ํ•ธ๋“œ์…ฐ์ดํฌ(3-way handshake)

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ SYN ํ”Œ๋ž˜๊ทธ๋ฅผ ์”Œ์›Œ์„œ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ์‹œ๋„ํ•จ. ํด๋ผ์ด์–ธํŠธ๋Š” SYN_SENT ์ƒํƒœ๊ฐ€ ๋จ

  2. ์„œ๋ฒ„๋Š” ์—ฐ๊ฒฐ์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ACK, SYN ํ”Œ๋ž˜๊ทธ๋ฅผ ์”Œ์›Œ์„œ ํŒจํ‚ท์„ ๋ณด๋ƒ„. ์„œ๋ฒ„๋Š” SYN_RECEIVED ์ƒํƒœ๊ฐ€ ๋จ

  3. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ ๋ฐ›์€ ACK, SYNํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ๋Š” ํŒจํ‚ท์„ ํ™•์ธํ•˜๋ฉด, ACK ํ”Œ๋ž˜๊ทธ๋ฅผ ์”Œ์šด ํŒจํ‚ท์„ ๋ณด๋‚ด์„œ ์‘๋‹ตํ•จ. ํด๋ผ์ด์–ธํŠธ๋Š” ESTABLISHED ์ƒํƒœ๊ฐ€ ๋จ

  4. ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ACK์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด ์„œ๋ฒ„๋Š” ESTABLISHED ์ƒํƒœ๊ฐ€ ๋จ

4๋ฐฉํ–ฅ ํ•ธ๋“œ์…ฐ์ดํฌ(4-way handshake)

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ํ•œํ…Œ FIN์„ ๋ณด๋ƒ„. ํด๋ผ์ด์–ธํŠธ๋Š” FIN_WAIT ์ƒํƒœ๊ฐ€ ๋จ

  2. ์„œ๋ฒ„๋Š” ACK๋กœ ์‘๋‹ตํ•˜๊ณ  CLOSE_WAIT ํ•จ

  3. ์„œ๋ฒ„๋Š” ๋ฏธ์ฒ˜ ๋ณด๋‚ด์ง€ ๋ชปํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋งˆ์ € ๋ณด๋ƒ„ (์—ฌ์ „ํžˆ CLOSE_WAIT ์ƒํƒœ)

  4. ์„œ๋ฒ„๋Š” FIN์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด๊ณ , ํด๋ผ์ด์–ธํŠธ์˜ ๋งˆ์ง€๋ง‰ ACK๋ฅผ ๊ธฐ๋‹ค๋ฆผ (LAST_ACK ์ƒํƒœ๊ฐ€ ๋จ)

  5. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ ACKํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‹ด๊ธด ํŒจํ‚ท์„ ๋ณด๋‚ด ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•จ.

  6. ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฏธ์ฒ˜ ๋ฐ›์ง€ ๋ชปํ•œ ํŒจํ‚ท์ด ๋“ค์–ด์˜ค๋Š” ๋“ฑ ํ˜น์‹œ๋ชจ๋ฅผ ์ƒํ™ฉ์— ๋Œ€๋น„ํ•ด ์ž ์‹œ ๊ธฐ๋‹ค๋ฆผ (TIME_WAIT)

  7. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๋งˆ์ง€๋ง‰ ACK๋ฅผ ๋ฐ›์œผ๋ฉด CLOSE ์ƒํƒœ๊ฐ€ ๋จ

  8. ์ผ์ • ์‹œ๊ฐ„ ๊ธฐ๋‹ค๋ฆฐ ํด๋ผ์ด์–ธํŠธ๋„ CLOSE ์ƒํƒœ๊ฐ€ ๋จ

ํ๋ฆ„์ œ์–ด (flow control)

์˜๋ฏธ

  • ์ „์†ก์ž์™€ ์ˆ˜์‹ ์ž ๊ฐ„ ๋ฐ์ดํ„ฐ ์†๋„ ์ฐจ์ด ๋ฐœ์ƒ๊ฐ€๋Šฅ

  • ์ „์†ก์ž๊ฐ€ ์ˆ˜์‹ ์ž๋ณด๋‹ค ๋น ๋ฅด๋ฉด ์†์‹ค/์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ

  • ๋ณด๋‚ด๋Š” ์ชฝ์ด ๋ฐ›๋Š” ์ชฝ์˜ ์†๋„์— ๋งž์ถฐ์„œ ์ฃผ๋Š” ๊ฒƒ

๋ฐฉ์‹ 1 : ์ •์ง€-๋Œ€๊ธฐ ๋ฐฉ์‹ (stop and wait)

  • ๋งค ํŒจํ‚ท์— ๋Œ€ํ•ด ์ „์†กํ•˜๊ณ  ํ™•์ธ ์‘๋‹ต์„ ๋ฐ›์Œ

  • ์ „์†ก์ž๋Š” ํ™•์ธ ์‘๋‹ต์„ ๋ฐ›์€ ๋’ค ๋‹ค์Œ ํŒจํ‚ท์„ ์ „์†กํ•จ. ์ผ์ •์‹œ๊ฐ„ ์‘๋‹ต์ด ์•ˆ์˜ค๋ฉด ํ•ด๋‹น ํŒจํ‚ท์ด ์œ ์‹ค ๋๋‹ค๊ณ  ํŒ๋‹จํ•˜๊ณ  ๋‹ค์‹œ ๋ณด๋ƒ„

  • ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ์ž˜ ์•ˆ์”€

๋ฐฉ์‹ 2 : ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„ (sliding window)

  • ์ „์†ก์ž๋Š” ์ˆ˜์‹ ์ž๊ฐ€ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋งŒํผ์˜ ํฌ๊ธฐ๋งŒํผ ํ•œ๋ฒˆ์— ์ˆœ์„œ๋Œ€๋กœ ์ „์†กํ•จ

  • ๊ทธ ํฌ๊ธฐ๋ฅผ ์œˆ๋„ ํฌ๊ธฐ(window size)๋ผ๊ณ  ํ•˜๋ฉฐ, 3-way ํ•ธ๋“œ์…ฐ์ดํฌ ๊ณผ์ •์—์„œ ์ด ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ง

  • ์ˆ˜์‹ ์ž๋Š” ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ACK ํŒจํ‚ท์„ ๋ณด๋‚ด๋Š”๋ฐ, ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐ›์€ ๋ฐ์ดํ„ฐ์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋ช‡๋ฒˆ์ด์—ˆ๋Š”์ง€ ์ „๋‹ฌํ•จ

  • ์ „์†ก์ž๋Š” ์ˆ˜์‹ ์ž๊ฐ€ ๋ณด๋‚ด์˜จ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐ›์€ ๋ฐ์ดํ„ฐ ๋ฒˆํ˜ธ๋ฅผ ๋ณด๊ณ , ๊ทธ ๋’ท ๋ถ€๋ถ„๋ถ€ํ„ฐ ๋‹ค์‹œ ์ „๋‹ฌํ•จ

ํ˜ผ์žก ์ œ์–ด (congestion control)

์˜๋ฏธ

  • ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ์˜ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋‹ฌ๋ผ์ง

  • ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์— ์ƒ๊ด€์—†์ด ์ „์†ก์ž์™€ ์ˆ˜์‹ ์ž๊ฐ€ ๋ฌดํ„ฑ๋Œ€๊ณ  ์œ ์‹ค๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์† ๋‹ค์‹œ ๋ณด๋‚ด๋ฉด, ๋„คํŠธ์›Œํฌ๊ฐ€ ๋” ํ˜ผ์žกํ•ด์ง€๊ณ  ๋” ๋А๋ ค์ง€๊ณ  ๋” ์œ ์‹ค๋จ

  • ๋„คํŠธ์›Œํฌ ๋‚ด ํŒจํ‚ท ์ˆ˜๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š” ํ˜„์ƒ์„ ํ˜ผ์žก์ด๋ผ๊ณ  ํ•˜๊ณ , ์ด๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ˜ผ์žก ์ œ์–ด๋ผ๊ณ  ํ•จ

์ œ์–ด ์›๋ฆฌ

  • ์ „์†ก์ž์™€ ์ˆ˜์‹ ์ž๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์„ ์•Œ ์ˆ˜ ์—†์Œ

  • ์ผ๋‹จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒœ์ฒœํžˆ ๋ณด๋‚ด๊ณ , ์ˆ˜์‹ ์ž๊ฐ€ ์ž˜ ๋ฐ›๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๋ฉด ์ ์ฐจ ๋” ๋นจ๋ฆฌ ๋ณด๋ƒ„

  • ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์ˆ˜์‹ ์ž๊ฐ€ ํ•œ์ฐธ ์ „์— ์ „๋‹ฌํ•œ ๋ฐ์ดํ„ฐ๊ฐ€์ง€๋งŒ ๋ฐ›์•˜๋‹ค๊ณ  ์–˜๊ธฐํ•˜๋ฉด, ๋„คํŠธ์›Œํฌ๊ฐ€ ํ˜ผ์žกํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ธ์ง€ํ•˜๊ณ  ์†๋„๋ฅผ ์ค„์ž„

๋ฐฉ์‹ 1 : ํ•ฉ ์ฆ๊ฐ€/๊ณฑ ๊ฐ์†Œ (AIMD, Additive Increase/Multiplicative Decrease)

  • ์ „์†ก์ž๋Š” ์ˆ˜์‹ ์ž์—๊ฒŒ ํŒจํ‚ท์„ ํ•˜๋‚˜์”ฉ ๋ณด๋‚ธ ๋’ค ์ž˜ ๋„์ฐฉํ–ˆ๋‹ค๋Š” ์‘๋ฐ›์„ ๋ฐ›์œผ๋ฉด ์œˆ๋„ ํฌ๊ธฐ๋ฅผ 1๊ฐœ์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ ์ „์†กํ•จ

  • 1๊ฐœ์”ฉ ๋Š˜๋ ค๋‹ค๊ฐ€๊ฐ€ ๋„คํŠธ์›Œํฌ๊ฐ€ ํ˜ผ์žกํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด ํฌ๊ธฐ๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ž„

  • ๋„คํŠธ์›Œํฌ๊ฐ€ ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์œผ๋ฉด ๋‹ค์‹œ 1๊ฐœ์”ฉ ๋Š˜๋ ค๊ฐ€๋ฉด์„œ ๋ณด๋ƒ„

  • ์ „์†ก ์†๋„๊ฐ€ ์ฒœ์ฒœํžˆ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ์ „์†ก ์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๊ธธ์Œ

๋ฐฉ์‹ 2 : ๋А๋ฆฐ ์‹œ์ž‘ (slow start)

  • ์œˆ๋„ ํฌ๊ธฐ๋ฅผ 1๋กœ ์‹œ์ž‘ํ•ด์„œ 2๋ฐฐ์”ฉ ์ฆ๊ฐ€์‹œํ‚ด

  • ๋„คํŠธ์›Œํฌ๊ฐ€ ํ˜ผ์žกํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด ์œˆ๋„ ํฌ๊ธฐ๋ฅผ 1๋กœ ๊ธ‰๊ฒฉํžˆ ์ค„์ž„

  • ์‹œ๊ฐ„์ด ์ง€๋‚ ์ˆ˜๋ก ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Œ

ํ‚ค์›Œ๋“œ

  • ์‹ ๋ขฐ์„ฑ

  • ์—ฐ๊ฒฐํ˜• ํ”„๋กœํ† ์ฝœ

  • ํ—ค๋”์™€ ํ”Œ๋ž˜๊ทธ

  • 3๋ฐฉํ–ฅ ํ•ธ๋“œ์…ฐ์ดํฌ

  • 4๋ฐฉํ–ฅ ํ•ธ๋“œ์…ฐ์ดํฌ

  • ํ๋ฆ„์ œ์–ด (flow control)

  • ์ •์ง€-๋Œ€๊ธฐ ๋ฐฉ์‹ (stop and wait)

  • ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„(sliding window)

  • ํ˜ผ์žก ์ œ์–ด

UDP

  • ์‹ ๋ขฐ์„ฑ ๋ณด์žฅ ์•ˆํ•ด์„œ ๋น ๋ฆ„

  • ์ „์†ก์ž์™€ ์ˆ˜์‹ ์ž ์‚ฌ์ด์— ์—ฐ๊ฒฐ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ

  • ์ „์†ก์ž๊ฐ€ ์ˆ˜์‹ ์ž์—๊ฒŒ ์ผ๋ฐฉ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•จ

  • ๋น„์—ฐ๊ฒฐํ˜• : 3-way handshake ๊ฐ™์€ ์—ฐ๊ฒฐ ํ™•์ธ ์ ˆ์ฐจ ์—†์Œ

  • ํŒจํ‚ท ์‚ฌ์ด์— ์˜์กด์„ฑ ์—†์Œ : ํŒจํ‚ท ์ˆœ์„œ ๋ณด์žฅ ์•ˆ๋จ

  • TCP๋ณด๋‹ค ํ—ค๋”์— ์ •๋ณด๊ฐ€ ์ ์–ด์„œ ์šฉ๋Ÿ‰์ด ์ž‘์Œ

  • ํ˜ผ์žก์ œ์–ด ๋ถˆ๊ฐ€

  • ๋ช‡๊ฐœ ์œ ์‹ค๋ผ๋„ ์ƒ๊ด€ ์—†๋Š” ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉํ•จ

    • ์˜ˆ) ์ŠคํŠธ๋ฆฌ๋ฐ, ์˜จ๋ผ์ธ ๊ฒŒ์ž„

Last updated