iacceptit
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2003-07-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2910回复:10

buffer最大能多大?

楼主#
更多 发布于:2002-06-18 10:29
一个buffer 描述符,指向的data空间,最大能多大,是不是可以无限制的大(系统允许),
   我想,既然,使用的是buffer chain 结构,那对buffer的大小就应该有一定限定吧,不然,就可放在一个buffer中了。
  可我收到的包都是一个buffer的,也可能是它太小了。
  
  哪位大虾,能说一下,这个buffer的最大时多大,怎样才能get多buffer的packet.谢谢!
fenger_li
驱动老牛
驱动老牛
  • 注册日期2002-03-26
  • 最后登录2005-04-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-27 17:38
我认为,之所以做成buffer chain,主要是考虑到网络分层的问题.比如说,tcp分配了一个segment,传递给ip模块,ip分配了一个ip头,然后加入到buffer chain ,然后arp模块加一个mac头,等等.
看linux源代码得到了这个思路,跟踪windows 2000 tcpip.sys得到了部分验证,只是部分!!!
所以icmp发送用四个buffer,就是因为他经过了四个层次添加
至于buffer能够多大,应该没有很多的限制!ndis_buffer是一个mdl,也就是说,它是一种地址映射机制,因此只是受系统可以空间的影响
请多多指教!!!


我倒觉得与linux的有些不同.
hehe
有点意思。。。 呵呵!
guo
guo
驱动牛犊
驱动牛犊
  • 注册日期2001-11-02
  • 最后登录2002-07-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-27 15:11
buffer在windows中实际上是MDL结构(用描述虚拟内存的),是一个双向链表。理论上可以是4G空间,当然还得去掉系统占用的部分:)
一个packet可能含有多个buffer,因此必须用getfirstbuffer和getnextbuffer遍历一次才能访问到所有数据。
jyhlc
驱动牛犊
驱动牛犊
  • 注册日期2002-03-11
  • 最后登录2005-11-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-27 15:05
我认为,之所以做成buffer chain,主要是考虑到网络分层的问题.比如说,tcp分配了一个segment,传递给ip模块,ip分配了一个ip头,然后加入到buffer chain ,然后arp模块加一个mac头,等等.
看linux源代码得到了这个思路,跟踪windows 2000 tcpip.sys得到了部分验证,只是部分!!!
所以icmp发送用四个buffer,就是因为他经过了四个层次添加
至于buffer能够多大,应该没有很多的限制!ndis_buffer是一个mdl,也就是说,它是一种地址映射机制,因此只是受系统可以空间的影响
请多多指教!!!
iacceptit
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2003-07-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-25 17:17
多谢各位!
fenger_li
驱动老牛
驱动老牛
  • 注册日期2002-03-26
  • 最后登录2005-04-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-06-20 18:16
你不必去关心buffer的大小,
只知道他大小肯定够一个包用了就行了。

至于,为什么icmp 发用四个buffer,收用一个buffer.
这个我也发现了,不清楚他怎么做的。

如果那位清楚,也麻烦告诉我一声.
嗬嗬!

有点意思。。。 呵呵!
gjpland
驱动小牛
驱动小牛
  • 注册日期2001-09-13
  • 最后登录2011-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-06-20 16:52
申请一个64K的大小的包,一般MTU是不会大于64K的。
我思故我在,脑袋不会坏.
Quakexg
驱动小牛
驱动小牛
  • 注册日期2001-11-21
  • 最后登录2012-02-29
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望56点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-06-20 15:56
多大我不知道,但是我用过60000的,估计一般够了
iacceptit
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2003-07-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-06-20 10:13
有人知道么?
两位斑竹知道么?
 :o :(
iacceptit
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2003-07-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-06-19 16:24
???
iacceptit
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2003-07-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-06-19 10:57
一个buffer 描述符,指向的data空间,最大能多大,是不是可以无限制的大(系统允许),
我想,既然,使用的是buffer chain 结构,那对buffer的大小就应该有一定限定吧,不然,就可放在一个buffer中了。
我试了一下ping操作,发现发出的packet是多buffer的,而接受的packet是单buffer的。
  但发出的多buffer的每个buffer长度都很小,好像不是因为包太大而使用多buffer的,想不清真正的原因。
   我现在最想知道的是,buffer的最大时多,和分为多buffer的原因,如果那为知道,麻烦告诉小弟一下,谢谢!

游客

返回顶部