UDP数据包的大小

简介:

问题来源于日志信息,在这里总结一下,后续在补充新的内容。


  1. 在链路层,由以太网的物理特性决定了数据帧的长度为(46+18)---(1500+18),其中的18是链路层的首部和尾部18Bytes,也就是说数据帧的内容最大为1500(不包括帧头和帧尾),事实上,这个1500就是网络层的IP数据报的长度限制,即MTU(Maximum Transmission Unit)为1500;  

  2. 在网络层,因为IP包的首部要占用20字节,所以这的MTU为1500-20=1480,这个1480就是用来存放TCP传来的TCP报文段或者UDP传来的UDP数据报的;

  3. 在传输层,对于UDP包的首部要占用8字节,所以这的MTU为1480-8=1472,也就是用户可以使用的部分;

     
    所以,在应用层,你的Data最大长度为1472。 (当我们的UDP包中的数据多于MTU(1472)时,发送方的IP层需要分片fragmentation进行传输,而在接收方IP层则需要进行数据报重组,由于UDP是不可靠的传输协议,如果分片丢失导致重组失败,将导致UDP数据包被丢弃)。  


因此,在普通局域网络环境下,使用UDP传输的时候,建议将UDP的数据控制在1472以下比较好。


IP数据包的最大长度为65535,因为在IP包头中用2个字节来描述报文长度,2个字节所能表示的大小就是65535;


就具体函数而言:

    用UDP协议发送时,用sendto函数最大能发送数据的长度为:65535- IP头(20) - UDP头(8)=65507字节。用sendto函数发送数据时,如果发送数据长度大于该值,则函数会返回错误。



本文转自 七十七快 51CTO博客,原文链接:http://blog.51cto.com/10324228/1983469
相关文章
|
网络协议 安全 网络安全
【UDP】——为什么 UDP 数据包不能超过 512 个字节
一开始了解的是 DNS 服务使用的是 UDP 协议,后面看到 DNS 服务主要使用 UDP 协议,在少数情况(传输的数据超过 512 个字节)下也会使用 TCP 协议,因为 UDP 数据包不能超过 512 个字节。那问题来了,为什么 UDP 数据包不能超过 512 个字节呢?
3071 0
【UDP】——为什么 UDP 数据包不能超过 512 个字节
|
6月前
|
网络协议 iOS开发 MacOS
LabVIEW在快速传输速率下丢失UDP数据包
LabVIEW在快速传输速率下丢失UDP数据包
82 0
|
存储 网络协议 安全
IPsec ESP 数据包的 UDP 封装
选择共享 IKE 和 UDP 封装的 ESP 流量的端口号是因为它提供了更好的扩展性(NAT 中只有一个 NAT 映射;无需发送单独的 IKE keepalive)、更容易配置(仅在防火墙中配置一个端口),更容易实现。
1358 0
IPsec ESP 数据包的 UDP 封装
|
Java 数据处理
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
500 0
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
|
Python
python伪造udp数据包
#!/usr/bin/python #coding:utf-8 import socket import struct from random import randint def checksum(data): ...
2332 0
|
网络协议 网络性能优化 安全
用户数据包协议(user datagram protocol)——UDP
用户数据报协议(User Datagram Protocol,UDP)是无连接不可靠传输层协议。它不提供主机到主机通信,它除了提供进程到进程之间的通信之外,就没有给 IP 服务增加任何东西。
1686 0
|
23天前
|
网络协议 算法 网络性能优化
|
11天前
|
网络协议 SEO
TCP连接管理与UDP协议IP协议与ethernet协议
TCP、UDP、IP和Ethernet协议是网络通信的基石,各自负责不同的功能和层次。TCP通过三次握手和四次挥手实现可靠的连接管理,适用于需要数据完整性的场景;UDP提供不可靠的传输服务,适用于低延迟要求的实时通信;IP协议负责数据包的寻址和路由,是网络层的重要协议;Ethernet协议定义了局域网的数据帧传输方式,广泛应用于局域网设备之间的通信。理解这些协议的工作原理和应用场景,有助于设计和维护高效可靠的网络系统。
23 4
|
17天前
|
缓存 负载均衡 网络协议
面试:TCP、UDP如何解决丢包问题
TCP、UDP如何解决丢包问题。TCP:基于数据块传输/数据分片、对失序数据包重新排序以及去重、流量控制(滑动窗口)、拥塞控制、自主重传ARQ;UDP:程序执行后马上开始监听、控制报文大小、每个分割块的长度小于MTU