UDP数据包最大传输长度
1.概念
以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的。
这个1500字节被称为链路层的MTU(最大传输单元).
但这并不是指链路层的长度被限制在1500字节,其实这这个MTU指的是链路层的数据区.并不包括链路层的首部和尾部的18个字节.
所以,事实上,这个1500字节就是网络层IP数据报的长度限制.
因为IP数据报的首部为20字节,所以IP数据报的数据区长度最大为1480字节。而这个1480字节就是用来放TCP传来的TCP报文段或UDP传来的UDP数据报的。又因为UDP数据报的首部8字节,所以UDP数据报的数据区最大长度为1472字节。这个1472字节就是我们可以使用的字节数。
2.当我们发送的UDP数据大于1472的时候会怎样呢?
这也就是说IP数据报大于1500字节,大于MTU.这个时候发送方IP层就需要分片(fragmentation)。
把数据报分成若干片,使每一片都小于MTU.而接收方IP层则需要进行数据报的重组。
这样就会多做许多事情,而更严重的是,由于UDP的特性,当某一片数据传送中丢失时,接收数据后无法重组数据报.将导致丢弃整个UDP数据报。
因此,在普通的局域网环境下,我建议将UDP的数据控制在1472字节以下为好。
进行Internet编程时则不同,因为Internet上的路由器可能会将MTU设为不同的值。
如果我们假定MTU为1500来发送数据的,而途经的某个网络的MTU值小于1500字节,那么系统将会使用一系列的机制来调整MTU值,使数据报能够顺利到达目的地,这样就会做许多不必要的操作。
3.结语
鉴于Internet上的标准MTU值为576字节,所以我建议在进行Internet的UDP编程时。
最好将UDP的数据长度控件在548字节(576-8-20)以内。
UDP数据包最大传输长度相关推荐
- IP、TCP、UDP数据包长度问题
IP数据包长度问题总结 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层. 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或U ...
- android+udp传输大小,Android UDP数据包如何接收可变大小的数据包
我有一个Android应用程序,它监视UDP数据包并调用一个方法来处理收到的消息.我有一个问题,如果传入的消息更长,它将调用方法来处理消息.但是如果传入的消息较短,则不会调用该方法,但如果我发送短消息 ...
- 以太网,IP,TCP,UDP数据包分析【转】
原文地址:http://www.cnblogs.com/feitian629/archive/2012/11/16/2774065.html 1.ISO开放系统有以下几层: 7 应用层 6 表示层 5 ...
- 【转】TCP、UDP数据包大小的限制
[转]TCP.UDP数据包大小的限制 来自:https://blog.csdn.net/caoshangpa/article/details/51530685 1.概述 首先要看TCP/IP协议,涉及 ...
- TCP,UDP数据包的大小以及MTU
TCP.UDP数据包大小的确定 UDP和TCP协议利用端口号实现多项应用同时发送和接收数据.数据通过源端口发送出去,通过目标端口接收.有的网络应用只能使用预留或注册的静态端口:而另外一些网络应用则可以 ...
- 分析udp数据报_Linux内核网络udp数据包发送(二)——UDP协议层分析
1. 前言 本文分享了Linux内核网络数据包发送在UDP协议层的处理,主要分析了udp_sendmsg和udp_send_skb函数,并分享了UDP层的数据统计和监控以及socket发送队列大小的调 ...
- Linux内核网络协议栈:udp数据包发送(源码解读)
<监视和调整Linux网络协议栈:接收数据> <监控和调整Linux网络协议栈的图解指南:接收数据> <Linux网络 - 数据包的接收过程> <Linux网 ...
- Linux内核网络udp数据包发送(二)——UDP协议层分析
1. 前言 本文分享了Linux内核网络数据包发送在UDP协议层的处理,主要分析了udp_sendmsg和udp_send_skb函数,并分享了UDP层的数据统计和监控以及socket发送队列大小的调 ...
- 原始套接字SOCK_RAW发送UDP数据包
使用原始套接字发送udp数据包,从传输层封包到链路层(mac头+ip头+udp头).udp数据包,从传输层封包到链路层(mac头+ip头+udp头). head.h文件如下: #ifndef _HEA ...
- UDP数据包的延迟及丢包检测(C++)
摘要 本文记录通过数据报套接字来检测UDP数据包的延迟和丢包的思路和简单的代码实现. 思路 UDP协议及用户数据报协议在传输层提供了无连接.不可靠的传输服务,端到端的延迟以及丢包率是反应当前网络环境好 ...
最新文章
- 欢迎进入 K同学啊 的博客目录(全站式导航)
- object的classid收集
- 44个Java代码性能优化总结
- git 短写设置_如何在短短几分钟内设置一个Git客户端
- ic卡消费管理系统_详述食堂消费系统的功能特点
- 在ASP.NET AJAX中使用应用程序服务和本地化(5):自定义应用程序服务的服务器端实现...
- 工具的使用——windows操作系统的使用(二)
- XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Korea
- django view返回form error_Django(解决被钓鱼CSRF、Django中间件、反射)
- Hdu 1794 【二维成段更新】.cpp
- Java中的双冒号::是什么玩意?有这个语法?
- 图灵好书推荐——数学+物理+宇宙
- 【LaTeX】pdfTex error: pdflatex.exe (file simhei.ttf): cannot open TrueType font file for reading解决方案
- Mac 录屏制作gif动图
- VS2010 下载与安装
- 前缀树python实现
- 电镀用整流电源设计matlab,高功率因数的大功率开关电镀电源研究
- java音乐_用JavaJFugue进行音乐编程
- 创新案例分享 | 医院DRG系统建设项目,助力精细化分析医疗数据
- 【What if 系列】全球雪封
热门文章
- linux - ab测试工具
- 用Matlab筛选mirbase,一种基于miRBase数据库的无参的miRNA数据分析方法与流程
- AndroidStudio配置一键360加固gradle脚本
- Java中常见的异常举例
- 最新高通平台驱动开发参考文档
- android思维导图软件推荐,免费好用还跨平台!这5款主流思维导图软件,每一个都让人怒赞...
- matlab——imhist和histeq函数
- leaflet中文文档
- dubbo源码解析之dubbo配置解析
- 萤火虫小程序_【实用工具】微信小程序及练船表(更新至2020年12月1日)