[CS] Computer Networking - Transport layer(1): Multi/Demulti, UDP
๐์ปดํจํฐ ๋คํธ์ํฌ ์ ๊ณต ์์ ์ ๋ฆฌ
Transport Layer
Transport Layer: ์๋ก ๋ค๋ฅธ ์ปดํจํฐ์์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ๋ค์ด ๋ง์น ์ง์ ์ฐ๊ฒฐ๋ ๊ฒ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ํด์ฃผ๋ ์ญํ
Transport layer๋ Application layer์์ message๋ฅผ ๋ฐ์ผ๋ฉด segment๋ก ๋๋.
๊ทธ segment๋ Network layer์์ packetํํ๋ก ๋ณํ๋์ด receiver์์ ์์ ๋จ
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 ์คํ)
p1 โ p3, p2 โ p4 ์ฐ๊ฒฐ๋จ
- p1, p2์์ ์์ผ์ ํตํด transport layer๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด๋ธ๋ค.
- ํ์ง๋ง transport layer๋ ํ๋์ด๋ค.
- ๋๋ฌธ์ transport layer๋ ์ค๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ ์์ผ์์ transport header๋ฅผ ๋ถ์ฌ segment๋ก ๋ง๋ ๋ค.(์บก์ํ)
- ๊ทธ๋ฆฌ๊ณ segment๋ค์ ๋คํธ์ํฌ ๊ณ์ธต์ผ๋ก ์ ๋ฌํ๋ค
Demultiplexing
Demultiplexing์ ๋ค์๊ณผ ๊ฐ์ด ๋์:
- host๊ฐ
IP datagram
์ ์์ ํ๋ค. - ๊ฐ datagram์ source IP, destination IP์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์์
- ๊ฐ datagram์ transport-layer segment๋ฅผ carrieํ๋ค!
- ๊ฐ๊ฐ์ segment๋ source, destination์ port ๋ฒํธ๋ฅผ ๊ฐ์ง๋ค.
- host๋ IP adderss & port number๋ฅผ ์ฌ์ฉํ์ฌ segment๋ฅผ ์ ์ ํ socket์ผ๋ก ์ ๋ฌ
source, dest port # ๋ ๊ฐ๊ฐ 16bits
์ฝ 65,000๊ฐ port ์ง์ ๊ฐ๋ฅ!
Connectionless Demultiplexing : UDP
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์ ์๋ณํ๋ค:
- source IP address
- source port number
- dest IP address
- dest port number
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 ํน์ง:
- Connectionless
- handshaking ๊ณผ์ ์ด ์์
- ๊ฐ UDP segment๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ
- sender์ reciever ๊ฐ์ ์ฐ๊ฒฐ ์ํ ์ ๋ณด ์ ์ง ์ ํจ
- Unreliable Transfer
- Congestion control ์์
- ๋คํธ์ํฌ ์ํฉ์ ๊ด๊ณ์์ด ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์์๋ถ์
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๊ฐ ์๋์ง ํ์ธ
๐๊ธฐ๋ณธ ๊ฐ๋ :
- sender๋ ๋ฐ์ดํฐ์ ๋ํ ์ฒดํฌ์ฌ ๊ฐ์ ๊ณ์ฐํ์ฌ ํจ๊ป ์ ์ก
- receiver๋ ๋ฐ์ ๋ฐ์ดํฐ์ ๋ํด ๋์ผํ ๋ฐฉ์์ผ๋ก ์ฒดํฌ์ฌ์ ๋ค์ ๊ณ์ฐ
- ๊ณ์ฐ๋ ์ฒดํฌ์ฌ์ด ์ ์ก๋ ์ฒดํฌ์ฌ๊ณผ ์ผ์นํ์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๊ณ ํ๋จ
๐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 ๊ฐ๊ณผ ๋น๊ต
- ์ผ์นํ์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๊ฐ์ง๋ ๊ฒ์ด๊ณ , ์ผ์นํ๋ฉด ์ค๋ฅ๊ฐ ์๋ ๊ฒ์ผ๋ก ํ๋จ