software engineering/์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ

[Network] UDP / TCP Protocol

jjingle 2023. 11. 9. 11:37

UDP ํ”„๋กœํ† ์ฝœ

  • UDPํ—ค๋”๋Š” 8๋ฐ”์ดํŠธ๋กœ ๊ฐ„๋žตํ•œ ๊ตฌ์กฐ (์ตœ์†Œํ™”๋œ ์˜ค๋ฒ„ํ—ค๋“œ ๊ตฌ์กฐ)
  • ๋น„์—ฐ๊ฒฐํ˜•์˜ ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ์€ ์ „์†ก ํ”„๋กœํ† ์ฝœ
  • ๋ฉ”์‹œ์ง€ ๋‹จ์œ„์˜ ์ „์†ก ํ”„๋กœํ† ์ฝœ
    • ๋ฉ”์‹œ์ง€๋ฅผ ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ์ž๋ฅด๊ฑฐ๋‚˜ ์žฌ์กฐํ•ฉ X
    • ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‘์šฉ๊ณ„์ธต ํ˜น์€ IP๊ณ„์ธต์—์„œ ์ž๋ฅด๊ณ  ์žฌ์กฐํ•ฉ
  • ๋น„์ •๊ทœ์  ์†ก์‹ ์œจ(Unregulated Sending Rate)
    • ์†ก์‹ ์œจ์— ๊ฐ„์„ญํ•˜์ง€ ์•Š๊ณ , ์‘์šฉ๊ณ„์ธต์˜ ์˜๋„๋Œ€๋กœ ์ „์†ก (๋„คํŠธ์›Œํฌ ์ƒํ™ฉ ๊ณ ๋ คX)
    • TCP๋Š” ์ž์ฒด์ ์œผ๋กœ ์†ก์‹ ์œจ ์ œ์–ด

 

 


TCP ํ”„๋กœํ† ์ฝœ

  • ์ŠคํŠธ๋ฆผ ๋ฐฐ๋‹ฌ(Stream Delivery) ์„œ๋น„์Šค ์ œ๊ณต
    • ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ 
    • ๋ฐ์ดํ„ฐ์˜ ์‹œ์ž‘๊ณผ ๋์„ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์œผ๋กœ ์ฒ˜๋ฆฌ
  • ํ๋ฆ„์ œ์–ด์™€ ์˜ค๋ฅ˜์ œ์–ด๋ฅผ ์œ„ํ•œ ์†ก์ˆ˜์‹  ๋ฒ„ํผ(Buffer)
  • TCP ์„ธ๊ทธ๋จผํŠธ(Segment)
    • TCP๋Š” ์ŠคํŠธ๋ฆผ ๋ฐฐ๋‹ฌ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ํ•˜์œ„๊ณ„์ธต์ธ IPํ”„๋กœํ† ์ฝœ์€ ํŒจํ‚ท์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
    • -> TCP๋Š” ์ผ๋ จ์˜ ๋ฐ”์ดํŠธ๋ฅผ ์„ธ๊ทธ๋จผํŠธ๋ผ๋Š” ํŒจํ‚ท์œผ๋กœ ๊ทธ๋ฃนํ™”
  • ์ „์ด์ค‘ ํ†ต์‹  ์„œ๋น„์Šค : ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ 
  • ์‹ ๋ขฐ์„ฑ ์„œ๋น„์Šค  : ํ™•์ธ์‘๋‹ต ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ด์šฉํ•˜์—ฌ ์˜ค๋ฅ˜์—†๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ์„œ๋น„์Šค ์ œ๊ณต
  • ์—ฐ๊ฒฐ ์ง€ํ–ฅ ์„œ๋น„์Šค
    • ๋‘ TCP๊ฐ„์— ๊ฐ€์ƒ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•œ ์ดํ›„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜
    • ๋ฐ์ดํ„ฐ ๊ตํ™˜์ด ์™„๋ฃŒ๋œ ์ดํ›„์— ์—ฐ๊ฒฐ ์ข…๋ฃŒ
  • ๋ฒˆํ˜ธํ™” ์‹œ์Šคํ…œ
    • ์‹ค์ œ IPํŒจํ‚ท์œผ๋กœ ์ „์†ก๋˜๋Š” ์„ธ๊ทธ๋จผํŠธ ๋‹จ์œ„์˜ ์ˆœ์„œ๋ฒˆํ˜ธ๋Š” ์—†์œผ๋ฉฐ, ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ฐ”์ดํŠธ์— ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•จ
    • TCPํ—ค๋”์˜ ์†ก์‹  ์ˆœ์„œ๋ฒˆํ˜ธ : ํ˜„์žฌ ์„ธ๊ทธ๋จผํŠธ์— ์žˆ๋Š” ์ฒซ๋ฒˆ์งธ ๋ฐ”์ดํŠธ์˜ ์ˆœ์„œ๋ฒˆํ˜ธ(์ž„์˜ ๋ฒˆํ˜ธ๋ถ€ํ„ฐ ์‹œ์ž‘)
    • TCPํ—ค๋”์˜ ํ™•์ธ ์‘๋‹ต๋ฒˆํ˜ธ : ์ˆ˜์‹ ์ธก์—์„œ ์ˆ˜์‹ ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ๋‹ค์Œ ๋ฐ”์ดํŠธ์˜ ์ˆœ์„œ๋ฒˆํ˜ธ

 

