阅读:2300回复:6
从小端口到套接字——效率损失知多少?
近来开发一个频繁同依赖于套接字的服务器端通信的网络程序,不知用套接字比小端口驱动效率低多少?曾请教过他人,说“差不多”。不太放心,所以又来请教。困惑如下:
1.服务器是用套接字的,是不是说明即使使用网卡驱动收发包,TCP的头及三步握手以及UDP的头都是少不了的? 2.网卡缓冲区饱和后能不能用物理内存而不是删包? 3.小端口驱动会把包发给每个协议,协议再丢弃没有自己包头的包? 4.最重要的问题:包在高层和底层间传递时是完全拷贝了缓冲区还是仅仅传递了缓冲区指针? 请高手指点下迷津,给偶建议下不写小端口驱动后果严重否 |
|
沙发#
发布于:2010-05-05 13:01
个人觉得差别不大。
|
|
|
板凳#
发布于:2010-05-05 17:33
根据你的问题判断你知道的很少,感觉做起来会很吃力。
因此建议搞清楚小端口和套接字区别,自然就知道如何选择怎么做了。 |
|
|
地板#
发布于:2010-05-05 19:39
是哦,看不明白你说滴什么东东呢。猜大约是像 Transport driver 一样的东东吧,像netbt.sys 是吧?
现在CPU都相当生猛,没有特别要求谁耐烦去写内核程序呢。起码不是出于效率滴考虑吧。 一是相当繁复,二是有bug直接就bosd鸟,不友好啊。 |
|
地下室#
发布于:2010-05-05 21:46
二楼的回答不错,三楼和四楼听不明白么?尤其是三楼。汗...你们不告诉我我选择什么啊?四楼也是的,哎。传输层到小端口,小端口到传输层,希望有频繁发送过数据包的人说说,我这种情况有没有必要写小端口驱动啊?
|
|
5楼#
发布于:2010-05-07 12:07
呵呵,又一个只想要结果,不想知道为什么的。竟然没有理解我说的。
1 使用网卡驱动收发包,使用tcp协议,当然要实现三次握手了,当然要有各包头,否则谁认识什么数据包,难道这还有什么疑问?否则就是对tcp协议不熟悉。 2 网卡缓冲区饱和后能不能用物理内存而不是删包?此问题没理解,是问网卡小端口驱动缓冲区,还是物理网卡缓冲区。 3 小端口驱动会把包发给每个协议,协议再丢弃没有自己包头的包? 对协议处理难道不知道吗?没有自己包头,怎么知道是自己认识的数据包。 4 既有完全拷贝,也有只传指针 这些问题都是基础不能再基础的问题,如果你对这些还不了解,怎么做方案阿?否则要遇到问题会很多呢,所以建议你先搞清楚了各自使用的场合以及各自优势,然后根据所使用的硬件条件和对效率的要求,综合考虑在作方案决定。 |
|
|
6楼#
发布于:2010-05-15 01:13
|
|