Post

[CS] Computer Networking - Transport layer(1): Multi/Demulti, UDP

[CS] Computer Networking - Transport layer(1): Multi/Demulti, UDP

๐Ÿ“š์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ ์ „๊ณต ์ˆ˜์—… ์ •๋ฆฌ

Transport Layer


Transport Layer: ์„œ๋กœ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๋งˆ์น˜ ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• 

alt text

Transport layer๋Š” Application layer์—์„œ message๋ฅผ ๋ฐ›์œผ๋ฉด segment๋กœ ๋‚˜๋ˆ”.
๊ทธ segment๋Š” Network layer์—์„œ packetํ˜•ํƒœ๋กœ ๋ณ€ํ™˜๋˜์–ด receiver์—์„œ ์ˆ˜์‹ ๋จ

alt text

Two principal Internet transport protocols


TCP(Transmission Control Protocol)

  • reliable ๋ฐ์ดํ„ฐ ์ „์†ก: ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜์ง€ ์•Š๋„๋ก ๋ณด์žฅ
  • in-order delivery: ๋ณด๋‚ธ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์ฐฉํ•จ
  • congestion control: ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„ ์กฐ์ ˆ
  • flow control: ์ˆ˜์‹ ์ž์˜ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์— ๋งž์ถฐ ๋ฐ์ดํ„ฐ ์ „์†ก
  • connection setup: ๋ฐ์ดํ„ฐ ์ „์†ก ์ „์— ์—ฐ๊ฒฐ์„ ๋จผ์ € ์„ค์ •

UDP(User Datagram Protocol)

  • unreliable: ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
  • unordered delivery: ๋ณด๋‚ธ ์ˆœ์„œ์™€ ๋‹ค๋ฅด๊ฒŒ ๋„์ฐฉํ•  ์ˆ˜ ์žˆ์Œ
  • ๋‹จ์ˆœํ•จ: TCP๋ณด๋‹ค ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ

โŒ๋‹ค์Œ ๋‘ ์„œ๋น„์Šค๋Š” TCP์™€ UDP ๋ชจ๋‘ ์ œ๊ณต ์•ˆํ•จ

  • delay guarantees: ํŠน์ • ์‹œ๊ฐ„ ๋‚ด์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์ฐฉํ•œ๋‹ค๋Š” ๋ณด์žฅ ์—†์Œ
  • andwidth guarantees: ํŠน์ • ์ „์†ก ์†๋„๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ

Multiplexing/Demultiplexing


Multiplexing: ๋‹ค์ˆ˜์˜ ์†Œ์ผ“์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์ธต์—์„œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋ถ„ํ• ํ•˜๋Š” ๊ณผ์ •
Demultiplexing: ์ˆ˜์‹  ์ธก์—์„œ ๋„์ฐฉํ•œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ํ•ด๋‹น ์†Œ์ผ“์œผ๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜์‹  ์ธก ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ณผ์ •

์ฆ‰, Multiplexing์€ ์›ํ•˜๋Š” Socket์œผ๋กœ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ๊ณผ์ •**์ด๊ณ  **Demultiplexing ์€ Segment์—์„œ ๋„˜์–ด์˜จ ์ •๋ณด๋ฅผ ๋ฐ›๋Š” ๊ณผ์ •

Multiplexing

  • Client1(ํ”„๋กœ์„ธ์Šค p3 ์‹คํ–‰), Client2(ํ”„๋กœ์„ธ์Šค p4 ์‹คํ–‰)
  • Server(ํ”„๋กœ์„ธ์Šค p1, p2 ์‹คํ–‰)

alt text

p1 โ†” p3, p2 โ†” p4 ์—ฐ๊ฒฐ๋จ

alt text

  • p1, p2์—์„œ ์†Œ์ผ“์„ ํ†ตํ•ด transport layer๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ€์–ด๋‚ธ๋‹ค.
  • ํ•˜์ง€๋งŒ transport layer๋Š” ํ•˜๋‚˜์ด๋‹ค.
  • ๋•Œ๋ฌธ์— transport layer๋Š” ์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ ์†Œ์ผ“์—์„œ transport header๋ฅผ ๋ถ™์—ฌ segment๋กœ ๋งŒ๋“ ๋‹ค.(์บก์Аํ™”)
  • ๊ทธ๋ฆฌ๊ณ  segment๋“ค์„ ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค

