The useful part, up front

What you’ll take away

  • A local link rate, available path capacity and unique file-byte throughput describe different boundaries.
  • Full duplex permits simultaneous directions; adding their rates does not double one download’s capacity.
  • Under the stated untagged IPv4/TCP model, 1,460 data bytes use 1,538 byte-times, giving about 949.3 Mb/s at a nominal gigabit.
  • The link with the smallest capacity can differ from the link with the least capacity available after existing traffic.
  • A useful comparison preserves endpoints, direction, packetization, transport conditions, byte definition and timing interval.
01

Read the number beside the connection before judging the file copy

Your computer shows a gigabit Ethernet connection, yet a file-copy window displays a much smaller number. Both can be correct. One describes a link; the other may describe useful file bytes arriving during a timed operation. Before looking for a fault, identify what each number counts, which direction it covers and whether the units are bits or bytes. Comparing the labels is the first part of comparing the speeds.

The distinction exists in technical reporting too. Microsoft’s interface structure has separate transmit-link and receive-link speeds, measured in bits per second, alongside counters for data that actually passed through the interface. The Ethernet reporting model in RFC 3635 also distinguishes operational speed from duplex mode. A reported capability while a link is not yet operational needs different interpretation from an established connection’s speed. [1][2]

We will use one established Ethernet link rated at 1,000,000,000 bits per second, without combining links. The packet sizes, busy-path example and transfer result are constructed cases. They show which information connects a local capability to an application result; they are not measurements of a particular network.

One direction, both directions and one file are different totals. Original established 1 Gb/s full-duplex example, with one unaggregated link. An aggregate does not double one direction’s capacity.
Original established 1 Gb/s full-duplex example, with one unaggregated link. An aggregate does not double one direction’s capacity. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
02

Full duplex gives each direction its own job

Full-duplex communication allows the two ends to send and receive at the same time. For the gigabit link in our example, there is a nominal gigabit-per-second direction from the computer and another toward it. Adding them describes two directions working together. It does not turn a single download into a two-gigabit stream. RFC 3635 explicitly says its Ethernet speed objects must not double the line-speed value merely because the interface is full duplex. [1]

This also helps you read a switch specification that describes an aggregate rather than one transfer. First ask which ports and directions are being added. A total can be meaningful without being the capacity available to one file going from one sender to one receiver. Microsoft’s separate transmit and receive speed fields are another reminder to keep the direction attached to the number. [2]

TCP adds a related distinction: a receiver sends acknowledgments about data it has received. Those return messages belong to the opposite direction on this simple full-duplex link. Their existence does not mean every acknowledgment must consume the forward direction’s transmission time. But the return path and acknowledgment timing can still affect the TCP conversation, as the later window example explains. Separate physical directions do not make the two ends of a reliable transfer independent. [4][5]

03

A fast first cable does not describe the rest of the route

A local Ethernet connection is one part of a route between applications. A transfer to a nearby storage computer may stay within the local network; a download from a remote server crosses a different path. The access connection alone cannot establish the performance of all the intervening links and endpoints. RFC 6349 makes that limitation explicit in its framework for measuring complete TCP paths. [4]

Consider an invented route with three successive links rated at 1 Gb/s, 100 Mb/s and 1 Gb/s. Even if the first and last links have plenty of room, every byte of this transfer must cross the 100 Mb/s link. Changing only the first connection to a faster one does not remove that limit. This example assumes no other restriction; useful payload will still need its own overhead calculation.

The general rule needs consistent definitions. RFC 5136 defines path capacity at the IP layer using the smallest corresponding link capacity along that path. [3] You cannot take a physical-link label from one device, a useful-file rate from another and treat their minimum as an exact result. For an everyday comparison, begin by identifying the actual sender, receiver and route. A good local result and a slower internet download may be testing substantially different work.

04

Count a complete packet without calling every byte file data

Use a deliberately simple packet: untagged Ethernet carrying IPv4 and TCP, with a 1,500-byte IP packet, a 20-byte IPv4 header and a 20-byte TCP header. There are no header options or extra encapsulations. That leaves 1,460 bytes of TCP data. RFC 6349 uses this restricted model; the IPv4 and TCP specifications explain the header lengths. The data carried by TCP may itself include an application protocol’s information, so it is not automatically all file contents. [4][5][6]

The Ethernet header adds 14 bytes and the frame check adds four, making the MAC frame 1,518 bytes. Its transmission also needs eight bytes of preamble and delimiter, plus a gap equivalent to 12 byte-times. The complete repeated-frame time budget is therefore 1,538 byte-times. The gap is an interval between frames, not another 12 bytes of file data or a field inside the MAC frame. [4]

