阅读:2910回复:10
buffer最大能多大?
一个buffer 描述符,指向的data空间,最大能多大,是不是可以无限制的大(系统允许),
我想,既然,使用的是buffer chain 结构,那对buffer的大小就应该有一定限定吧,不然,就可放在一个buffer中了。 可我收到的包都是一个buffer的,也可能是它太小了。 哪位大虾,能说一下,这个buffer的最大时多大,怎样才能get多buffer的packet.谢谢! |
|
沙发#
发布于:2002-06-27 17:38
我认为,之所以做成buffer chain,主要是考虑到网络分层的问题.比如说,tcp分配了一个segment,传递给ip模块,ip分配了一个ip头,然后加入到buffer chain ,然后arp模块加一个mac头,等等. 我倒觉得与linux的有些不同. hehe |
|
|
板凳#
发布于:2002-06-27 15:11
buffer在windows中实际上是MDL结构(用描述虚拟内存的),是一个双向链表。理论上可以是4G空间,当然还得去掉系统占用的部分:)
一个packet可能含有多个buffer,因此必须用getfirstbuffer和getnextbuffer遍历一次才能访问到所有数据。 |
|
地板#
发布于: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,也就是说,它是一种地址映射机制,因此只是受系统可以空间的影响 请多多指教!!! |
|
地下室#
发布于:2002-06-25 17:17
多谢各位!
|
|
5楼#
发布于:2002-06-20 18:16
你不必去关心buffer的大小,
只知道他大小肯定够一个包用了就行了。 至于,为什么icmp 发用四个buffer,收用一个buffer. 这个我也发现了,不清楚他怎么做的。 如果那位清楚,也麻烦告诉我一声. 嗬嗬! |
|
|
6楼#
发布于:2002-06-20 16:52
申请一个64K的大小的包,一般MTU是不会大于64K的。
|
|
|
7楼#
发布于:2002-06-20 15:56
多大我不知道,但是我用过60000的,估计一般够了
|
|
8楼#
发布于:2002-06-20 10:13
有人知道么?
两位斑竹知道么? :o :( |
|
9楼#
发布于:2002-06-19 16:24
???
|
|
10楼#
发布于:2002-06-19 10:57
一个buffer 描述符,指向的data空间,最大能多大,是不是可以无限制的大(系统允许),
我想,既然,使用的是buffer chain 结构,那对buffer的大小就应该有一定限定吧,不然,就可放在一个buffer中了。 我试了一下ping操作,发现发出的packet是多buffer的,而接受的packet是单buffer的。 但发出的多buffer的每个buffer长度都很小,好像不是因为包太大而使用多buffer的,想不清真正的原因。 我现在最想知道的是,buffer的最大时多,和分为多buffer的原因,如果那为知道,麻烦告诉小弟一下,谢谢! |
|