* TCP ์„ธ๊ทธ๋จผํŠธ(Segment)

  • ์†ก์‹ ์ž / ์ˆ˜์‹ ์ž ํฌํŠธ๋ฒˆํ˜ธ (Source/Destination Port Address) : ์†ก์‹ ์ธก/์ˆ˜์‹ ์ธก ์‘์šฉํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ํฌํŠธ์ฃผ์†Œ
  • ์ˆœ์„œ๋ฒˆํ˜ธ(Sequence Number)
    • ์„ธ๊ทธ๋จผํŠธ์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์˜ ์ฒซ๋ฒˆ์งธ ๋ฐ”์ดํŠธ์— ๋ถ€์—ฌ๋œ ๋ฒˆํ˜ธ
    • ์—ฐ๊ฒฐ ์„ค์ • ์‹œ, ๋‚œ์ˆ˜ ๋ฐœ์ƒ๊ธฐ๋ฅผ ์ด์šฉํ•ด์„œ ์ดˆ๊ธฐ ์ˆœ์„œ๋ฒˆํ˜ธ ์ƒ์„ฑ
  • ํ™•์ธ ์‘๋‹ต๋ฒˆํ˜ธ(Acknowledgement Number) : ์ˆ˜์‹ ์ธก์—์„œ ์ˆ˜์‹ ํ•  ๊ฒƒ์„ ๊ธฐ๋Œ€ํ•˜๋Š” ๋‹ค์Œ ๋ฐ”์ดํŠธ์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ
  • ํ—ค๋”๊ธธ์ด(Header Length) 
    • TCPํ—ค๋”์˜ ๊ธธ์ด๋กœ์„œ 4๋ฐ”์ดํŠธ ์›Œ๋“œ์˜ ๊ฐœ์ˆ˜๋กœ ํ‘œํ˜„
    • 5(5x4=20๋ฐ”์ดํŠธ)์—์„œ 15(15x4=60๋ฐ”์ดํŠธ) ์‚ฌ์ด์˜ ๊ฐ’
  • ์œˆ๋„์šฐ ํฌ๊ธฐ(Window Size) : ์ˆ˜์‹ ๊ธฐ์˜ ์œˆ๋„์šฐ(rwnd; receiving window) ํฌ๊ธฐ
  • ๊ฒ€์‚ฌํ•ฉ(Checksum) : ๋ฐ์ดํ„ฐ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํ•„๋“œ
  • ๊ธด๊ธ‰ํฌ์ธํ„ฐ(Urgent Pointer) : ๊ธด๊ธ‰ํ”Œ๋ž˜๊ทธ(Urgent Flag)๊ฐ€ 1๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ์—๋งŒ ์˜๋ฏธ์žˆ๋Š” ๊ฒƒ์œผ๋กœ, ๊ธด๊ธ‰ ๋ฐ์ดํ„ฐ ๋ฐ”์ดํŠธ ์œ„์น˜ ํ‘œํ˜„
  • ์˜ต์…˜(Option) : ์ตœ๋Œ€ 40๋ฐ”์ดํŠธ๊นŒ์ง€์˜ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด ์ „๋‹ฌ ํ•„๋“œ
  • ์ œ์–ด ํ•„๋“œ(Control Field) : ์—ฐ๊ฒฐ ์„ค์ •/ํ•ด์ œ/๋ฆฌ์…‹, ๋ฐ์ดํ„ฐ ์ „์†ก ๋ชจ๋“œ ๋“ฑ์„ ํ‘œํ˜„ํ•˜๋Š” ํ”Œ๋ž˜๊ทธ

 

