当前位置: 技术问答>linux和unix
**高分请教,tcp数据包一次write多大合适**
来源: 互联网 发布时间:2015-10-17
本文导语: 1. tcp数据包是多大, 一次write多少数据量合适, 才能使网络性能达到最佳? 2. 假设tcp数据包是1K, write1次2K与write2次1K, 从网络性能考虑, 有区别吗? 补充: 以上的write, 是指程序中的函数或系统调用, 并非底层tcp...
1. tcp数据包是多大, 一次write多少数据量合适, 才能使网络性能达到最佳?
2. 假设tcp数据包是1K, write1次2K与write2次1K, 从网络性能考虑, 有区别吗?
补充:
以上的write, 是指程序中的函数或系统调用,
并非底层tcp自动切分数据, 分组发送.
2. 假设tcp数据包是1K, write1次2K与write2次1K, 从网络性能考虑, 有区别吗?
补充:
以上的write, 是指程序中的函数或系统调用,
并非底层tcp自动切分数据, 分组发送.
|
TCP有个最大分节大小(MSS)选项
可设置发送数据量的最大值
此值可设典型值为1024
一般数据包越大由于传输的次数减少
使得加在数据上的额外比特的比例降低
因而效率更高
但是由此也使得延时增加,需要更大buffer等问题
实际上数据包多大要根据发送数据类型,网络情况而定
比如你需要多次发送数据但每次数据量比较小
或数据实时性要求比较高
那么采用小的数据包更合适
反之需要一次发送大量数据
大的数据包效率更高
还有数据在以太网上传输和在光纤上传输
最合适的数据包大小也有区别
可设置发送数据量的最大值
此值可设典型值为1024
一般数据包越大由于传输的次数减少
使得加在数据上的额外比特的比例降低
因而效率更高
但是由此也使得延时增加,需要更大buffer等问题
实际上数据包多大要根据发送数据类型,网络情况而定
比如你需要多次发送数据但每次数据量比较小
或数据实时性要求比较高
那么采用小的数据包更合适
反之需要一次发送大量数据
大的数据包效率更高
还有数据在以太网上传输和在光纤上传输
最合适的数据包大小也有区别
|
首先说明 你上层应用write 多大 与底下协议栈发送多大没有必然联系
比如你快速连续发送两个tcp数据报 每个500字节 , 可能实际发出的是一个1000字节的数据报
除非你做了特殊设置,如楼上 或者 从网络驱动着手 才能按你的输入大小发送数据报
另外 你所应用的网络协议 确定了你发送单个数据报的最大包长 以太网 MTU:1500(当然这个也是可以根据你所连接的交换机的配置相应自动更改的) ATM 一般是 4470
另外给你举一个例子 我是做交换机的 在测试时 会有一组用于测试速度的常用包长, 64 128 512 1024 .. 当以64字节线速打的时候一般都会有丢包 而越高包长丢的越少 ,之所以这样是因为我们大部分以太网交换机都是存储转发 对于硬件来说处理 64字节 和 1024字节 是一样的 但是同样速度 小的包长回造成单位时间发送数据报多 这样就是交换机的包交换能力达到极限, 缓存不足 等等 造成丢包
我想以上说的可能远了点 但对于你了解一下网络会有帮助的
比如你快速连续发送两个tcp数据报 每个500字节 , 可能实际发出的是一个1000字节的数据报
除非你做了特殊设置,如楼上 或者 从网络驱动着手 才能按你的输入大小发送数据报
另外 你所应用的网络协议 确定了你发送单个数据报的最大包长 以太网 MTU:1500(当然这个也是可以根据你所连接的交换机的配置相应自动更改的) ATM 一般是 4470
另外给你举一个例子 我是做交换机的 在测试时 会有一组用于测试速度的常用包长, 64 128 512 1024 .. 当以64字节线速打的时候一般都会有丢包 而越高包长丢的越少 ,之所以这样是因为我们大部分以太网交换机都是存储转发 对于硬件来说处理 64字节 和 1024字节 是一样的 但是同样速度 小的包长回造成单位时间发送数据报多 这样就是交换机的包交换能力达到极限, 缓存不足 等等 造成丢包
我想以上说的可能远了点 但对于你了解一下网络会有帮助的
|
qfxx(秋风萧萧) 说的好!
还想补充一点的就是在包的发送端,包的大小通常被网络最大传输单元(MTU)所限制,令牌环好像是4K,但还有一个限制就是路径最大传输单元(PMTU),如果你发送的包太大,以至于在很多的路由节点都要频繁重新组包,那可真是欲速则不达了。
还想补充一点的就是在包的发送端,包的大小通常被网络最大传输单元(MTU)所限制,令牌环好像是4K,但还有一个限制就是路径最大传输单元(PMTU),如果你发送的包太大,以至于在很多的路由节点都要频繁重新组包,那可真是欲速则不达了。
|
同意 qfxx(秋风萧萧) 的意见,按网络状况来定,网络稳定,带宽大的就write多点
网络不稳定或带宽小就write小些
网络不稳定或带宽小就write小些
|
可能4096好一点,这刚好是一页。你试试吧。
|
學習。
|
没试过,可以做个试验来验证一下