导航:首页 > 网络数据 > udp发送大数据包

udp发送大数据包

发布时间:2023-05-26 18:32:19

1. linux 应用层用udp发送数据时有大小限制吗

从理论上来说,UDP数据的总长度为 65535(IP最大长度)-20(IP头)-8(UDP头) = 65507个字节,但大多数系统都达不到这个长度。这一般是受到两个方面的因素限制:
1) 应用程序编程接口限制。一般socket的缓冲区大小是8K,但都提供API来设置缓冲区的大小(SetSockOpt)。一般发送UDP最好不要超过512字节,这样基本可以保证不丢包(因为大部分网络和主机的MTU都大于512).
2) TCP/IP内核的限制。可能存在一些实现特性使得IP长度不能达到65535。

由于IP能够发送或接收特定长度的数据报并不意味着接收应用程序可以读取该长度的数据。因此,UDP编程接口允许应用程序指定每次返回的最大字节数。如果接收到的数据报长度大于应用程序所能处理的长度,那么会发生什么情况呢?典型的Berkeley版socket API对数据报进行截断,并丢弃任何多余的数据;SVR4下的socket API(包括Solaris 2.x) 并不截断数据报。超出部分数据在后面的读取中返回。它也不通知应用程序从单个UDP数据报中多次进行读取操作;TLI API不丢弃数据。相反,它返回一个标志表明可以获得更多的数据,而应用程序后面的读操作将返回数据报的其余部分。

UDP不会分片,分片是IP层做的事,而且分片重组也是IP层负责的。
如果用UDP发送数据,数据量最好不要太大,应该避免IP层和链路层分包,防止分片丢失,导致整个UDP数据包丢失。

2. 采用UDP方式接收和发送的包的最大长度是多少