* TCP ์˜ต์…˜

  • ์ตœ๋Œ€ 40๋ฐ”์ดํŠธ๊นŒ์ง€์˜ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํ•„๋“œ
  • 2๊ฐ€์ง€ ์œ ํ˜•์˜ ์˜ต์…˜ ํ•„๋“œ : Single-byte / Multiple-byte
  • ์ตœ๋Œ€ ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ(MSS; Maximum Segment Size)
    • ํ•˜๋‚˜์˜ ์„ธ๊ทธ๋จผํŠธ๋กœ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์˜ ์ตœ๋Œ€ ํฌ๊ธฐ
    • ์—ฐ๊ฒฐ ์„ค์ • ๋‹จ๊ณ„์—์„œ ์ˆ˜์‹ ํ•˜๊ณ ์ž ํ•˜๋Š” MSS๊ฐ’์„ ๊ตํ™˜ํ•˜์—ฌ ์ž‘์€ ๊ฐ’์œผ๋กœ ๊ฒฐ์ •ํ•˜๋ฉฐ, ์ด ์˜ต์…˜์ด ์—†์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’ 536๋ฐ”์ดํŠธ
    • ์—ฐ๊ฒฐ์ด ์œ ์ง€๋˜์–ด ์žˆ๋Š” ๋™์•ˆ์—๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ
  • ์œˆ๋„์šฐ ํ™•์žฅ ์ธ์ž(Window Scale Factor)
    • ๋„คํŠธ์›Œํฌ๊ฐ€ ๊ณ ์†ํ™”๋œ ์ƒํ™ฉ์—์„œ ๊ธฐ๋ณธํ—ค๋”์— ํฌํ•จ๋œ ์ˆ˜์‹ ์ธก ์œˆ๋„์šฐ ํฌ๊ธฐ๋Š” ์ตœ๋Œ€ 65,535 ๋ฐ”์ดํŠธ๋กœ์„œ ๋ถˆ์ถฉ๋ถ„ํ•  ์ˆ˜ ์žˆ์Œ
    • ์œˆ๋„์šฐ ํ™•์žฅ ์ธ์ž๋Š” ์—ฐ๊ฒฐ ์„ค์ • ๊ณผ์ •์—์„œ๋งŒ ๊ฒฐ์ • ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์—ฐ๊ฒฐ์ด ์œ ์ง€๋˜์–ด ์žˆ๋Š” ๋™์•ˆ์—๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ
    • ์ƒˆ๋กœ์šด ์ˆ˜์‹  ์œˆ๋„์šฐ ํฌ๊ธฐ = ๊ธฐ๋ณธํ—ค๋”์˜ ์ˆ˜์‹ ์œˆ๋„์šฐ ํฌ๊ธฐ X 2(์œˆ๋„์šฐ ํ™•์žฅ์ธ์ž)
  • ํƒ€์ž„์Šคํƒฌํ”„(Timestamp) : ํŒจํ‚ท์˜ ์™•๋ณต์‹œ๊ฐ„(RTT; Round Trip Time)์„ ์ธก์ •ํ•จ
  • SACK-ํ—ˆ์šฉ, SACK ์˜ต์…˜
    • TCP ๊ธฐ๋ณธ ํ—ค๋”์— ์žˆ๋Š” ํ™•์ธ์‘๋‹ต์€ ๋ˆ„์  ํ™•์ธ์‘๋‹ต ๋ฐฉ์‹
    • ๋ˆ„์  ํ™•์ธ ์‘๋‹ต๋ฐฉ์‹๋งŒ ์‚ฌ์šฉํ•˜๋ฉด N-ํ”„๋ ˆ์ž„-ํ›„ํ‡ด ๋ฐฉ์‹์ฒ˜๋Ÿผ ๋น„ํšจ์œจ์ ์ธ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ์•ˆ
    • ์„ ํƒ์  ํ™•์ธ์‘๋‹ต(SACK; Selective ACK)๋ฅผ ์ด์šฉํ•˜์—ฌ, ์–ด๋Š ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋„์ฐฉํ•˜์˜€๋Š”์ง€ ์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Œ