- μΌλ°μ μΌλ‘ TCPμ IPλ₯Ό ν¨κ» μ¬μ©νλλ°, IPκ° λ°μ΄ν°μ λ°°λ¬μ μ²λ¦¬νλ€λ©΄ TCPλ ν¨ν·μ μΆμ λ° κ΄λ¦¬νλ€.
- μ λ’°μ± μλ λ°μ΄ν° μ μ‘μ μ§μνλ μ°κ²° μ§ν₯ν νλ‘ν μ½μ΄λ€.
- μ¬μ μ 3-way handshakeλΌλ κ³Όμ μ ν΅ν΄ μ°κ²°μ μ€μ νκ³ ν΅μ μ μμνλ€.
- 4-way handshake κ³Όμ μ ν΅ν΄ μ°κ²°μ ν΄μ (κ°μ νμ λ°©μ)νλ€.
- νλ¦ μ μ΄, νΌμ‘ μ μ΄, μ€λ₯ μ μ΄λ₯Ό ν΅ν΄ μ λ’°μ±μ 보μ₯νλ€. κ·Έλ¬λ μ΄ λλ¬Έμ UDPλ³΄λ€ μ μ‘ μλκ° λ리λ€λ λ¨μ μ΄ μλ€.
- λ°μ΄ν°μ μ μ‘ μμλ₯Ό 보μ₯νλ©° μμ μ¬λΆλ₯Ό νμΈν μ μλ€.
- TCPλ₯Ό μ¬μ©νλ μλ‘λ λλΆλΆμ μΉ HTTP ν΅μ , μ΄λ©μΌ, νμΌ μ μ‘μ μ¬μ©λλ€.
- TCPκ° κ°μνμ λ°©μμ μ 곡νλ€λ κ²μ μ‘μ μΈ‘κ³Ό μμ μΈ‘μ μ°κ²°νμ¬ ν¨ν·μ μ μ‘νκΈ° μν λ Όλ¦¬μ κ²½λ‘λ₯Ό λ°°μ νλ€λ λ»μ΄λ€.
ν¨ν·(Packet)?
- μΈν°λ· λ΄μμ λ°μ΄ν°λ₯Ό 보λ΄κΈ° μν κ²½λ‘ λ°°μ (λΌμ°ν )μ ν¨μ¨μ μΌλ‘ νκΈ° μν΄μ λ°μ΄ν°λ₯Ό μ¬λ¬ κ°μ μ‘°κ°μΌλ‘ λλμ΄ μ μ‘μ νλλ°, μ΄λ μ‘°κ°μ ν¨ν·μ΄λΌκ³ νλ€.
TCPλ ν¨ν·μ μ΄λ»κ² μΆμ λ° κ΄λ¦¬νλκ°?
- λ°μ΄ν°λ ν¨ν· λ¨μλ‘ λλμ΄ κ°μ λͺ©μ μ§(IP κ³μΈ΅)μΌλ‘ μ μ‘λλ€.
Ex) ν μ€λ‘ μμΌ νλ A,B,CλΌλ μ¬λ(ν¨ν·)μ΄ μμΈ(μ‘μ μΈ‘)μμ μΆλ°νμ¬ λΆμ°(μμ μΈ‘)μΌλ‘ κ°μΌνλ€κ³ κ°μ νλ€.
A,B,Cκ° μμ°¨μ μΌλ‘ κ°λ μν©μμ Bκ° κΈΈμ μλͺ» λ€μ΄μ λΆμ€λμλ€.
νμ§λ§ λͺ©μ μ§μμλ A,B,Cκ° λͺ¨λ νμνμ§ λͺ¨λ₯΄κ³ A,Cλ§ λ³΄κ³ λ€ μλ€κ³ μ°©κ°ν μ μλ€. κ·Έλ κΈ° λλ¬Έμ A,B,CλΌλ ν¨ν·μ 1,2,3μ΄λΌλ λ²νΈλ₯Ό λΆμ¬νμ¬ ν¨ν·μ λΆμ€ νμΈ μ²λ¦¬λ₯Ό νκΈ° μν΄ λͺ©μ μ§μμ ν¨ν·μ μ¬μ‘°λ¦½νλ€.
μ΄λ° λ°©μμΌλ‘ TCPλ ν¨ν·μ μΆμ νλ©°, λλμ΄ λ³΄λ΄μ§ λ°μ΄ν°λ₯Ό λͺ©μ μ§μμ λ°κ³ μ¬μ‘°λ¦½ν μ μκ² λλ€.
- μ‘μ μΈ‘κ³Ό μμ μΈ‘ μ¬μ΄μ λ°μ΄ν° μ²λ¦¬ μλ μ°¨μ΄(νλ¦)μ ν΄κ²°νκΈ° μν κΈ°λ².
- λ§μ½, μ‘μ μΈ‘μ μ μ‘λ > μμ μΈ‘μ μ²λ¦¬λμΌ κ²½μ° μ μ‘λ ν¨ν·μ μμ μΈ‘μ νλ₯Ό λμ΄μ μμ€λ μ μκΈ° λλ¬Έμ μ‘μ μΈ‘μ ν¨ν· μ μ‘λμ μ μ΄νκ² λλ€.
Stop and Wait(μ μ§ - λκΈ°)
- λ§€λ² μ μ‘ν ν¨ν·μ λν νμΈ μλ΅μ λ°μμΌ κ·Έ λ€μ ν¨ν·μ μ μ‘ν μ μλ€.
- μ΄λ¬ν ꡬ쑰 λλ¬Έμ λΉν¨μ¨μ μ΄λ€. (λ¨μ )
- Give & Take.
- Sliding Window(μ¬λΌμ΄λ© μλμ°)
-
(μ‘μ μΈ‘ = μ μ‘μΈ‘)
-
μμ μΈ‘μμ μ€μ ν μλμ° ν¬κΈ°λ§νΌ μ‘μ μΈ‘μμ νμΈ μλ΅ μμ΄ μΈκ·Έλ¨ΌνΈλ₯Ό μ μ‘ν μ μκ² νμ¬ λ°μ΄ν° νλ¦μ λμ μΌλ‘ μ‘°μ νλ κΈ°λ²μ΄λ€.
-
μλμ° : μ‘μ , μμ μ€ν μ΄μ μμͺ½μμ λ§λ€μ΄μ§ λ²νΌμ ν¬κΈ°.
-
Stop and Waitμ λΉν¨μ¨μ±μ κ°μ ν κΈ°λ²
-
μ‘μ μΈ‘μμλ Ack νλ μμ μμ νμ§ μλλΌλ μ¬λ¬ κ°μ νλ μμ μ°μμ μΌλ‘ μ μ‘ν μ μλ€.
-
μ‘μ μΈ‘μμ 0,1,2,3,4,5,6μ λ³΄λΌ μ μλ νλ μμ κ°μ§κ³ μκ³ λ°μ΄ν° 0,1μ μ μ‘νλ€κ³ κ°μ νλ©΄ μ¬λΌμ΄λ© μλμ°μ ꡬ쑰λ 2,3,4,5,6μ²λΌ λ³νκ² λλ€.
-
μ΄λ, λ§μ½ μμ μΈ‘μΌλ‘λΆν° ACKλΌλ νλ μμ λ°κ² λλ€λ©΄ μ‘μ μΈ‘μ μ΄μ μ λ³΄λΈ λ°μ΄ν° 0,1μ μμ μΈ‘μμ μ μμ μΌλ‘ λ°μμμ μκ² λκ³ μ‘μ μΈ‘μ μ¬λΌμ΄λ© μλμ°λ ACK νλ μμ λ°λ₯Έ νλ μμ μλ§νΌ μ€λ₯Έμͺ½μΌλ‘ κ²½κ³κ° νμ₯λλ€.
- μ€λ₯ κ²μΆκ³Ό μ¬μ μ‘μ ν¬ν¨νλ€.
- ARQ(Automatic Repeat Request) κΈ°λ²μ μ¬μ©ν΄ νλ μμ΄ μμλμκ±°λ μμ€λμμ κ²½μ°, μ¬μ μ‘μ ν΅ν΄ μ€λ₯λ₯Ό 볡ꡬνλ€.
- ARQ κΈ°λ²μ νλ¦ μ μ΄ κΈ°λ²κ³Ό κ΄λ ¨λμ΄ μλ€.
- Stop and Wait ARQ
- μ‘μ μΈ‘μμ 1κ°μ νλ μμ μ‘μ νκ³ , μμ μΈ‘μμ μμ λ νλ μμ μλ¬ μ 무 νλ¨μ λ°λΌ ACK or NAKλ₯Ό 보λ΄λ λ°©μμ΄λ€.
- μλ³μ μν΄ λ°μ΄ν° νλ μκ³Ό ACK νλ μμ κ°κ° 0,1 λ²νΈλ₯Ό λ²κ°μκ°λ©° λΆμ¬νλ€.
- μμ μΈ‘μ΄ λ°μ΄ν°λ₯Ό λ°μ§ λͺ»νμ κ²½μ°, NAKλ₯Ό 보λ΄κ³ NAKλ₯Ό λ°μ μ‘μ μΈ‘μ λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ€.
- λ§μ½, λ°μ΄ν°λ ACKκ° λΆμ€λμμ κ²½μ° μΌμ κ°κ²©μ μκ°μ λκ³ νμμμμ΄ λλ©΄, μ‘μ μΈ‘μ λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ€.
- Go-Back-n ARQ(μ¬λΌμ΄λ© μλμ°)
- μ μ‘λ νλ μμ΄ μμλκ±°λ λΆμ€λ κ²½μ° κ·Έλ¦¬κ³ ACK ν¨ν·μ μμ€λ‘ μΈν TIME_OUTμ΄ λ°μν κ²½μ°, νμΈλ λ§μ§λ§ νλ μ μ΄νλ‘ λͺ¨λ νλ μμ μ¬μ μ‘νλ€.
- μ¬λΌμ΄λ© μλμ°λ μ°μμ μΈ νλ μ μ μ‘ κΈ°λ²μΌλ‘ μ μ‘μΈ‘μ μ μ‘λ λͺ¨λ νλ μμ 볡μ¬λ³Έμ κ°μ§κ³ μμ΄μΌ νλ©°, ACKμ NAK λͺ¨λ κ°κ° ꡬλ³ν΄μΌ νλ€.
- ACK : λ€μ νλ μμ μ μ‘.
- NAK : μμλ νλ μ μ체 λ²νΈλ₯Ό λ°ν.
[μ¬μ μ‘ λλ κ²½μ°]
(1). NAK νλ μμ λ°μμ κ²½μ°.
- λ§μ½, μμ μΈ‘μΌλ‘ 0~5κΉμ§μ λ°μ΄ν°λ₯Ό 보λλ€κ³ κ°μ νμ.
- μμ μΈ‘μμ λ°μ΄ν°λ₯Ό λ°μμμ νμΈνλ ACK νλ μμ μ€κ° μ€κ° 보λ΄κ² λλ©°, ACK νλ μμ νμΈν μ μ‘μΈ‘μ κ³μν΄μ λ°μ΄ν°λ₯Ό μ μ‘νλ€.
- κ·Έλ¬λ λ§μ½ μμ μΈ‘μμ λ°μ΄ν° μ€λ₯ νλ μ 2λ₯Ό λ°κ²¬νκ³ NAK2λ₯Ό μ μ‘μΈ‘μ 보λΈλ€κ³ ν΄λ³΄μ.
- NAK2λ₯Ό λ°μ μ μ‘μΈ‘μ λ°μ΄ν° νλ μ 2κ° μλͺ»λμλ€λ κ²μ μκ³ λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ€.
- GBn ARQμ νΉμ§μ λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ λΆλΆμ΄λ€. NAK(n)λ₯Ό λ°μ n λ°μ΄ν° μ΄νμ λͺ¨λ λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ€.
(2). μ μ‘ λ°μ΄ν° νλ μμ λΆμ€
- GBn ARQμ νΉμ§μ νμΈλ λ°μ΄ν° μ΄νμ λͺ¨λ λ°μ΄ν° νλ μ μ¬μ μ‘κ³Ό μμ μΈ‘μ νκΈ°μ΄λ€.
- μμ μΈ‘μμ λ°μ΄ν° 1μ λ°κ³ λ€μ λ°μ΄ν°λ‘ 3μ λ°κ² λλ€λ©΄ λ°μ΄ν° 2λ₯Ό λ°μ§ λͺ»νμΌλ―λ‘ μμ μΈ‘μμλ λ°μ΄ν° 3μ νκΈ°νκ³ λ°μ΄ν° 2λ₯Ό λ°μ§ λͺ»νλ€λ NAK2λ₯Ό μ μ‘μΈ‘μ 보λΈλ€.
- NAKλ₯Ό λ°μ μ μ‘μΈ‘μ (1) κ²½μ°μ κ°μ΄ NAK(n) λ°μ΄ν°λ‘λΆν° λͺ¨λ λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ©° μμ μΈ‘μ κΈ°μ‘΄μ λ°μλ λ°μ΄ν° μ€ NAK(n)μΌλ‘ 보λλ λμ λ°μ΄ν° μ΄νμ λͺ¨λ λ°μ΄ν°λ₯Ό νκΈ°νκ³ μ¬μ μ‘ λ°λλ€.
(3). μ§μ λ νμ μμ λ΄μ ACK νλ μ λΆμ€(Lost ACK)
- μ μ‘μΈ‘μ λΆμ€λ ACKλ₯Ό λ€λ£¨κΈ° μν΄ νμ΄λ¨Έλ₯Ό κ°μ§κ³ μλ€.
- μ μ‘μΈ‘μμλ μ΄ νμ΄λ¨Έμ νμ μμ λμ μμ μΈ‘μΌλ‘λΆν° ACK λ°μ΄ν°λ₯Ό λ°μ§ λͺ»νμ κ²½μ°, λ§μ§λ§ ACKλ λ°μ΄ν°λΆν° μ¬μ μ‘νλ€.
- μ μ‘μΈ‘μ NAK γ νλ μμ λ°μμ κ²½μ°, NAK νλ μ λ²νΈλΆν° λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ€.
- μμ μΈ‘μ μνλ νλ μμ΄ μλ κ²½μ°, λ°μ΄ν°λ₯Ό λͺ¨λ νκΈ° μ²λ¦¬νλ€.
- νμμμ(ACK λΆμ€)μ κ²½μ°, λ§μ§λ§ ACKλ λ°μ΄ν°λΆν° μ¬μ μ‘νλ€.
- SR(Selective-Reject) ARQ
- GBn ARQμ νμΈλ λ§μ§λ§ νλ μ μ΄νμ λͺ¨λ νλ μμ μ¬μ μ‘νλ λ¨μ μ 보μν κΈ°λ²μ΄λ€.
- SR ARQλ μμλ, μμ€λ νλ μλ§ μ¬μ μ‘νλ€.
- κ·Έλ κΈ° λλ¬Έμ λ³λμ λ°μ΄ν° μ¬μ λ ¬μ μνν΄μΌ νλ©°, λ³λμ λ²νΌλ₯Ό νμλ‘ νλ€.
- μμ μΈ‘μ λ²νΌλ₯Ό λμ΄ λ°μ λ°μ΄ν°μ μ λ ¬μ΄ νμνλ€.
- μ‘μ μΈ‘μ λ°μ΄ν° μ λ¬κ³Ό λ€νΈμν¬μ λ°μ΄ν° μ²λ¦¬ μλλ₯Ό ν΄κ²°νκΈ° μν κΈ°λ²μ΄λ€.
- ν λΌμ°ν°μκ² λ°μ΄ν°κ° λͺ°λ € λͺ¨λ λ°μ΄ν°λ₯Ό μ²λ¦¬ν μ μλ κ²½μ°, νΈμ€νΈλ€μ μ¬μ μ‘μ νκ² λκ³ κ²°κ΅ νΌμ‘λ§ κ°μ€μμΌ μ€λ²νλ‘μ°λ λ°μ΄ν° μμ€μ΄ λ°μνλ€.
- μ΄λ¬ν λ€νΈμν¬μ νΌμ‘μ νΌνκΈ° μν΄ μ‘μ μΈ‘μμ 보λ΄λ λ°μ΄ν°μ μ μ‘ μλλ₯Ό μ μ΄νλ κ²μ΄ νΌμ‘ μ μ΄μ κ°λ μ΄λ€.
AIMD(Additive Increase Multicative Decrease)
- ν© μ¦κ° / κ³± κ°μ μκ³ λ¦¬μ¦μ΄λΌκ³ νλ€.
- μ²μμ ν¨ν· νλλ₯Ό 보λ΄λ κ²μΌλ‘ μμνμ¬ μ μ‘ν ν¨ν·μ΄ λ¬Έμ μμ΄ λμ°©νλ€λ©΄ Window Sizeλ₯Ό 1μ© μ¦κ°μν€λ©° μ μ‘νλ λ°©λ²μ΄λ€. λ§μ½, ν¨ν· μ μ‘μ μ€ν¨νκ±°λ TIME_OUTμ΄ λ°μνλ©΄ Window Sizeλ₯Ό μ λ°μΌλ‘ κ°μμν¨λ€.
- μ΄ λ°©μμ 곡ννλ€.
- μ¬λ¬ νΈμ€νΈκ° ν λ€νΈμν¬λ₯Ό 곡μ νκ³ μμΌλ©΄ λμ€μ μ§μ νλ μͺ½μ΄ μ²μμλ λΆλ¦¬νμ§λ§, μκ°μ΄ νλ₯΄λ©΄ νν μνλ‘ μλ ΄νκ² λλ νΉμ§μ΄ μλ€.
- λ¬Έμ μ μ μ΄κΈ° λ€νΈμν¬μ λμ λμνμ μ¬μ©νμ§ λͺ»νκ³ λ€νΈμν¬κ° νΌμ‘ν΄μ§λ μν©μ 미리 κ°μ§νμ§ λͺ»νμ¬ νΌμ‘ν΄μ§κ³ λμμΌ λμνμ μ€μ΄λ λ°©μμ΄λ€.
Slow Start
- AIMDκ° λ€νΈμν¬μ μμ©λ μ£Όλ³μμλ ν¨μ¨μ μΌλ‘ λμνμ§λ§, μ²μμ μ μ‘ μλλ₯Ό μ¬λ¦¬λ λ° μκ°μ΄ λ무 κΈΈλ€λ λ¨μ μ΄ μλ€.
- Slow Startλ AIMDμ λ§μ°¬κ°μ§λ‘ ν¨ν·μ νλμ© λ³΄λ΄λ κ²λΆν° μμνλ€. μ΄ λ°©μμ ν¨ν·μ΄ λ¬Έμ μμ΄ λμ°©νλ©΄ κ°κ°μ ACK ν¨ν·λ§λ€ Window Sizeλ₯Ό 1μ© λλ¦°λ€. μ¦, ν μ£ΌκΈ°κ° μ§λλ©΄ Window Sizeλ 2λ°°κ° λλ€.
- λ°λΌμ κ·Έλνμ λͺ¨μμ μ§μ ν¨μ κΌ΄μ΄ λλ€.
- νΌμ‘ νμμ΄ λ°μνλ©΄ Window Sizeλ₯Ό 1λ‘ λ¨μ΄λ¨λ¦°λ€.
- μ²μμλ λ€νΈμν¬μ μμ©λμ μμΈ‘ν μ μλ μ λ³΄κ° μμ§λ§ νλ² νΌμ‘ νμμ΄ λ°μνκ³ λλ©΄ λ€νΈμν¬μ μμ©λμ μ΄λμ λ μμν μ μμΌλ―λ‘ νΌμ‘ νμμ΄ λ°μνμλ Window Sizeμ μ λ°κΉμ§λ μ΄μ μ²λΌ μ§μ ν¨μ κΌ΄λ‘ Window Sizeλ₯Ό μ¦κ°μν€κ³ κ·Έ μ΄νλΆν°λ μλ§νκ² 1μ© μ¦κ°μν€λ λ°©μμ΄λ€.
- 미리 μ ν΄μ§ μκ³κ°(threshold)μ λλ¬ν λκΉμ§ μλμ°μ ν¬κΈ°λ₯Ό 2λ°°μ© μ¦κ°μν¨λ€.
- Slow StartλΌλ μ΄λ¦μ μ¬μ©νμ§λ§, 맀 μ μ‘λ§λ€ 2λ°°μ© μ¦κ°νκΈ° λλ¬Έμ μ μ‘λμ΄μ§λ λ°μ΄ν°μ ν¬κΈ°λ μ§μν¨μμ μΌλ‘ μ¦κ°νλ€.
- μ μ‘λλ λ°μ΄ν°μ ν¬κΈ°κ° μκ³ κ°μ λλ¬νλ©΄ νΌμ‘ ννΌ λ¨κ³λ‘ λμ΄κ°λ€.
[νΌμ‘ ννΌ(Congestion Avoidance)]
- μλμ°μ ν¬κΈ°κ° μκ³ κ°μ λλ¬ν μ΄νμλ λ°μ΄ν°μ μμ€μ΄ λ°μν νλ₯ μ΄ λμμ§λ€.
- λ°λΌμ μ΄λ₯Ό ννΌνκΈ° μν΄ μλμ° ν¬κΈ°λ₯Ό μ νμ μΌλ‘ 1μ© μ¦κ°μν€λ λ°©λ²μ΄λ€.
- μμ μΈ‘μΌλ‘λΆν° μΌμ μκ° λμκΉμ§ ACKλ₯Ό μμ νμ§ λͺ»νλ κ²½μ°.
- νμ μμμ λ°μ : λ€νΈμν¬ νΌμ‘μ΄ λ°μνλ€κ³ μΈμ.
- νΌμ‘ μνλ‘ μΈμλ κ²½μ°
- μλμ°μ ν¬κΈ°λ₯Ό μ¦, μΈκ·Έλ¨ΌνΈμ μλ₯Ό 1λ‘ κ°μμν¨λ€.
- λμμ μκ³κ°μ ν¨ν· μμ€μ΄ λ°μνμ λμ μλμ° ν¬κΈ°μ μ λ°μΌλ‘ μ€μΈλ€.
[λΉ λ₯Έ ν볡(Fast Recovery)]
- νΌμ‘ν μνκ° λλ©΄ Window Sizeλ₯Ό 1λ‘ μ€μ΄μ§ μκ³ μ λ°μΌλ‘ μ€μ΄κ³ μ ν μ¦κ°μν€λ λ°©λ²μ΄λ€.
- λΉ λ₯Έ ν볡 μ μ± κΉμ§ μ μ©νλ©΄ νΌμ‘ μν©μ νλ² κ²ͺκ³ λμλΆν°λ μμν AIMD λ°©μμΌλ‘ λμνκ² λλ€.
[λΉ λ₯Έ μ¬μ μ‘(Fast Retransmit)]
- μμ μΈ‘μμ ν¨ν·μ λ°μ λ λ¨Όμ λμ°©ν΄μΌ ν ν¨ν·μ΄ λμ°©νμ§ μκ³ λ€μ ν¨ν·μ΄ λμ°©ν κ²½μ°μλ ACK ν¨ν·μ 보λΈλ€. λ¨, μμλλ‘ μ λμ°©ν λ§μ§λ§ ν¨ν·μ λ€μ ν¨ν·μ μλ²μ ACK ν¨ν·μ μ€μ΄μ 보λΈλ€. λ°λΌμ μ€κ°μ ν¨ν· νλκ° μμ€λλ©΄ μ‘μ μΈ‘μμλ μλ²μ΄ μ€λ³΅λ ACK ν¨ν·μ λ°κ² λλ€. μ΄κ²μ κ°μ§νλ©΄ λ¬Έμ κ° λλ μλ²μ ν¨ν·μ μ¬μ μ‘ν μ μλ€.
- λΉ λ₯Έ μ¬μ μ‘μ μ€λ³΅λ μλ²μ ν¨ν·μ 3κ°(3 ACK) λ°μΌλ©΄ μ¬μ μ‘νλ€. κ·Έλ¦¬κ³ μ΄λ¬ν νμμ΄ μΌμ΄λλ κ²μ μ½κ°μ νΌμ‘μ΄ λ°μν κ²μΌλ‘ κ°μ£Όνμ¬ Window Sizeλ₯Ό μ λ°μΌλ‘ μ€μΈλ€.