传输层:对于UDP协议来说,整个包的最大长度为65535,其中包头长度是65535-20=65515;
对于TCP协议来说,整个包的最大长度是由最大传输大小(MSS,Maxitum Segment Size)决定,MSS就是TCP数据包每次能够传
输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需
要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值
确定为这次连接的最大MSS值。
IP层:对于IP协议来说,IP包的大小由MTU决定(IP数据包长度就是MTU-28(包头长度)。 MTU值越大,封包就越大,理论上可增加传送速率,但
MTU值又不能设得太大,因为封包太大,传送时出现错误的机会大增。一般默认的设置,PPPoE连接的最高MTU值是1492, 而以太网
(Ethernet)的最高MTU值则是1500,而在Internet上,默认的MTU大小是576字节
实际UDP的包长度不要超过MTU值,一般不建议超过1K。
参考:https://..com/question/2265686089445142988.html

3. 求教UDP协议发送数据包的大小问题

UDP 包的大小就应该是 1492 - IP头(20) - UDP头(8) = 1464(BYTES)
TCP 包的大小就应该是 1492 - IP头(20) - TCP头(20) = 1452(BYTES)
目前大多数的路由设备的MTU都为1500
我对上面的理解是:如果我们定义的TCP和UDP包小于1452,1464,那么我们的包在IP层就不用分包了,这样传输过程中就避免了在IP层组包发生的错误。如果使用UDP协议,如果IP层组包发生错误,那么包就会被丢弃,UDP不保证可靠传输。但是TCP发生组包错误时,该包会被重传,保证可靠传输。所以,我们在用Socket编程时,包的大小设定不一定非要小于1400,UDP协议要求包小于64K,TCP没有限定。
总结:
我们设定包的大小对于UDP和TCP协议是不同的,关键是看系统性能和网络性能,网络是状态很好的局域网,那么UDP包分大点,提高系统的性能。不好,就分小于1464,这样可以减低丢包率。对于TCP来说,这个就要靠经验了,因为,TCP丢包可以自动重传,分大了,系统性能提高了,分包和错误重组可能会耗费时间,使传送时间延长,分小了,系统性能又降低了

4. 如何用udp包发大文件,高手看过来......

若用SendStream(),文件跨越2k是就会溢出。若要用udp协定传输文件,应用SendStream办法照样用SendBuffer办法?向大人人就教,感谢。

5. UDP数据包允许的最大数据长度是多少

首先,我们知道,tcp/ip通常被认为是一个四层协议系统,包括链路层,网络层,运输内层,应用层.
udp属于运输层,下面我们由下至上一容步一步来看:
以太网(ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.
这个1500字节被称为链路层的mtu(最大传输单元).但这并不是指链路层的长度被限制在1500字节,其实这这个mtu指的是链路层的数据区.
并不包括链路层的首部和尾部的18个字节.
所以,事实上,这个1500字节就是网络层ip数据报的长度限制.
因为ip数据报的首部为20字节,所以ip数据报的数据区长度最大为1480字节.
而这个1480字节就是用来放tcp传来的tcp报文段或udp传来的udp数据报的.又因为udp数据报的首部8字节,所以udp数据报的数据区最大长度为1472字节.
这个1472字节就是我们可以使用的字节数。:)

6. C++ UDP传输大文件问题

如果坚持使用UDP的话,你可以尝试这样做:
发送文件方(以下称S)每次发送你自定义大小的一帧数据,并在数据头加上数据长度。
接收文件方(以下称R)接收到一帧数据,读取数据长度,然后累加,直到接收数据总量达到长度。

另外,R读取一次数据以后应回应S,告知其可以继续发送。而S则需等待可以发送的指令到来。
这样能一定程度上因R和S缓冲区不同,数据速率不同导致的问题。

如果要更保险一些,可以加上验证,比如在开始发送文件之前先获取R的缓冲区大小,以及发送几次验证数据。

7. 局域网多台电脑发送大量UDP数据包给本地网络,应如何防范

你看该计算机是否正常,如果没有中病毒,那么可以不用管它。网络内部会自历含动发一含烂瞎下UDP数据,但19540端口似乎有点问题。你可以配谈空置你的放火墙不报警该规则,但是丢弃或拦击该数据包就可以了。

8. 求教UDP协议发送数据包的大小问题

100字节是绰绰有余的,据我所了解的UDP,包括java中构造方法

byte[] buffer = new byte[8192];

DatagramPacket dp = new DatagramPacket(buffer, buffer.length);

对此构造方法而言,它并不在乎缓存能有多大而且会很高兴让你判银创建一个数兆字节大小的DatagramPacket。
然而,然后底层的原生网络软件就少宽容了,最原始UDP实现不支持超过 8,192 byte/datagram。IPv4的理论极限datagram是65,507字节,而如果一个DatagramPacket对象带有65,507字节大小的缓存的话就可以无损接收任何可能的IPv4 datagram。许多基于UDP的协议如DNS和TFTP会使用每datagram 512字节或更少。NFS的普通使用最大数据大小是余稿8,192字节。几乎所有的你可能碰到的UDP datagrams是8K或更少。实际上,许多操作系统并不支持超过8K数据的UDP datagrams,或截断、或分拆,或丢弃。如果一个datagram因过大而遭到网络截断或丢弃,你的java程序并不会被通知到该问题的存在(UDP毕竟是不可靠协议) 。因此,竖冲孝你不应该创建超过8,192字节的DatagramPacket对象。

9. 一般每秒钟发送多少个udp数据包,服务器就会卡

用UDP给上位机软件颂仔发数据包,一个数据包最大1000字节,一帧数据可能1-20KB。不停的连续渗袜发送。不加延时的时候,一次发送17个1000字节的数据包,后面的几个会丢掉,可能是我缓冲区的设置问题,因为是非阻塞的。然后我在网络助手野喊汪里面看到发上来的数据,固定的能收到9个包,合计9000字节。然后这9个包用了60ms的时间,这个时间也太长了吧。

10. udp一次能够传递的最大数据是多少

UDP中的总长度字段为2字节 所能表示的最大数为65535 UDP协议头本身占据了8字节 所以所能发送的最大数据长度是65535-8=65527

阅读全文

与udp发送大数据包相关的资料

热点内容
数据ltc是什么意思 浏览:568
顺序表存储数据结构有哪些特点 浏览:891
苹果手机在微信怎么搜索文件 浏览:375
数据库服务怎么重启 浏览:841
苹果6s通话声音太小 浏览:517
什么是数据分析法 浏览:659
多页双面文件按顺序复印如何操作 浏览:772
diskgen硬盘工具 浏览:642
后端编程哪个好 浏览:540
编程哪个软件最简单 浏览:591
山西运城疫苗用哪个app预约 浏览:413
有线网络电视机顶盒如何看直播 浏览:909
linux挂载硬盘home 浏览:964
word2010全部接受修订 浏览:802
咋找文件管理中找下载路径 浏览:967
冒险小镇怎么快速升级 浏览:573
如何修改5g手机的5g网络 浏览:486
为什么网站查不到流量 浏览:215
微信录音怎么录音文件 浏览:450
iphone6显示无法满屏 浏览:747

友情链接