At the assumed gigabit rate, 1,460 useful TCP bytes per 1,538 byte-times gives an ideal payload rate of about 949.3 Mb/s. One such budget lasts 12.304 microseconds. This explains part of the difference between a link label and a payload number. It assumes continuously supplied full packets, adequate acknowledgments and no retransmissions; completing an actual file operation involves more than this repeated-frame calculation.

Count the packet and the time around it separately. Untagged IPv4/TCP example without header options. The final 1,538 byte-times include a gap; they are not a 1,538-byte MAC frame.
Untagged IPv4/TCP example without header options. The final 1,538 byte-times include a gap; they are not a 1,538-byte MAC frame. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
05

A packet-size change alters the useful fraction

Now construct packets containing only 400 TCP-data bytes, with the same headers and timing allowances. Each uses 400 + 78 = 478 byte-times. At a gigabit, its ideal data rate is about 836.8 Mb/s. Nothing happened to the cable’s nominal rate. More of each repeated packet budget is now spent carrying headers and allowing the gap. This comparison is arithmetic under a chosen packetization, not a measured penalty for every small file. [4][5]

Options provide another example. Keep the IP packet at 1,500 bytes, but suppose the TCP header contains 12 additional bytes of options and padding. Its total is now 32 bytes, leaving 1,448 TCP-data bytes after the 20-byte IPv4 header. The outer time budget stays 1,538 byte-times, giving about 941.5 Mb/s. TCP’s specification requires the sender to account for options when choosing how much data a segment can carry. [5]

An MTU is a size limit, not an instruction that every packet must be full. Nor does one application write necessarily become one TCP segment: TCP carries a byte stream and can divide or combine application writes differently. [5] Our 400-byte case explicitly assumes that actual segment size. This is why a performance explanation needs packet information rather than guessing it from the size of a message shown by an application.

06

The busiest constraint can differ from the slowest link

A path can have room for less new traffic even when every connection retains the same speed. RFC 5136 distinguishes a link’s capacity from the part available after existing traffic. It also distinguishes the link with the smallest capacity from the link with the least available capacity. These can be different places. The time interval matters because the traffic using the path can change. [3]

Here is a separate invented example, with every rate measured at the IP layer over the same interval. Link A has 500 Mb/s of capacity and 100 Mb/s already used, leaving 400. Link B has 1,000 Mb/s and 800 already used, leaving 200. Link C has 1,000 Mb/s and 100 already used, leaving 900. A has the smallest capacity, but B leaves the least room.

Under that model, the available path capacity is 200 Mb/s, set by B. Those numbers are IP-layer quantities, including IP headers; they are not the earlier nominal Ethernet labels or a promise of 200 Mb/s of file data. [3] The example explains why checking only the slowest advertised port can miss the active limitation. It also explains why a result from a quiet period may differ from one recorded while the same route carries other traffic.

The least available capacity can sit on a faster link. Separate hypothetical IP-layer rates over one interval, in Mbit/s. A is the narrow link; B is the tight link. This is not promised TCP goodput.
Separate hypothetical IP-layer rates over one interval, in Mbit/s. A is the narrow link; B is the tight link. This is not promised TCP goodput. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
07

A file rate needs the byte count and the clock together

Imagine a transfer result that records 420,000,000 unique file bytes delivered in six seconds. Dividing gives 70,000,000 bytes per second, or 70 decimal MB/s. Multiplying by eight gives 560 Mb/s. The two rates describe the same constructed result. A capital B means bytes; a lower-case b means bits. Throughout this article, mega means one million, so no binary-unit conversion is hidden in the comparison.

The word “unique” also matters. If some data is transmitted again, those extra transmissions do not make the completed file larger. A traffic counter can count a different population from an application’s finished-file counter. RFC 5136 distinguishes unique transport data from IP-layer bits; RFC 6349 separately accounts for retransmitted bytes. Microsoft’s interface counters also include traffic such as broadcast and multicast, which may not belong to the particular file being copied. [2][3][4]

The six-second interval needs a definition too. Did it include connection setup and opening the file, or only the central transfer period? Did the interface counter cover other activity? The hypothetical 560 Mb/s result cannot answer those questions by itself. Preserve the source of the byte count and the start and finish events before comparing two displays or deciding how much of the link was useful to this job.

08

The application has work on both sides of the cable

A complete file copy has to supply data at one end and consume it at the other. Imagine a sender that can provide only 50 MB of useful file data each second. Even a path with room for more cannot deliver that particular file faster than it is supplied in this steady example. A receiver that processes incoming data slowly can create another limit. The connection label describes neither application’s work rate.

The testing framework in RFC 6349 requires the endpoint to be capable of generating and receiving the traffic being assessed. It also asks reports to identify the TCP implementation and test conditions. [4] A memory-based traffic result and an application copying a stored project may therefore answer different questions. The latter includes its data source, protocol processing and destination workflow, while the former can intentionally examine a narrower path.

