ARQμ TCPλ ν¨ν·μ μ€λ₯λ₯Ό μ μ΄νλ€λ νΉμ§μ κ°μ§κ³ μμ΅λλ€.
κ·Έλ κΈ°μ, 무μμ΄ λ€λ₯Έμ§ μμλ³΄κ³ μ ν©λλ€.
β Automatic Repeat Request (ARQ)
λ°μ΄ν°μ μ λ’°μ±μ 보μ₯νκΈ° μν΄ μ¬μ©νλ μ€λ₯ μ μ΄ λ©μ»€λμ¦μ Automatic Repeat Request(μ΄ν ARQ)λΌ λΆλ¦ λλ€.
ARQ μ’ λ₯μλ Stop-and-Wait ARQ , Go-Back-N ARQ , Selective Repeat ARQ κ° μμ΅λλ€.
- Stop-and-Wait ARQ
μ μ‘ν λκΈ° νλ‘ν μ½λ‘ λΆλ₯΄κΈ°λ ν©λλ€.
μ΄ λ°©μμ ν¨ν·μ μ μ‘νκ³ κ·Έ ν¨ν·μ λν μμ νμΈ μλ΅(ACK)μ λ°κ³ λμ, λ€μ ν¨ν·μ μ μ‘νλ λ°©μμ λλ€.
μ₯μ μ μμ°¨μ μΌλ‘ ν¨ν·μ 보λ΄κΈ° λλ¬Έμ ꡬνμ΄ μ½κ³ , ν¨ν·μ μμμ΄ μ μ νκ²½μ μ μ ν©λλ€.
λ¨μ μ νλμ ν¨ν·λΉ λ€νΈμν¬λ₯Ό μ볡νλ μκ°μ΄ 걸리기 λλ¬Έμ λ§μ ν¨ν·μ 보λ΄κ±°λ ν¨ν· μμμ΄ λ§μ νκ²½μμ ν¨μ¨μ΄ λ¨μ΄μ§λλ€.
- Pipelining (νμ΄νλΌμ΄λ)
μ΄νμ, μ μ‘λ ν¨ν·μ λν μμ νμΈ μλ΅μ λ°μ§ μκ³ λ μ¬λ¬ μμ²μ λ³΄λΌ μ μλ νμ΄νλΌμ΄λμ΄ λμ€κ² λμμ΅λλ€.
νμ΄νλΌμ΄λμ ν΅ν΄ μμ νμΈ μλ΅μ λ°μ§ μμλ λ€μ ν¨ν·μ μ μ‘νκ² λμμ΅λλ€.
μ΄ νμ΄νλΌμ΄λ κΈ°λ²μ μ¬μ©ν κ²μ΄ Go-Back-N ARQ , Selective Repeat ARQ μ λλ€.
- Go-Back-N ARQ
μ‘μ§μλ μμ νμΈ μλ΅(ACK)λ₯Ό λ°μ§ μκ³ λ, μΌμ μμ(Nκ°) ν¨ν·μ μ°μμ μΌλ‘ μ μ‘ν©λλ€.
λ§μ½, μμ μκ° ν¨ν·μ μ€λ₯λ₯Ό κ°μ§νλ©΄ NAKλ©μμ§ λμ ν΄λΉ ν¨ν·μ Sequence Number λ₯Ό κ°μ§κ³ ACKλ‘ μ‘μ μμκ² μλ €μ€λλ€.
μ΄λ κ² μμ€λ λ¨ νλμ ν¨ν· Sequence Number λ§μ 보λ΄κ³ , κ·Έ μ΄μ μ λ°μ Sequence Number λ 보λ΄μ§ μλ λ€λ μλ―Έμμ λμ ACK λ°©μμ΄λΌ ν©λλ€.
κ·Έλ¦¬κ³ , μ‘μ μλ ν΄λΉ Sequence Number λ‘ SendBase λ₯Ό κ°±μ ν©λλ€.
* Sequence Number : ν¨ν·μ μμλ₯Ό 맀긴 λ²νΈμ λλ€.
* SendBase : μ‘μ μκ° κ°μ₯ λ¨Όμ μ μ‘ν λ°μ΄ν° μ€ μμ§ ACKλ₯Ό λ°μ§ λͺ»ν κ°μ₯ μμ Sequence Number
- Selective Repeat ARQ
Go-Back-N λ°©μμ²λΌ μμ νμΈ μλ΅(ACK)λ₯Ό λ°μ§ μκ³ , μΌμ μμ(Nκ°) ν¨ν·μ μ°μμ μΌλ‘ μ μ‘ν©λλ€.
νμ§λ§, Go-Back-N ARQ μ λ€λ₯΄κ² μμ€λ ν¨ν·μ λν΄μλ§ μ¬μ μ‘ν©λλ€.
λν, μμ€ ν¨ν·μ λν μ 보λ₯Ό μλ €μ£Όλ λ°©μμ΄ λ€λ¦ λλ€. λμ ACKλ°©μμ΄ μλ NAK λ©μμ§λ₯Ό ν΅ν΄ μμ€λ ν¨ν·μ μ‘μ μμκ² μλ €μ€λλ€.
βTCPμ ARQμ μ°¨μ΄μ μ 무μμΈκ°?
1. TCPλ ν¨ν·μ μ¬λ°λ₯΄κ² μμ νμ§ λͺ»ν λ, NAK λ₯Ό 보λ΄μ§ μλλ€.
TechTarget :NACK (NAK, negative acknowledgment, not acknowledged) μ μΌλΆ μ λλ€.
"TCPλ μμ€λκ±°λ μμλ λ©μμ§μ μ¬μ μ‘μ μμνκΈ° μν΄ μΌλ°μ μΌλ‘ λͺ μμ μΈ NACK(Negative Acknowledgment) λ©μμ§λ₯Ό μ¬μ©νμ§ μλλ€." λ₯Ό λ§νκ³ μμ΅λλ€.
TCP does not ordinarily use an explicit NACK message to initiate a retransmission of a dropped or damaged message.
κ·Έλ¬λ©΄ TCPλ μ΄λ€ λ°©λ²μ μ¬μ©ν κΉμ?
Wikipedia - Fast retransmit μλ λ€μκ³Ό κ°μ΄ μ€λͺ ν©λλ€.
TCPλ μμ μκ° μ€λ³΅λ 3κ°μ ACK μλ΅μ λ°μΌλ©΄ ν΄λΉ ν¨ν·μ 'λΉ λ₯Έ μ¬μ μ‘' κΈ°λ²μΌλ‘ μμ€λ ν¨ν·μ 보λμΌλ‘μ¨ NAK(NACK) λ©μμ§λ₯Ό λ체ν©λλ€.
* λΉ λ₯Έ μ¬μ μ‘ : νμμμμ μκ΄μμ΄ ACKμ ν΄λΉνλ ν¨ν·μ μ¬μ μ‘νλ κ²μ λλ€.
* νμμμ : TCPμμ μ‘μ μκ° ν¨ν·μ 보λ΄κ³ , μμ μμκ² ACKλ₯Ό λ°κΈ° κΉμ§μ μκ°μ μ¬λλ° μ΄ μκ°μ λκΈ°λ κ²μ νμμμμ΄λΌ ν©λλ€.
νμμμμ΄ λ°μνλ©΄ μ‘μ μλ ν¨ν·μ΄ μμ€λ κ²μΌλ‘ κ°μ£Όνκ³ , ν¨ν·μ λ€μ 보λ΄κ² λ©λλ€.
When a sender receives three duplicate acknowledgments, it can be reasonably confident that the segment carrying the data that followed the last in-order byte specified in the acknowledgment was lost
Fast retransmit is an enhancement to TCP that reduces the time a sender waits before retransmitting a lost segment. A TCP sender normally uses a simple timer to recognize lost segments. If an acknowledgment is not received for a particular segment within a specified time (a function of the estimated round-trip delay time), the sender will assume the segment was lost in the network and will retransmit the segment.
2. ARQλ μ μ‘ & λ°μ΄ν° λ§ν¬ κ³μΈ΅μμ μ¬μ©, TCP λ μ μ‘ κ³μΈ΅μμ μ¬μ©ν©λλ€.
3. ARQ λ ν¨ν·μ μ€λ₯λ§μ μ μ΄νμ§λ§, TCPλ ν¨ν·μ μ€λ₯ μ μ΄, νΌμ‘ μ μ΄, νλ¦ μ μ΄λ ν©λλ€.
- TCPμ μ€λ₯ μ μ΄
TCPμμ ν¨ν·μ μ€λ₯κ° λ°μνμ λ, Go-Back-N μ λμ ACK λ°©μμ²λΌ μλνλ€λ μ μμ Go-Back-N λ©μ»€λμ¦μ μ¬μ©ν©λλ€. νμ§λ§, μ€λ₯κ° λ°μν ν¨ν· μ΄νλ‘ μ 체 보λ΄μ§ μκ³ , Selective-Repeat μ²λΌ ν΄λΉ ν¨ν·λ§ μ¬μ μ‘ν©λλ€.
μ΄λ₯Ό ν΅ν΄, TCPμ μ€λ₯μ μ΄λ Go-Back-N κ³Ό Selective-Repeat μ νΌν©ν λ°©μμ μ¬μ©νκ³ , μ€λ₯κ° λ°μν ν¨ν·μ λ°κΈ° μν΄ μ€λ³΅λ 3κ°μ ACK μλ΅ & λΉ λ₯Έ μ¬μ μ‘μ μ¬μ©ν©λλ€.
- TCPμ νλ¦ μ μ΄
μ‘μ μΈ‘κ³Ό μμ μΈ‘μ΄ λ°μ΄ν° μ μ‘ μλλ₯Ό μ‘°μ νμ¬ μ‘μ μΈ‘μ΄ λ³΄λΈ λ°μ΄ν°λ₯Ό μμ μΈ‘μ΄ μ²λ¦¬νμ§ λͺ»νλ μν©μ λ°©μ§νλ κ²μ λλ€. μ΄λ₯Ό μν΄ μμ μΈ‘μ μ‘μ μΈ‘μκ² λ°μ μ μλ λ°μ΄ν° μ(window size)μ TCP ν€λμ window νλμ λ΄μ 보λ λλ€. λ§μ½, μμ μΈ‘μ΄ 0μ window νλμ λ΄μμ 보λ΄κ² λλ©΄ μ‘μ μΈ‘μ λ°μ΄ν° μ μ‘μ μ€λ¨νκ³ , persist Timer λ₯Ό μμν©λλ€. μ΄ Timer κ° λλλ©΄ μ‘μ μΈ‘μ μμ μΈ‘μκ² μμ ν¨ν·μ λ³΄λ΄ λ°μ΄ν°λ₯Ό 보λ΄λ λλμ§ νμΈν©λλ€.
- TCPμ νΌμ‘ μ μ΄
ν¨ν·μ κ³Όλν μ μ‘μΌλ‘ μΈν΄ λ°μνλ νΌμ‘μ λ°©μ§νκ³ , λ€νΈμν¬ μ±λ₯μ μ΅μ νκΈ° μν΄ TCPκ° μ¬μ©νλ λ©μ»€λμ¦μ λλ€. νΌμ‘ μ μ΄μ μ λ΅μΌλ‘ TCP Reno, TCP Tahoe κ° μλλ° TCP Reno μ λν΄ κ°λ³κ² μκ°νκ² μ΅λλ€.
βTCP Reno λμ μ리
1. Slow start - λλ¦° μμ
μ΄κΈ° μ°κ²°μ΄ μ€μ λλ©΄ μ‘μ μΈ‘μ μ²μλΆν° λ§μ λ°μ΄ν°λ₯Ό 보λ΄μ§ μκ³ , μμ νΌμ‘ μλμ°(congestion window, μ΄ν cwnd) ν¬κΈ°μΈ (1, 2, 4, 10 , Max Segment Size μ΄ν MSS)λ‘ μμν©λλ€. μ΄λ¬ν cwnd μ ν¬κΈ°λ RTT(μ볡 μκ°) λ§λ€ 2λ°°λ‘ λ립λλ€.
κ·Έλ¬λ€ cwnd κ° OSμκ³κ°μ λλ¬νκ² λ©λλ€.
2. Congestion Avoidance - νΌμ‘ ννΌ
cwnd κ° OSμ νΉμ μκ³κ°μ λλ¬νλ©΄ νΌμ‘ ννΌ λ¨κ³λ‘ cwnd λ₯Ό μ΅λ 1 Segment Size μ© λλ¦¬κ² λ©λλ€.
3. Fast Retransmit - λΉ λ₯Έ μ¬μ μ‘
TCP Reno λ μ€λ³΅λ 3κ°μ ACK κ° λ°μνλ©΄, ν΄λΉ ν¨ν·μ΄ μμ€λμλ€κ³ νλ¨νμ¬ νμμμμ κΈ°λ€λ¦¬μ§ μκ³ μ¦μ μμ€λ ν¨ν·μ μ¬μ μ‘ν©λλ€. μ΄ λ, TCP Tahoe λ νμμμμ΄ λ°μν λκΉμ§ κΈ°λ€λ¦°λ€λ μ°¨μ΄μ μν΄ TCP Reno κ° μ¬μ μ‘μ λ λΉ λ₯΄κ² μ²λ¦¬νκ² λ©λλ€.
4. Fast Recovery - λΉ λ₯Έ ν볡
ν¨ν·μ μμ€μ΄ λ°μλ ν TCP Tahoe μ TCP Reno λͺ¨λ μκ³κ°μ νμ¬ cwnd μ μ λ°μΌλ‘ μ€μ ν©λλ€.
νμ§λ§, TCP Tahoe λ μ΄ λ¨κ³μμ cwnd μ κ°μ 1 λ‘ μ€μ΄λ©° 'λλ¦° μμ' λ¨κ³λ‘ λμκ°μ§λ§, TCP Reno λ cwnd λ₯Ό μ λ°μΌλ‘ μ€μ΄κ³ , 'νΌμ‘ ννΌ' λ¨κ³λ₯Ό μ μ§ν©λλ€.
μΆμ²
- StackOverflow : Differences between TCP and Go Back N
- JSCODE : λ€νΈμν¬ - TCP & UDP,