Demultiplexing

Demultiplexing์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘:

  1. host๊ฐ€ IP datagram์„ ์ˆ˜์‹ ํ•œ๋‹ค.
  2. ๊ฐ datagram์€ source IP, destination IP์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
  3. ๊ฐ datagram์€ transport-layer segment๋ฅผ carrieํ•œ๋‹ค!
  4. ๊ฐ๊ฐ์˜ segment๋Š” source, destination์˜ port ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง„๋‹ค.
  5. host๋Š” IP adderss & port number๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ segment๋ฅผ ์ ์ ˆํ•œ socket์œผ๋กœ ์ „๋‹ฌ

alt text

source, dest port # ๋Š” ๊ฐ๊ฐ 16bits
์•ฝ 65,000๊ฐœ port ์ง€์ • ๊ฐ€๋Šฅ!

Connectionless Demultiplexing : UDP

alt text UDP socket ์ƒ์„ฑ โ†’ destination IP, destination port์˜ socket์œผ๋กœ ์ „๋‹ฌ โ†’ ๋ฐ›๋Š” ์ชฝ์—์„œ IP, port๋ฅผ ๋ณธ๋‹ค (transport layer์—์„œ๋Š” port ๋งŒ ํ™•์ธ) โ†’ connectionless์—์„œ๋Š” destination๋งŒ ๊ฐ™์œผ๋ฉด ๊ฐ™์€ socket์œผ๋กœ ์—ฐ๋‹ค

  • ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์—์„œ ์˜จ ๋ฐ์ดํ„ฐ๊ทธ๋žจ์ด๋ผ๋„ destination port๊ฐ€ ๊ฐ™์œผ๋ฉด socket์„ ํ•˜๋‚˜๋งŒ ์—ฐ๋‹ค

Connextion-oriented demultiplexing : TCP

  • TCP๋Š” UDP์™€ ๋‹ฌ๋ฆฌ 4-tuple๋กœ socket์„ ์‹๋ณ„ํ•œ๋‹ค:
    1. source IP address
    2. source port number
    3. dest IP address
    4. dest port number

alt text

dest IP/port๊ฐ€ ๊ฐ™์•„๋„ source IP/port์— ๋”ฐ๋ผ connection์ด ๋‹ฌ๋ผ์ง
socket์„ ๊ฐ๊ฐ ์—ฐ๋‹ค โ†’ destination IP/port๊ฐ€ ๊ฐ™์•„๋„ source IP/port๊ฐ€ ๋‹ค๋ฅด๋ฉด ๊ฐ๊ฐ connection์ด ๋˜๊ณ , socket๋„ ๊ฐ๊ฐ ์ƒ์„ฑ๋จ

UDP(User Datagram Protocol)


no frills, bare bones Internet transport protocol : ์•„๋ฌด๋Ÿฐ ์žฅ์‹์—†๊ณ  ํ•„์ˆ˜์ ์ธ ๊ฒƒ๋งŒ์„ ๊ฐ–์ถ˜ ํ”„๋กœํ† ์ฝœ

  • best effort ์„œ๋น„์Šค: ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋˜ ์‹ ๋ขฐ์„ฑ์€ ๋ณด์žฅ X
  • connectionless ํ†ต์‹ : ์—ฐ๊ฒฐ ์„ค์ • ๋ฐ ํ•ด์ œ ๊ณผ์ •์ด ์—†์Œ

โœ…UDP ํŠน์ง•:

  1. Connectionless
    • handshaking ๊ณผ์ •์ด ์—†์Œ
    • ๊ฐ UDP segment๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌ
    • sender์™€ reciever ๊ฐ„์— ์—ฐ๊ฒฐ ์ƒํƒœ ์ •๋ณด ์œ ์ง€ ์•ˆ ํ•จ
  2. Unreliable Transfer
  3. Congestion control ์—†์Œ
    • ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์— ๊ด€๊ณ„์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์Ÿ์•„๋ถ€์Œ