When a good network result sits beside a slower file operation, identify the work included in each result. The difference alone does not identify a cable, disk or processor fault. Our 50 MB/s source limit explains one possible boundary. A useful bottleneck claim names the constrained stage and the observations supporting that conclusion.

09

TCP can need more data in flight to keep a fast path busy

A reliable transfer does not treat an unlimited amount of unacknowledged data as safe to send. TCP has a receive window reflecting what the receiver can accept, and congestion control also limits sending. The amount allowed to remain in flight can change during a connection. Round-trip time measures the trip involved in sending data and receiving a response. These transport conditions are separate from the Ethernet link rate. [4][5]

In another simplified example, assume at most 200,000 TCP-data bytes can remain in flight and the round-trip time is 16 milliseconds. Replacing that amount once per round trip gives 200,000 × 8 ÷ 0.016 = 100,000,000 bits per second, or 100 Mb/s. A gigabit local connection does not by itself remove that limit. The example assumes steady progress and enough capacity elsewhere to isolate the window relationship.

To sustain 800 Mb/s at that same 16-millisecond round trip, the corresponding flight budget would be 1,600,000 bytes. Having that budget would not guarantee the rate: the path, congestion control and endpoints still matter. RFC 6349 explains this relationship between flight capacity and delay, while RFC 9293 allows different conforming congestion-control algorithms. [4][5] The calculation helps interpret a result; it does not select a buffer setting for an unknown network.

A fast link can still meet a smaller TCP flight budget. Separate simplified steady example. Adequate path capacity and continuous supply are assumed; a sufficient window does not guarantee the target rate.
Separate simplified steady example. Adequate path capacity and continuous supply are assumed; a sufficient window does not guarantee the target rate. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
10

Two speed results are comparable only when their scope matches

Suppose one result reports several simultaneous transfers added together, while another reports one file. A larger total does not show that the single file could have reached the same rate. Similarly, uploading to one endpoint and downloading from another changes both the direction and the work being timed. Keep the number of connections, sender, receiver and direction with the reported result rather than treating every speed display as the same test.

The protocol frameworks attach results to their layer, interval, path and transport conditions. RFC 6349 also distinguishes measured results from an ideal achievable value and records effects such as retransmission and increased round-trip delay. [3][4] Two similar average data rates can therefore hide different behavior. One may involve stable delivery; another may combine bursts and waits. An average alone cannot describe every pause that an interactive application experiences.

Start with existing observations: the active interface, its operational state, the endpoints, counted bytes and timing scope. Ask which additional observation would distinguish the competing explanations. A precise display can be correct while answering a different question from the one you had in mind. Matching that question makes the comparison useful.

11

Keep a connection record that preserves the meaning of each rate

A useful record has five parts: the established local link and direction; the sender, receiver and path; the packet and header assumptions; the transport conditions; and the application’s byte count with its timing interval. These fields turn “my gigabit connection is slow” into a statement someone can investigate. They also separate facts you observed from assumptions used in an estimate.

For example, the constructed 420 MB transfer in six seconds supports “70 decimal MB/s of unique file data during this interval.” It does not independently prove a cable fault, a 560 Mb/s link, or the amount of available IP capacity. The 949.3 Mb/s calculation answers a different question under the full-packet model. RFC 5136’s layer definitions and the TCP testing framework explain why both numbers need their boundaries. [3][4]

The connection label identifies one capability and can help locate an unexpectedly slow segment. Connect that local fact to the route, packet budget and completed job. A lower file rate then becomes a quantity you can interpret, with specific missing observations to investigate instead of an unexplained gap between two numbers.

Build the performance statement from identified evidence. A connection record should distinguish observations from analytical assumptions and preserve the work that each result actually measures.
A connection record should distinguish observations from analytical assumptions and preserve the work that each result actually measures. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
Follow the evidence

Sources & further reading

Explore the references behind this guide. External pages may change after our review.

  1. RFC 3635: Definitions of Managed Objects for the Ethernet-like Interface Types
    IETF / RFC Editor · Accessed 7 Nov 2026
  2. MIB_IF_ROW2 (netioapi.h) - Win32 apps | Microsoft Learn
    Microsoft · Accessed 6 Nov 2026
  3. RFC 5136: Defining Network Capacity
    IETF / RFC Editor · Accessed 6 Nov 2026
  4. RFC 6349: Framework for TCP Throughput Testing
    IETF / RFC Editor · Accessed 6 Nov 2026
  5. RFC 9293: Transmission Control Protocol (TCP)
    IETF / RFC Editor · Accessed 6 Nov 2026
  6. RFC 791: Internet Protocol
    IETF / RFC Editor · Accessed 6 Nov 2026

Article updated 7 Nov 2026.

Found something we should revisit?

Good explanations get better with thoughtful feedback.

Suggest a correction