Introduction
Packet loss is unavoidable in real networks. Congestion, wireless instability, WAN latency, asymmetric routing, and overloaded endpoints all contribute to dropped packets. In a traditional end-to-end TCP model, packet loss directly impacts both the client and the server, often amplifying latency and degrading application performance.
When a proxy is introduced—especially a TCP-terminating Full Proxy—the behavior of retransmissions and packet loss changes fundamentally.
This article explains how proxies handle retransmissions and packet loss at the packet level, why Full Proxy architecture isolates failures, and how this improves performance, stability, and backend protection.

TCP Retransmission Basics
In standard TCP communication:
- Data is sent with sequence numbers
- The receiver acknowledges received data
- Missing acknowledgments trigger retransmissions
- Retransmissions invoke congestion control
- Loss anywhere affects the entire path
In this model, packet loss propagates end-to-end.
Packet Loss Without a Proxy (End-to-End TCP)
Packet-Level Example
Client → Server : PSH, Seq=1001, Len=500
(Server does not receive packet)
Client → Server : PSH, Seq=1001, Len=500 (Retransmission)
Server → Client : ACK, Ack=1501
What Happens Here
- Client waits for server acknowledgment
- Retransmission timer expires
- End-to-end delay increases
- Server must handle retransmissions for every slow client
This tightly coupled behavior becomes a scalability and performance problem.
How Proxies Change Retransmission Behavior
A Full Proxy terminates TCP, splitting the connection into two independent sessions:
- Client ↔ Proxy
- Proxy ↔ Server
Each session has:
- Independent sequence numbers
- Independent retransmission timers
- Independent congestion control
This separation is the foundation of retransmission isolation.
Client-Side Packet Loss (Client ↔ Proxy)
Packet-Level Example
Client → Proxy : PSH, Seq=2001, Len=500 (LOST)
Client → Proxy : PSH, Seq=2001, Len=500 (Retransmission)
Proxy → Client : ACK, Ack=2501
Proxy → Server : PSH, Seq=8001, Len=500
Server → Proxy : ACK, Ack=8501
Explanation
- Packet loss occurs between client and proxy
- Proxy handles retransmission locally
- Server never sees the loss
- Server receives clean, in-order traffic
Loss is fully contained on the client side.
Server-Side Packet Loss (Proxy ↔ Server)
Packet-Level Example
Client → Proxy : PSH, Seq=2501, Len=500
Proxy → Client : ACK, Ack=3001 (Immediate)
Proxy → Server : PSH, Seq=8501, Len=500 (LOST)
Proxy → Server : PSH, Seq=8501, Len=500 (Retransmission)
Server → Proxy : ACK, Ack=9001
Explanation
- Client is ACKed immediately
- Server-side loss does not affect client latency
- Retransmissions are isolated to proxy-server path
This behavior is called ACK decoupling.
Why ACK Decoupling Is Critical
In a Full Proxy:
- ACKs to the client do not depend on server acknowledgments
- Client retransmission timers are not triggered by backend delays
- Slow servers do not slow down fast clients
Packet-Level View
Client → Proxy : PSH, Seq=3001, Len=1000
Proxy → Client : ACK, Ack=4001 (Immediate)
Proxy → Server : PSH, Seq=9001, Len=1000
(Server responds later)
This dramatically improves perceived performance and reduces jitter.
Retransmission Localization and Performance Benefits
By localizing retransmissions, proxies achieve:
- Faster recovery from packet loss
- Reduced end-to-end latency spikes
- Stable throughput over lossy links
- Better mobile and WAN performance
Instead of retransmitting across the entire path, retransmissions occur only where loss actually happened.
Flow Control and Loss Absorption
Full Proxies manage independent TCP windows on each side.
Practical Impact
- Large receive window advertised to fast clients
- Smaller window advertised to congested servers
- Proxy buffers excess data
- Packet loss does not cause global backoff
This buffering absorbs retransmission storms and smooths traffic bursts.
Retransmission Behavior in Half Proxy / L4 Mode
Packet-Level Example (L4 / Half Proxy)
Client → Server : PSH, Seq=1001, Len=500 (LOST)
Client → Server : PSH, Seq=1001, Len=500 (Retransmission)
Server → Client : ACK, Ack=1501
Key Differences
- TCP remains end-to-end
- Proxy does not ACK independently
- Loss affects both sides
- No retransmission isolation
L4 proxies can detect TCP state, but they cannot decouple retransmissions.
Stateless Forwarding and Packet Loss
In stateless forwarding:
- Proxy does not track sequence numbers
- No retransmission control
- No buffering
- No loss isolation
Packet loss behaves exactly as if the proxy were not present.
Backend Server Protection
One of the most valuable benefits of proxy-based retransmission handling is backend protection.
Without a proxy:
- Servers handle retransmissions for every client
- Packet loss increases server CPU usage
- Slow clients consume backend resources
With a Full Proxy:
- Servers see clean, paced traffic
- Retransmissions are absorbed upstream
- Backend TCP stacks remain stable
This is critical for APIs, databases, and legacy applications.
Security Implications
Retransmission behavior can also indicate attacks.
A Full Proxy can:
- Detect abnormal retransmission rates
- Identify slow-loris and TCP exhaustion attacks
- Enforce retransmission thresholds
- Drop suspicious flows early
This blends performance optimization with security enforcement.
Common Misunderstandings
“Proxies Cause More Retransmissions”
False. Proxies reduce the blast radius of retransmissions by localizing them.
“Retransmissions Mean Proxy Performance Issues”
Often false. Retransmissions usually indicate:
- Network instability
- Congestion
- Lossy access links
Proxies simply make these issues more visible and manageable.
When Retransmission Handling Can Become a Risk
Misconfiguration can negate benefits:
- Insufficient proxy buffers
- Aggressive ACKing without backpressure
- Poor timeout tuning
- Missing session sync during failover
These are design issues, not architectural flaws.
Relationship to Performance Metrics
Retransmission handling directly affects:
- Latency – fewer spikes
- Throughput – smoother delivery
- CPU usage – localized processing
- Session stability – reduced resets
This is why retransmission behavior must be considered during capacity planning.
Summary
Proxies fundamentally change how packet loss and retransmissions behave:
- TCP sessions are split
- Retransmissions are localized
- ACKs are decoupled
- Clients and servers are isolated from each other’s network issues
This results in:
- Better performance over lossy networks
- Improved backend stability
- Reduced latency jitter
- Stronger security enforcement
However, these benefits require:
- Proper sizing
- Correct timeout tuning
- Careful HA design
Understanding retransmission handling is essential for anyone operating modern, proxy-based network architectures.
Useful Links
https://www.youtube.com/@sanchitgurukul
