TCP / UDP
Reference: [μ± ] IT μμ§λμ΄λ₯Ό μν λ€νΈμν¬ μ λ¬Έ
2κ³μΈ΅κ³Ό 3κ³μΈ΅μ λͺ©μ μ§λ₯Ό μ νν μ°Ύμκ°κΈ° μν μ£Όμ μ κ³΅μ΄ λͺ©μ μ΄μμ§λ§, 4κ³μΈ΅μμ λμνλ protocolμ λ§λ€μ΄μ§ λͺ©μ μ΄ 2, 3 κ³μΈ΅κ³Ό μ‘°κΈ λ€λ₯΄λ€
λͺ©μ μ§ λ¨λ§ μμμ λμνλ μ¬λ¬ application process μ€ ν΅μ ν΄μΌ ν λͺ©μ μ§ processλ₯Ό μ νν μ°Ύμκ°κ³ ,
packet μμκ° λ°λμ§ μλλ‘ μ μ‘°ν©ν΄
μλ dataλ₯Ό μ λ§λ€μ΄λ΄κΈ° μν μν μ νλ€
1. Layer 4 Protocol (TCP, UDP) and Service Port
Dataλ₯Ό 보λ΄κ³ λ°λ Encapsulation, Decapsulation κ³Όμ μ κ° κ³μΈ΅μμ μ μνλ headerκ° μΆκ°λκ³ , μ¬λ¬κ°μ§ μ λ³΄κ° λ€μ΄κ°λ€
λ€μν μ 보 μ€ κ°μ₯ μ€μν λ κ°μ§ μ 보λ μλμ κ°λ€
κ° κ³μΈ΅μμ μ μνλ μ 보
μμ μΈ‘μ λμΌ κ³μΈ΅μμ μ¬μ©νκΈ° μν μ 보
μμ protocol μ§μμ μ 보
Decapsulation κ³Όμ μμ μμ κ³μΈ΅μ protocolμ΄λ processλ₯Ό μ νν μ°Ύμκ°κΈ° μν λͺ©μ μΌλ‘ μ¬μ©
TCP/IP Protocol Stack
μμ 4κ³μΈ΅μ TCPμ UDPκ° λ΄λΉνλ€4κ³μΈ΅μ λͺ©μ μ applicationμμ μ¬μ©νλ processλ₯Ό μ νν μ°Ύμκ°κ³ , dataλ₯Ό λΆν ν
packet
μ μ μͺΌκ° 보λ΄κ³ μ 쑰립νλ κ²μ΄λ€packetμ λΆν νκ³ μ‘°λ¦½νκΈ° μν΄ Sequence Numberμ ACK Numberλ₯Ό μ¬μ©νλ€
TCP/IP Protocol Stack
μμ μμ protocol μ§μμλ portλ²νΈμ΄λ€4κ³μΈ΅ protocol μ§μμμΈ port λ²νΈλ μΆλ°μ§μ λͺ©μ μ§λ₯Ό ꡬλΆν΄ μ²λ¦¬ν΄μΌ νλ€
Well Known Port
HTTP TCP 80, HTTPS TCP 443, SMTP TCP 25μ κ°μ΄ μ μλ €μ§ Portλ₯Ό Well known port λΌκ³ νλ€
μ΄ portλ€μ μ΄λ―Έ μΈν°λ· μ£Όμ ν λΉ κΈ°κ΅¬μΈ **IANA (Internet Assgined Numbers Authority)**μ λ±λ‘λκ³ 1023λ² μ΄νμ port λ²νΈλ₯Ό μ¬μ©νλ€
λ€μν applicationμ port λ²νΈλ₯Ό ν λΉνκΈ° μν΄ Registered Port λ²μλ₯Ό μ¬μ©νλ€
1024 ~ 49151
μ λ²μμ΄λ©°,port λ²νΈλ₯Ό ν λΉλ°κΈ° μν΄ μ μ²νλ©΄ IANAμ λ±λ‘λμ΄ κ΄λ¦¬λλ€but, 곡μ λ²νΈμ λΉκ³΅μ λ²νΈκ° νΌμ¬λμ΄ μκ³ , μ¬μ€ port λ²νΈλ‘ μ¬μ©λκΈ°λ νλ€
λμ , μ¬μ€, μμ port μ λ²μλ
49152 ~ 65535
μ΄λ€μ΄ λ²μμ port λ²νΈλ IANAμ λ±λ‘λμ΄ μ¬μ©λμ§ μλλ€
μ΄ port λ²νΈλ μλμΌλ‘ ν λΉλκ±°λ, μ¬μ€ μ©λλ‘ ν λΉλκ³ , clientμ μμ port λ²νΈλ‘ μ¬μ©λλ€!
2. TCP
TCPλ Layer 4μ νΉμ§μ λλΆλΆ ν¬ν¨νκ³ μλ€
TCP protocolμ μ λ’°ν μ μλ 곡μ©λ§μμλ μ 보μ μ€ μλ ν΅μ μ 보μ₯νκΈ° μν΄
sessionμ μμ νκ² μ°κ²°νκ³
dataλ₯Ό λΆν νκ³
λΆν λ packetμ΄ μ μ μ‘λμλμ§ νμΈνλ κΈ°λ₯μ΄ μλ€
Packet μ λ²νΈ(
Sequence Number
)λ₯Ό λΆμ¬νκ³ μ μ μ‘λμλμ§μ λν΄ μλ΅(Acknowledge Number
) νλ€λν, νκΊΌλ²μ μΌλ§λ 보λ΄μΌ μμ μκ° μ λ°μ μ²λ¦¬ν μ μλμ§ μ μ‘ν¬κΈ° (
Window Size
)κΉμ§ κ³ λ €ν΄ ν΅μ νλ€μ΄λ¬ν TCPμ μν λλΆμ network μνλ₯Ό μ¬κ°νκ² κ³ λ €νμ§ μκ³ μ½κ³ μμ νκ² networkλ₯Ό μ¬μ©ν μ μλ€
2-1. Packet μμμ μλ΅ λ²νΈ (ACK Number)
TCPμμλ λΆν λ packetμ μ λΆν νκ³ μμ μΈ‘μ΄ μ μ‘°ν©νλλ‘ packetμ μμλ₯Ό μ£Όκ³ μλ΅ λ²νΈλ₯Ό λΆμ¬νλ€
Packetμ μμλ₯Ό λΆμ¬νλ κ²μ
Sequence Number
, μλ΅ λ²νΈλ₯Ό λΆμ¬νλ κ²μACK Number
λΌκ³ λΆλ₯Έλ€λ λ²νΈκ° μνΈμμ©ν΄ μμκ° λ€λ°λκ±°λ μ€κ°μ packetμ΄ μμ€λ κ²μ νμ ν μ μλ€
Sequence Number
μ ACK Number
μ κΈ°λ³Έ λμ λ°©μ
Sequence Number
μ ACK Number
μ κΈ°λ³Έ λμ λ°©μ보λ΄λ μͺ½μμ packetμ λ²νΈλ₯Ό λΆμ¬νκ³ λ°λ μͺ½μ μ΄ λ²νΈμ μμκ° λ§λμ§ νμΈνλ€
λ°μ packet λ²νΈκ° λ§μΌλ©΄ μλ΅μ μ£Όλλ°, μ΄λ λ€μ λ²νΈμ packetμ μμ²νλ€
μ΄ μ«μλ₯Ό
ACK Number
λΌκ³ νλ€
μ‘μ μΈ‘μ΄ 1λ² packetμ 보λλλ° μμ μΈ‘μ΄ μ΄ packetμ μ λ°λλ€λ©΄ 1λ²μ μ λ°μμΌλ λ€μμλ 2λ²μ λ¬λΌλ νμλ‘
ACK Number
2λ₯Ό μ€λ€
ex)
μΆλ°μ§μμ
Sequence Number
λ₯Ό 0μΌλ‘ 보λΈλ€ (SEQ = 0)μμ μΈ‘μμλ 0λ² packetμ μ λ°μλ€λ νμλ‘ μλ΅ λ²νΈ (
ACK Number
μ 1μ μ μ΄ μλ΅νλ€μ΄λ μμ μΈ‘μμλ μμ μ΄ μ²μ 보λ΄λ packetμ΄λ―λ‘ μμ μ packetμ
Sequence Number
0μ λΆμ¬νλ€μ΄ packetμ λ°μ μ‘μ μΈ‘μ
Sequence Number
λ₯Ό1λ‘, (μμ μΈ‘μ΄ACK Number
λ‘ 1λ² packetμ λ¬λΌκ³ μμ²νμΌλκΉ!!)ACK Number
λ μλλ°©μ 0λ² Sequenceλ₯Ό μ λ°μλ°λ μλ―Έλ‘ Sequence Numberλ₯Ό 1λ‘ λΆμ¬ν΄ λ€μ μ‘μ νλ€!
2-2. Window Size & Sliding Window
TCPλ μΌλ°©μ μΌλ‘ packetμ 보λ΄λ κ²μ΄ μλλΌ μλλ°©μ΄ μΌλ§λ μ λ°μλμ§ νμΈνκΈ° μν΄ ACK λ²νΈλ₯Ό νμΈνκ³ λ€μ packetμ μ μ‘νλ€
Packetμ΄ μ μ μ‘λμλμ§ νμΈνκΈ° μν΄ λ³λ packetμ λ°λ κ² μμ²΄κ° ν΅μ μκ°μ λ리μ§λ§, μ‘μ μμ μμ μκ° λ¨Ό 거리μ λ¨μ΄μ Έ μμΌλ©΄ **μ볡 μ§μ°μκ° (Round Trip Time, RTT)**μ΄ λμ΄λλ―λ‘ μλ΅μ κΈ°λ€λ¦¬λ μκ°μ΄ λ κΈΈμ΄μ§λ€
λ§μ½ μμ packetμ νλ 보λ΄κ³ μλ΅μ λ°μμΌλ§ νλλ₯Ό λ λ³΄λΌ μ μλ€λ©΄ λͺ¨λ dataλ₯Ό μ μ‘νλ λ° κΈ΄ μκ°μ΄ 걸릴 κ²μ΄λ€
κ·Έλμ dataλ₯Ό λ³΄λΌ λ packetμ νλλ§ λ³΄λ΄λ κ²μ΄ μλλΌ λ§μ packetμ νκΊΌλ²μ 보λ΄κ³ μλ΅μ νλλ§ λ°λλ€
κ°λ₯νλ©΄ μ΅λν λ§μ packetμ νκΊΌλ²μ 보λ΄λ κ²μ΄ ν¨μ¨μ μ΄μ§λ§, Network μνκ° μ μ’μΌλ©΄ packet μ μ€ κ°λ₯μ±μ΄ 컀μ§λ―λ‘ μ μ ν μ‘μ λμ κ²°μ ν΄μΌ νλλ°,
ν λ²μ dataλ₯Ό λ°μ μ μλ dataμ ν¬κΈ°λ₯Ό
Window Size
λΌκ³ νκ³ ,Network μν©μ λ°λΌ μ΄ window sizeλ₯Ό μ‘°μ νλ κ²μ
Sliding Window
λΌκ³ νλ€
TCP Headerμμ window sizeλ‘ ννν μ μλ μ΅λ ν¬κΈ°λ 2^16 μ΄λ€
μ€μ λ‘ 64Kλ§νΌ window sizeλ₯Ό κ°μ§ μ μμ§λ§ μ΄ sizeλ νμ μ μμ μ±μ΄ λμμ§κ³ κ³ μνλλ νλ networkμμλ λ무 μμ μ«μμ΄λ€
κ·Έλμ window sizeλ₯Ό 64Kλ³΄λ€ λν λλ € ν΅μ νλλ° TCP headerλ λ³κ²½μ΄ λΆκ°λ₯νλ―λ‘ header sizeλ₯Ό λλ¦¬μ§ μκ³ λ€μ μ«μλ₯Ό 무μνλ λ°©λ²μΌλ‘ window sizeλ₯Ό μ¦κ°μμΌ ν΅μ νλ€
μ΄ λ°©λ²μ μ¬μ©νλ©΄ κΈ°μ‘΄ μ«μμ 10λ°°, 100λ°°λ‘ windowκ° μ»€μ§λ€!
TCPλ data μ μ€μ΄ λ°μνλ©΄ window sizeλ₯Ό μ λ°μΌλ‘ λ¨μ΄λ¨λ¦¬κ³ μ μμ μΈ ν΅μ μ΄ λλ κ²½μ° μμν νλμ© λλ¦°λ€
λ§μ½ Network κ²½ν©μ΄ λ°μν΄
packet drop
μ΄ μκΈ°λ©΄ μμμ§ window sizeλ‘ μΈν΄ data ν΅μ μλκ° λλ €μ Έ νμ μ μ λλ‘ μ¬μ©νμ§ λͺ»νλ μν©μ΄ λ°μν μ μλ€μ΄ κ²½μ° κ²½ν©μ νΌνκΈ° μν΄
νμ μλλ₯Ό μ¦κ°μν€κ±°λ
κ²½ν©μ μμλ‘ νΌνκ² ν μ μλ bufferκ° ν° network μ₯λΉλ₯΄γΉ μ¬μ©νκ±°λ
TCP μ΅μ ν solutionμ μ¬μ©ν΄ μ΄λ° λ¬Έμ λ€μ ν΄κ²°ν μ μλ€
2-3. 3-Way Handshake
TCPμμλ μ μ€μλ μμ ν ν΅μ μ μν΄ ν΅μ μμ μ μ¬μ μ°κ²°μμ μ μ§ννλ€
λ§μ½ λͺ©μ μ§κ° dataλ₯Ό λ°μ μ€λΉκ° μ λ μν©μμ dataλ₯Ό μΌλ°©μ μΌλ‘ μ μ‘νλ©΄ λͺ©μ μ§μμλ dataλ₯Ό μ μμ μΌλ‘ μ²λ¦¬ν μ μμ΄ dataκ° λ²λ €μ§λ€
μ΄λ° μν©μ λ°©μ§νκΈ° μν΄ TCP protocolμ dataλ₯Ό μμ νκ² λ³΄λ΄κ³ λ°μ μ μλμ§ λ―Έλ¦¬ νμΈνλ μμ μ κ±°μΉλ κ²μ΄λ€!
Packet Network
μμλ λμμ λ§μ μλλ°©κ³Ό ν΅μ νλ―λ‘ μ νν ν΅μ μ μν΄ ν΅μ μ ν΅μ μ νμν resourceλ₯Ό 미리 ν보νλ μμ μ΄ μ€μνλ€TCPμμλ 3λ²μ packetμ μ£Όκ³ λ°μΌλ©΄μ ν΅μ μ μλ‘ μ€λΉνλ―λ‘
3-Way Handshake
λΌκ³ λΆλ₯Έλ€
TCPμμλ μ΄λ°
3-Way Handshake
μ§ν μν©μ λ°λΌ state μ 보λ₯Ό λΆλ₯΄λ μ΄λ¦μ΄ λ€λ₯΄λ€Serverμμλ serviceλ₯Ό μ 곡νκΈ° μν΄ clientμ μ μμ λ°μλ€μΌ μ μλ LISTEN stateλ‘ λκΈ°νλ€
Clientμμ ν΅μ μ μλν λ
Syn
packetμ 보λ΄λλ° clientμμλ μ΄ μνλ₯Ό SYN-SENT state λΌκ³ λΆλ₯Έλ€Clientμ
Syn
μ λ°μ serverλ SYN-RECEIVED stateλ‘ λ³κ²½λκ³ ,Syn
,Ack
λ‘ μλ΅νλ€μλ΅μ λ°μ clientλ ESTABLISHED stateλ‘ λ³κ²½νκ³ κ·Έμ λν μλ΅μ serverμ 보λΈλ€
Serverμμλ clientμ
Ack
μλ΅μ λ°κ³ ESTABLISHED stateλ‘ λ³κ²½λλ€ESTABLISHED stateλ serverμ client κ°μ μ°κ²°μ΄ μ±κ³΅μ μΌλ‘ μλ£λμμμ λνλΈλ€!
3-Way Handshake
κ³Όμ μ΄ μκΈ°λ€λ³΄λ μ΄λ€ packetμ΄ μλ‘μ΄ μ°κ²° μλμ΄κ³ κΈ°μ‘΄μ λν μλ΅μΈμ§ ꡬλΆνκΈ° μν΄ headerμ FlagλΌλ κ°μ λ£μ΄ ν΅μ νλ€TCP Flags
SYN
μ°κ²° μμ μ©λλ‘ μ¬μ©νλ€
μ°κ²°μ΄ μμλ λ SYN Flagμ 1λ‘ νμν΄ λ³΄λΈλ€
ACK
ACK λ²νΈκ° μ ν¨ν κ²½μ° 1λ‘ νμν΄ λ³΄λΈλ€
μ΄κΈ° SYNμ΄ μλ λͺ¨λ packetμ κΈ°μ‘΄ messageμ λν μλ΅μ΄λ―λ‘ ACK flagκ° 1λ‘ νκΈ°λλ€
FIN
μ°κ²° μ’ λ£ μ 1λ‘ νμλλ€
Data μ μ‘μ λ§μΉ ν μ μμ μΌλ‘ μλ°©ν₯ μ’ λ£ μ μ¬μ©λλ€
RST
μ°κ²° μ’ λ£μ 1λ‘ νμλλ€
μ°κ²° κ°μ μ’ λ£λ₯Ό μν΄ μ°κ²°μ μΌλ°©μ μΌλ‘ λμ λ μ¬μ©λλ€
URG
κΈ΄κΈ dataμΈ κ²½μ° 1λ‘ νμν΄ λ³΄λΈλ€
PSH
ServerμΈ‘μμ μ μ‘ν dataκ° μκ±°λ dataλ₯Ό buffering μμ΄ μμ© νλ‘κ·Έλ¨μΌλ‘ μ¦μ μ λ¬ν κ²μ μ§μν λ μ¬μ©λλ€
3. UDP
TCPμ λ¬λ¦¬ UDPλ Layer 4 protocolμ΄ κ°μ ΈμΌ ν νΉμ§μ΄ κ±°μ μλ€
4κ³μΈ΅μμλ μ λ’°μ± μλ ν΅μ μ μν΄ μλμ κ°μ μμ μ μννλ€
μ°κ²°μ 미리 ν립 (3-Way Handshake)
Dataλ₯Ό μ λΆν νκ³ μ‘°λ¦½νκΈ° μν΄
packet λ²νΈ
λ₯Ό λΆμ¬νκ³ μμ λ dataμ λν΄ μλ΅Dataλ₯Ό νΉμ λ¨μ(
Window Size
)λ‘ λ³΄λ΄κ³ memoryμ μ μ§νλ€κ°ACK Number
λ₯Ό λ°μ ν ν΅μ μ΄ μ λ μν©μ νμ νκ³ λμμΌ memoryμμ μ΄ dataλ€μ μ κ±°λ§μ½ μ€κ°μ μ μ€μ΄ μμΌλ©΄
Sequence Number
μACK Number
λ₯Ό λΉκ΅ν΄κ°λ©° μ΄λ₯Ό νμ νκ³ , memoryμ μ μ§ν΄λμ dataλ₯Ό μ΄μ©ν΄ μ¬μ μ‘μ΄ κΈ°λ₯μ μ΄μ©ν΄ data μ μ€μ΄ λ°μνκ±°λ μμκ° λ°λλλΌλ λ°λ‘ μ‘μ μ μμ
UDPμλ μμ TCPμ κ°μ κΈ°λ₯μ΄ μ ν μλ€
UDP headerλ TCPμ λΉκ΅νλ©΄ λ΄μ©μ΄ κ±°μ μλ€
UDPμλ 4κ³μΈ΅μ νΉμ§μΈ μ λ’° ν΅μ μ μν λ΄μ© (
Sequence Number
,ACK Number
,Flag
,Window Size
) μ΄ μλ€
Data ν΅μ μ data μ μ‘μ μ λ’°μ±μ΄ ν΅μ¬μ΄λ€
applicationμμ κ±±μ νμ§ μκ³ dataλ₯Ό λ§λ€κ³ μ¬μ©νλ κ²μ΄ data ν΅μ μ λͺ©μ μ΄μ§λ§,
UDPλ data μ μ‘μ 보μ₯νμ§ μλ protocol μ΄λ―λ‘ μ νλ μ©λλ‘λ§ μ¬μ©λλ€
UDPλ μμ± dataλ μ€μκ° streamnigκ³Ό κ°μ΄ μκ°μ λ―Όκ°ν protocolμ΄λ applicationμ μ¬μ©νλ κ²½μ°λ μ¬λ΄ λ°©μ‘μ΄λ μ¦κΆ μμΈ λ°μ΄ν° μ μ‘μ μ¬μ©λλ
multicast
μ²λΌ λ¨λ°©ν₯μΌλ‘ λ€μμ λ¨λ§κ³Ό ν΅μ μ μλ΅μ λ°κΈ° μ΄λ €μ΄ νκ²½μμ μ£Όλ‘ μ¬μ©λλ€Dataλ₯Ό μ μ‘νλλ° μ λ’°μ±λ³΄λ€ μΌλΆ dataκ° μ μ€λλλΌλ μκ°μ λ§μΆμ΄ κ³μ μ μ‘νλ κ²μ΄ μ€μν νμνμ μμ€ν κ³Ό κ°μ μλΉμ€μ κ²½μ° UDPλ₯Ό μ¬μ©νλ€
UDPλ μ€κ°μ dataκ° μΌλΆ μ μ€λλλΌλ μ μ€λ μνλ‘ dataλ₯Ό μ²λ¦¬νλ€!
UDPλ TCPμ λ¬λ¦¬ ν΅μ μμ μ
3-Way Handshake
μ κ°μ΄ μ¬μ μ μ°κ²°μ ν립νλ μ μ°¨κ° μλ€κ·Έ λμ UDPμμ 첫 dataλ resource ν보λ₯Ό μν΄ Interruptλ₯Ό κ±°λ μ©λλ‘ μ¬μ©λκ³ μ μ€λλ€
κ·Έλμ UDP protocolμ μ¬μ©νλ applicationμ΄ λλΆλΆ μ΄λ° μν©μ μΈμ§νκ³ λμνκ±°λ,
μ°κ²° ν립μ TCP protocolμ μ¬μ©νκ³ , application λΌλ¦¬ λͺ¨λ μ€λΉλ₯Ό λ§μΉ ν μ€μ dataλ§ UDPλ₯Ό μ΄μ©νλ κ²½μ°κ° λλΆλΆμ΄λ€
ex)
Netflixλ Youtubeμ κ°μ΄ μκ°μ λ―Όκ°νμ§ μμ λ¨μΌ μμ²μλ₯Ό μν μ°κ²°μ TCPλ₯Ό μ¬μ©νλ€
μ€μκ° νμνμ μ루μ μ data μ μ‘μ΄ μλ°©ν₯μΌλ‘ μΌμ΄λκ³ μκ°μ λ§€μ° λ―Όκ°νκ² λ°μνλ―λ‘ TCP μ΄μ© νκ²½μμ data μ μ€μ΄ λ°μνλ©΄ μ¬μ©μλ network νμ§μ΄ λμλ€κ³ μκ°ν μ μμΌλ―λ‘ UDPλ₯Ό μ¬μ©νλ€
TCP vs UDP
+
Communication channels in telecommunications
λ¨λ°©ν₯ ν΅μ (simplex communication)
λ¨λ°©ν₯ μ μ‘
ex) TV, Radio
λ°μ΄μ€ ν΅μ (half-duplex communication)
μλ°©ν₯μΌλ‘ μ μ‘μ΄ κ°λ₯νμ§λ§, λμμ μμͺ½μμλ μ μ‘ν μ μλ€
ex) 무μ κΈ°
μ μ΄μ€ ν΅μ (full-duplex communication)
λμμ μλ°©ν₯ μ μ‘μ΄ κ°λ₯νλ€
ex) μ νκΈ°
Last updated