ffjj56
驱动牛犊
驱动牛犊
  • 注册日期2010-02-11
  • 最后登录2010-12-28
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望121点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2300回复:6

从小端口到套接字——效率损失知多少?

楼主#
更多 发布于:2010-05-05 11:47
近来开发一个频繁同依赖于套接字的服务器端通信的网络程序,不知用套接字比小端口驱动效率低多少?曾请教过他人,说“差不多”。不太放心,所以又来请教。困惑如下:

1.服务器是用套接字的,是不是说明即使使用网卡驱动收发包,TCP的头及三步握手以及UDP的头都是少不了的?
2.网卡缓冲区饱和后能不能用物理内存而不是删包?
3.小端口驱动会把包发给每个协议,协议再丢弃没有自己包头的包?
4.最重要的问题:包在高层和底层间传递时是完全拷贝了缓冲区还是仅仅传递了缓冲区指针?

请高手指点下迷津,给偶建议下不写小端口驱动后果严重否
Pegram
论坛版主
论坛版主
  • 注册日期2005-12-03
  • 最后登录2013-08-23
  • 粉丝13
  • 关注5
  • 积分1333分
  • 威望4717点
  • 贡献值1点
  • 好评度78点
  • 原创分0分
  • 专家分2分
沙发#
发布于:2010-05-05 13:01
个人觉得差别不大。
《寒江独钓》与《竹林蹊径》的合作作者。精通USB开发,设计了CY001 USB驱动套件(http://bbs.driverdevelop.com/read.php?tid-119314.html)。
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
板凳#
发布于:2010-05-05 17:33
根据你的问题判断你知道的很少,感觉做起来会很吃力。

因此建议搞清楚小端口和套接字区别,自然就知道如何选择怎么做了。
走走看看开源好 Solaris vs Linux
treeyan
驱动牛犊
驱动牛犊
  • 注册日期2008-04-14
  • 最后登录2013-09-11
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望487点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分1分
地板#
发布于:2010-05-05 19:39
是哦,看不明白你说滴什么东东呢。猜大约是像 Transport driver 一样的东东吧,像netbt.sys 是吧?
现在CPU都相当生猛,没有特别要求谁耐烦去写内核程序呢。起码不是出于效率滴考虑吧。
一是相当繁复,二是有bug直接就bosd鸟,不友好啊。
ffjj56
驱动牛犊
驱动牛犊
  • 注册日期2010-02-11
  • 最后登录2010-12-28
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望121点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2010-05-05 21:46
二楼的回答不错,三楼和四楼听不明白么?尤其是三楼。汗...你们不告诉我我选择什么啊?四楼也是的,哎。传输层到小端口,小端口到传输层,希望有频繁发送过数据包的人说说,我这种情况有没有必要写小端口驱动啊?
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
5楼#
发布于:2010-05-07 12:07
呵呵,又一个只想要结果,不想知道为什么的。竟然没有理解我说的。

1 使用网卡驱动收发包,使用tcp协议,当然要实现三次握手了,当然要有各包头,否则谁认识什么数据包,难道这还有什么疑问?否则就是对tcp协议不熟悉。

2 网卡缓冲区饱和后能不能用物理内存而不是删包?此问题没理解,是问网卡小端口驱动缓冲区,还是物理网卡缓冲区。

3 小端口驱动会把包发给每个协议,协议再丢弃没有自己包头的包?

  对协议处理难道不知道吗?没有自己包头,怎么知道是自己认识的数据包。

4 既有完全拷贝,也有只传指针

这些问题都是基础不能再基础的问题,如果你对这些还不了解,怎么做方案阿?否则要遇到问题会很多呢,所以建议你先搞清楚了各自使用的场合以及各自优势,然后根据所使用的硬件条件和对效率的要求,综合考虑在作方案决定。
走走看看开源好 Solaris vs Linux
ffjj56
驱动牛犊
驱动牛犊
  • 注册日期2010-02-11
  • 最后登录2010-12-28
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望121点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2010-05-15 01:13
 
游客

返回顶部