Fundamentals 18 min read

Why TCP Window Full Slows Your Transfer and How to Diagnose It with Wireshark

This article walks through a real‑world case of slow file copying between Beijing and Shanghai data centers, explains why Wireshark reports “TCP Window Full”, shows how to locate the relevant packets, calculate bytes‑in‑flight, and assess the impact on transfer speed using I/O graphs and window‑scaling analysis.

Liangxu Linux
Liangxu Linux
Liangxu Linux
Why TCP Window Full Slows Your Transfer and How to Diagnose It with Wireshark

Case Background

A customer copying files from a Beijing data center to Shanghai observed low throughput. Wireshark captured many TCP Window Full warnings, prompting an investigation into whether these messages caused the slowdown.

Understanding the Expert Information

The capture contains 69 warning packets indicating that the receiver's TCP window is completely full. In TCP terminology, this refers to the receive window . When the amount of data “in flight” equals the receive window size, Wireshark flags the condition as TCP Window Full.

Inspecting a Sample Packet

By selecting packet 224, the Wireshark UI highlights the warning. The packet details show the receive window (19200 bytes) and a [Bytes in flight: 112000] annotation, confirming that 112 KB of data are currently unacknowledged.

Identifying the Correct Receive Window

The analysis distinguishes the sender (A, client port 38979) from the receiver (B, server port 22). The relevant receive‑window value is found in the most recent packet from B (source port 22) before the TCP Window Full event—packet 222, which reports a receive window of 112 000 bytes.

Step‑by‑Step Verification

Locate packet 222 (server → client) and note the acknowledged byte count X (e.g., 198 854 bytes).

Find packet 224 (client → server) and read the Next Sequence Number Y (e.g., 310 854 bytes).

Compute Y ‑ X = 112 000 bytes, matching the Bytes in flight shown by Wireshark.

This confirms that the sender’s outstanding data exactly fill the receiver’s window.

Impact on Transfer Speed

When the receive window becomes the bottleneck, the transfer rate drops to the range of 300–400 KB/s, as shown by the I/O Graph. Adjusting the graph interval to 100 ms yields a finer‑grained view of the speed fluctuations.

Deeper Window Analysis

Using Wireshark’s TCP Stream Graph → Window Scaling , one can visualize the staircase‑like evolution of the receive window and identify points where Bytes Out intersect the window—these are the moments when TCP Window Full occurs.

Re‑evaluating the Speed Formula

The classic formula speed = window / RTT assumes that all bytes in flight are immediately acknowledged. In this case, acknowledgments lag, so a more accurate expression is velocity = acked_data / RTT. Applying the revised formula to packets 1337–1357 yields 33600 / 0.094 ≈ 357 KB/s, aligning with the I/O Graph.

Why the Original Formula Still Works in Some Scenarios

When acknowledgments are prompt, the amount of data in flight equals the window size, making the simpler formula valid. In the present case, delayed ACKs cause “in‑flight” data to linger, requiring the refined calculation.

Practical Takeaways

Use Wireshark’s Expert Information to spot TCP Window Full warnings.

Identify the receiver’s actual window by examining the latest packet from the server.

Manually verify bytes‑in‑flight with NextSeq ‑ Ack arithmetic.

Correlate window saturation with throughput using I/O Graphs and Window Scaling graphs.

Apply the appropriate speed formula based on whether ACKs are immediate or delayed.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

TCPWiresharknetwork performanceThroughput AnalysisBytes in FlightTCP Window Full
Liangxu Linux
Written by

Liangxu Linux

Liangxu, a self‑taught IT professional now working as a Linux development engineer at a Fortune 500 multinational, shares extensive Linux knowledge—fundamentals, applications, tools, plus Git, databases, Raspberry Pi, etc. (Reply “Linux” to receive essential resources.)

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.