网络中的大包和小包相关问题总结

简介: 网络中的大包和小包相关问题总结

所谓大包就是一个数据包内,包含的数据字段比较多。整个数据包最大不超过1500字节。小包也是一样的,就是包含的数据字段比较少,整个包最小可以在64字节。一般来说,数据包的大小主要由程序来控制。比如游戏,他要求强烈的实时性,低延迟。报文交互频繁,但是速度一定要快。游戏类的数据包基本都是小包。大包主要是,视频,下载之类的,因为这种报文需要尽可能的为你提供更高的下载速率。他的报文基本上都是最大的。小包一般用于控制,比如dns请求,网络游戏等。

如果你玩游戏,看网页,一般小包居多。如果你下载文件,看视频,大包居多。

路由设备在转发的过程中,其实转发的只是MAC跟IP,一般的路由都不会去窥探报文数据的。(越界的不算)。所以,小包的转发速度就意味着设备的转发性能。当然了,大包转发的速度一般来说会更低。大包的数据字段也是要转发传输的。协议不论,大包小包就是简单的 : 数据包的大小。

网络传输小包数据的潜在问题:

同样数据量的buffer,比如1500字节的数据,分10包 x 150发送和1包 x·1500发送,对比如下:

(1)10包数据,需要10个20字节ip头信息,7字节帧前导,1字节帧首界定符及帧与帧之间的12字节的默认帧间距,而这些都是通常意义的网络带宽的一部分,所以小包会造成带宽的浪费。

(2)在存储转发的模型下,报文的收发及查表都需要访存,那么小包的处理,需要访存的次数x10,降低了cache命中的几率,而cache未命中,消耗的是cpu的时钟周期,所以小包处理增加了cpu的负担。

(3)150字节的包的时间间隔约为35ns,而1500的包的时间间隔约为300ns,35x10的间隔时间要大于1x300ns,所以小包处理增加了报文处理的时延。

所以在x86的平台上,应尽量避免小包的发送,当然大包的大小也需要考虑交换机,路由器的最大MTU的设置而定,通常是1500字节为宜。

在网络情况良好的情况下,当然是一次发送一个大包更加快,因为这样就减少了接收和发送缓冲区确认的时间了。

在网络不佳的情况下,建议还是拆包发送比较好,因为这样就降低了丢包重传的成本。

如果你在应用层组包太小的话,会在发送缓冲区自动粘包发送的。

相关文章
|
2月前
|
存储 网络协议 网络性能优化
网络传输延迟
网络传输延迟
23 1
|
10月前
|
网络协议 算法 网络架构
关于网络的知识总结(一)
关于网络的知识总结(一)
180 0
|
7月前
|
人工智能 Windows
那些年,我做过的有关网络方面的“第一次”(一)
那些年,我做过的有关网络方面的“第一次”(一)
26 0
|
7月前
|
网络协议 程序员 网络架构
网络初识必知会
网络初识必知会
22 0
|
7月前
|
SQL 网络协议 网络性能优化
网络七层协议详解
网络七层协议详解
206 1
|
7月前
网络四元组
网络四元组
|
9月前
|
弹性计算 Kubernetes 负载均衡
一次网络不通“争吵”引发的思考
一次网络不通“争吵”引发的思考
56120 47
|
10月前
|
网络架构
关于网络的知识总结(二)
关于网络的知识总结(二)
156 0
|
网络协议 安全 JavaScript
掌握《网络》,见微才能知著
本文主要介绍 网络
244 0