alt text

Source Port(16bits): ์‘๋‹ต์ด ํ•„์š” ์—†๋Š” ๊ฒฝ์šฐ 0์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ
Destination Port(16bits): ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
Length(16bits): UDP header์™€ data๋ฅผ ํฌํ•จํ•œ ์ „์ฒด segment์˜ length(๋ฐ”์ดํŠธ ๋‹จ์œ„) Checksum(16bits): ์ „์†ก ์ค‘ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์ถœํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ’

โœ…UDP ์žฅ์ :

  • no connection establishment: (๋”œ๋ ˆ์ด๊ฐ€ ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ๋Š”) ์—ฐ๊ฒฐ์„ค์ • ์—†์Œ
  • simple: ์—ฐ๊ฒฐ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•จ
  • small header size

  • UDP used by:
    • ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด(ex: youtube)
    • DNS ์กฐํšŒ
    • SNMP (Simple Network Management Protocol)
    • HTTP/3(UDP ๊ธฐ๋ฐ˜์ด์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์—์„œ ์‹ ๋ขฐ์„ฑ ์ถ”๊ฐ€)
    • ์˜จ๋ผ์ธ ๊ฒŒ์ž„

UDP Checksum

segment ์ „์†ก ๊ณผ์ •์—์„œ error๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ = ๊นจ์ง„ bit๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ

๐Ÿ“š๊ธฐ๋ณธ ๊ฐœ๋…:

  1. sender๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฒดํฌ์„ฌ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜์—ฌ ํ•จ๊ป˜ ์ „์†ก
  2. receiver๋Š” ๋ฐ›์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฒดํฌ์„ฌ์„ ๋‹ค์‹œ ๊ณ„์‚ฐ
  3. ๊ณ„์‚ฐ๋œ ์ฒดํฌ์„ฌ์ด ์ „์†ก๋œ ์ฒดํฌ์„ฌ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ํŒ๋‹จ

๐Ÿ“Checksum ๊ณ„์‚ฐ ๋ฐฉ๋ฒ• UDP ์ฒดํฌ์„ฌ์€ 1์˜ ๋ณด์ˆ˜ ํ•ฉ์„ ๊ธฐ๋ฐ˜

1
2
3
4
5
6
7
8
9
10
11
1110 0110 0110 0110  (์ฒซ ๋ฒˆ์งธ 16๋น„ํŠธ ์ •์ˆ˜)
+ 1101 0101 0101 0101  (๋‘ ๋ฒˆ์งธ 16๋น„ํŠธ ์ •์ˆ˜)
---------------------
1 1011 1011 1011 1011  (ํ•ฉ๊ณ„, ๋งจ ์•ž์˜ 1์€ carry)

  1011 1011 1011 1011  (๊ฒฐ๊ณผ)
+                   1  (carry๋ฅผ ๋‹ค์‹œ ๋”ํ•จ - wraparound)
---------------------
  1011 1011 1011 1100  (์ตœ์ข… ํ•ฉ๊ณ„)
  
  0100 0100 0100 0011  (์ฒดํฌ์„ฌ - 1์˜ ๋ณด์ˆ˜)
  • sender๋Š” ๊ณ„์‚ฐ๋œ ๊ฐ’์„ UDP header์˜ checksum ํ•„๋“œ์— ์ €์žฅํ•œ๋‹ค.
  • receiver๋„ ๋™์ผํ•˜๊ฒŒ ๊ณ„์‚ฐํ•˜๊ณ  ์ˆ˜์‹ ๋œ segment์˜ checksum ๊ฐ’๊ณผ ๋น„๊ต
  • ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๊ฐ์ง€๋œ ๊ฒƒ์ด๊ณ , ์ผ์น˜ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š” ๊ฒƒ์œผ๋กœ ํŒ๋‹จ
This post is licensed under CC BY 4.0 by the author.