Search code examples
tcpudpsize

Size of empty UDP and TCP packet?


What is the size of an empty UDP datagram? And that of an empty TCP packet?

I can only find info about the MTU, but I want to know what is the "base" size of these, in order to estimate bandwidth consumption for protocols on top of them.


Solution

  • TCP:

    Size of Ethernet frame - 24 Bytes
    Size of IPv4 Header (without any options) - 20 bytes
    Size of TCP Header (without any options) - 20 Bytes

    Total size of an Ethernet Frame carrying an IP Packet with an empty TCP Segment - 24 + 20 + 20 = 64 bytes

    UDP:

    Size of Ethernet frame - 24 Bytes
    Size of IPv4 Header (without any options) - 20 bytes
    Size of UDP header - 8 bytes

    Total size of an Ethernet Frame carrying an IP Packet with an empty UDP Datagram - 24 + 20 + 8 = 52 bytes

    EDIT: the above incorrectly states the ethernet frame bytes as 24B. It's instead 18 (or 22 for VLAN-tagged ethernet). The 8B preamble is not part of the minimal-64B frame. So the minimum IPv4+TCP packet is 18+20+20=58 bytes, and minimal IPv4+UDP is 18+20+8=46 bytes. In those cases, there would need to be ethernet padding to fill the frame up to 64B (6B padding for the TCP example, 18B for the UDP example)

    https://superuser.com/a/394413 agrees with this edit