๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์Šคํ„ฐ๋””/๋„คํŠธ์›Œํฌ

[์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํ‚น ํ•˜ํ–ฅ์‹ ์ ‘๊ทผ] 3. ํŠธ๋žœ์ŠคํฌํŠธ ๊ณ„์ธต

by moon101 2023. 2. 6.

ํŠธ๋žœ์ŠคํฌํŠธ ๊ณ„์ธต

  • ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ์—์„œ ๋™์ž‘ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ๋…ผ๋ฆฌ์  ํ†ต์‹  ์ œ๊ณต (ํŠธ๋žœ์ŠคํฌํŠธ ๊ณ„์ธต์€ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ ์ด๊ณ , ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์€ ํ˜ธ์ŠคํŠธ ๊ฐ„์˜ ํ†ต์‹ ์ด๋‹ค.)
  • ๋‹ค์ค‘ํ™”์™€ ์—ญ๋‹ค์ค‘ํ™”
    • ์—ญ๋‹ค์ค‘ํ™” : ํŠธ๋žœ์ŠคํฌํŠธ ๊ณ„์ธต ์„ธ๊ทธ๋จผํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์†Œ์ผ“์œผ๋กœ ์ „๋‹ฌ, ํŠธ๋žœ์ŠคํฌํŠธ ํ—ค๋” ์ž‘์„ฑ 
      • ํ˜ธ์ŠคํŠธ๋Š” IP ๋ฐ์ดํ„ฐ๊ทธ๋žจ์„ ์ˆ˜์‹ ํ•˜๊ณ , IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋„˜๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์†Œ์ผ“์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค. 
      • ๋น„์—ฐ๊ฒฐ ์—ญ๋‹ค์ค‘ํ™”์™€ ์—ฐ๊ฒฐ์ง€ํ–ฅ์  ์—ญ๋‹ค์ค‘ํ™”๊ฐ€ ์žˆ๋‹ค. 
    • ๋‹ค์ค‘ํ™” : ์ถœ๋ฐœ์ง€ ํ˜ธ์ŠคํŠธ์—์„œ ์†Œ์ผ“์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์œผ๊ณ , ์ด์— ๋Œ€ํ•œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ๋ฐ์ดํ„ฐ์— ํ—ค๋” ์ •๋ณด๋กœ ์บก์Аํ™”ํ•˜๊ณ , ๊ทธ ์„ธ๊ทธ๋จผํŠธ๋“ค์„ ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ์ž‘์—…
      • ๋‹ค์ค‘ํ™”์˜ 2๊ฐ€์ง€ ์š”๊ฑด
        1. ์†Œ์ผ“์€ ์œ ์ผํ•œ ์‹๋ณ„์ž๋ฅผ ๊ฐ–๋Š”๋‹ค
        2. ๊ฐ ์„ธ๊ทธ๋จผํŠธ๋Š” ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ „๋‹ฌ๋  ์ ์ ˆํ•œ ์†Œ์ผ“์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŠน๋ณ„ํ•œ ํ•„๋“œ๋ฅผ ๊ฐ–๋Š”๋‹ค. (์ถœ๋ฐœ์ง€ ํฌํŠธ๋ฒˆํ˜ธ ํ•„๋“œ) ๋ฐ ๋ชฉ์ ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ ํ•„๋“œ
    • ์„ธ๊ทธ๋จผํŠธ์™€ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ํ—ค๋” ํ•„๋“œ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. 
    • ๋‹ค์ค‘ํ™”์™€ ์—ญ๋‹ค์ค‘ํ™”๋Š” ๋ชจ๋“  ๊ณ„์ธต์—์„œ ์ผ์–ด๋‚œ๋‹ค. 

UDP

  • ์—ญ๋‹ค์ค‘ํ™”๋Š” ๋ชฉ์ ์ง€์˜ ํฌํŠธ๋ฒˆํ˜ธ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. 
  • ํ•ธ๋“œ์‰์ดํ‚น์ด ์—†๋‹ค. -> RTT๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • UDP ์ฒดํฌ์„ฌ : ์˜ค๋ฅ˜ ๊ฒ€์ถœ์„ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ถœ๋ฐœ์ง€๋กœ๋ถ€ํ„ฐ ๋ชฉ์ ์ง€๋กœ ์ด๋™ํ–ˆ์„ ๋•Œ, UDP ์„ธ๊ทธ๋จผํŠธ ์•ˆ์˜ ๋น„ํŠธ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 

TCP

  • ์—ญ๋‹ค์ค‘ํ™”๋Š” 4๊ฐ€์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 
    • ์„ธ๊ทธ๋จผํŠธ ์•ˆ์˜ ์ถœ๋ฐœ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ
    • ์ถœ๋ฐœ์ง€ ํ˜ธ์ŠคํŠธ์˜ IP ์ฃผ์†Œ
    • ์„ธ๊ทธ๋จผํŠธ ์•ˆ์˜ ๋ชฉ์ ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ
    • ๋ชฉ์ ์ง€ IP ์ฃผ์†Œ
  • point-to-point
    • ๋‹จ์ผ ์†ก์‹ ์ž์™€ ๋‹จ์ผ ์ˆ˜์‹ ์ž
  • in-order byte stream
    • ์ˆœ์„œ๋Œ€๋กœ ๋ฐ”์ดํŠธ๊ฐ€ ๋„์ฐฉํ•œ๋‹ค.
  • full duplex data
    • ์„ธ๊ทธ๋จผํŠธ๋กœ ๋ชจ์•„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฐ์ดํ„ฐ์˜ ์–‘์˜ ์ตœ๋Œ€ ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ(maximum segment size, MSS)๋กœ ์ œํ•œ๋œ๋‹ค.
    • ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ”Œ๋กœ์šฐ
  • timeout
    • timeout interval์€ EstimatedRTT + "safety margin"์ด๋‹ค.
    • TimeoutInterval = EstimatedRTT + 4*DevRTT
  • fast retransmit
    • 3๊ฐœ์˜ ์ค‘๋ณต ACK๋ฅผ ์ˆ˜์‹ ํ•  ๋•Œ, TCP๋Š” ์„ธ๊ทธ๋จผํŠธ์˜ ํƒ€์ด๋จธ๊ฐ€ ๋งŒ๋ฃŒ๋˜๊ธฐ ์ด์ „์— ์†์‹ค ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์žฌ์ „์†กํ•œ๋‹ค. -> ํƒ€์ž„์•„์›ƒ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ๋ณด๋‹ค ๋น ๋ฆ„.
  • flow control
    • ์ˆ˜์‹ ์ž๊ฐ€ ์†ก์‹ ์ž์—๊ฒŒ ๋ฒ„ํผ์— ์–ผ๋งˆ๋งŽํผ์˜ ์ž๋ฆฌ๊ฐ€ ๋‚จ์•˜๋Š”์ง€, ์ˆ˜์‹  ์œˆ๋„(receive window)๋ฅผ ์•Œ๋ ค์ฃผ๋ฉด ์†ก์‹ ์ž๋Š” ๊ทธ ์ •๋ณด์— ๋งž๊ฒŒ ์œˆ๋„ ์‚ฌ์ด์ฆˆ๋ฅผ ์กฐ์ ˆํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์†ก์‹ ์ž๋Š” ์ˆ˜์‹ ์ž์˜ ๋ฒ„ํผ๋ฅผ ์˜ค๋ฒ„ํ”Œ๋กœ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. (์†๋„๋ฅผ ์ผ์น˜์‹œํ‚ด)
  • 3-way-handshake
    • 1๋‹จ๊ณ„ : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ํŠน๋ณ„ํ•œ ์„ธ๊ทธ๋จผํŠธ, SYN์„ ๋ณด๋‚ธ๋‹ค. ์ด ์„ธ๊ทธ๋จผํŠธ๋Š” IP ๋ฐ์ดํ„ฐ๊ทธ๋žจ ์•ˆ์—์„œ ์บก์Аํ™”๋˜๊ณ  ์„œ๋ฒ„๋กœ ์†ก์‹ ๋œ๋‹ค. 
      • SYN=1, seq=client_isn
    • 2๋‹จ๊ณ„ : ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ TCP๋กœ ์—ฐ๊ฒฐ ์Šน์ธ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์†ก์‹ ํ•œ๋‹ค. ์ด๋•Œ ์„ธ๊ทธ๋จผํŠธ๋Š” SYNACK๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. 
      • SYN1, seq=server_isn, ack=client_isn + 1
    • 3๋‹จ๊ณ„ : ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ ์—ฐ๊ฒฐ ์Šน์ธ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ฐ›์•˜๋‹ค๋Š” ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ด๊ณ , ์ด๋•Œ ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— SYN ๋น„ํŠธ๋Š” 0์ด ๋˜๊ณ , ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์„ธ๊ทธ๋จผํŠธ ํŽ˜์ด๋กœ๋“œ์— ๋‹ด์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. 
      • SYN=0, seq=client_isn + 1, ack=server_isn+1
  • congestion control algorithm
    • 1. ์Šฌ๋กœ ์Šคํƒ€๋“œ, 2. ํ˜ผ์žก ํšŒํ”ผ, 3. ๋น ๋ฅธ ํšŒ๋ณต
    • AIMD(additive-increase, multiplicative decrease) : 3๊ฐœ์˜ ์ค‘๋ณต ACK ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ์„ ํ˜•์œผ๋กœ ํ˜ผ์žก ์œˆ๋„ ํฌ๊ธฐ(์ „์†ก๋ฅ )๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋‹ค๊ฐ€ ํ˜ผ์žก ์œˆ๋„ ํฌ๊ธฐ๋ฅผ ๋ฐ˜์œผ๋กœ ์ค„์ธ๋‹ค. ๊ทธ๋Ÿฌ๊ณ  ๋‚˜์„œ ๋‹ค์‹œ ์ถ”๊ฐ€์ ์ธ ๊ฐ€์šฉ ๋Œ€์—ญํญ์ด ์žˆ๋Š”์ง€ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์„ ํ˜•์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. 

๋Œ“๊ธ€