关于 linux 网络 发包

熄灭的太yang 2012-06-06 01:36:18
要做一个重传包成功传至client的次数的统计,我理解重传成功就要受到ACK,但是ACK好像都是硬件直接处理了,我想请教那软件上是怎么知道哪个包需要重传,在哪里将设置包的重传标识位(这里的包是80211无线报文,包头中有重传位)。 或者说linux发包时在哪里判断什么包是需要重传的?谢谢!
...全文
250 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
熄灭的太yang 2012-07-02
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]
具体是哪一个函数或者变量呢?

请分享一下啊~~
[/Quote]我用的source有一个longretry表示重传没收到ack的帧数。这个应给对你没什么意义吗,应该不同吧。
giant1st 2012-06-19
  • 打赏
  • 举报
回复
具体是哪一个函数或者变量呢?

请分享一下啊~~
熄灭的太yang 2012-06-11
  • 打赏
  • 举报
回复
寄存器中已经有统计了,,哎,忙了这么久终于在SDK中找到读取该值的地方了,,谢谢大家。
qq120848369 2012-06-08
  • 打赏
  • 举报
回复
让客户端上报吧, 只有客户端知道自己到底完成了多少请求.
daviddb7 2012-06-08
  • 打赏
  • 举报
回复
AP是否支持VAP功能?
如果有VAP,也可以尝试多起一个monitor
daviddb7 2012-06-07
  • 打赏
  • 举报
回复
看你的重传到底是哪一层的
如果是802.11的,那没办法,硬件做的,看无线网卡驱动里有没有
如果是TCP重传,这个可以获取的,只要你在比TCP级别更低的层面上把包截过来自己解析就行了。
qq120848369 2012-06-07
  • 打赏
  • 举报
回复
服务端无法保证send返回成功的对端一定会收到,所以服务端统计并非总是准确,除非让客户端回复一个成功应答,靠协议层ACK是没办法实现了。
熄灭的太yang 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
这个统计必须在客户端上吗?
可以再多用一个无线网卡,作为monitor抓包,然后自己把抓到的包分析统计一下应该能达到要求。
如果必须在客户端上恐怕就只能改驱动了。
[/Quote]是在AP上的统计量,统计AP经过一次或者多次重传成功发送至终端的统计量。再加个网卡肯定没法加上了
daviddb7 2012-06-07
  • 打赏
  • 举报
回复
这个统计必须在客户端上吗?
可以再多用一个无线网卡,作为monitor抓包,然后自己把抓到的包分析统计一下应该能达到要求。
如果必须在客户端上恐怕就只能改驱动了。
熄灭的太yang 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
看你的重传到底是哪一层的
如果是802.11的,那没办法,硬件做的,看无线网卡驱动里有没有
如果是TCP重传,这个可以获取的,只要你在比TCP级别更低的层面上把包截过来自己解析就行了。
[/Quote]恩,就是80211的,我在找无线驱动,可是还没能找到。
熄灭的太yang 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
看你的重传到底是哪一层的
如果是802.11的,那没办法,硬件做的,看无线网卡驱动里有没有
如果是TCP重传,这个可以获取的,只要你在比TCP级别更低的层面上把包截过来自己解析就行了。
[/Quote]恩,就是80211的,我在找无线驱动,可是还没能找到。
熄灭的太yang 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
这个不是你关心的,在内部处理了,你不用知道,发送失败的话,send会返回错误,查看错误码就可以了
[/Quote]你这里说的发送失败是指没有发出去吧,但是发出了station没有收到算是发送失败吗?会不会返回错误呢,,如果会还请指点一二,现在就是找不到判断的地方,,谢谢了
qixing1115 2012-06-06
  • 打赏
  • 举报
回复
这个不是你关心的,在内部处理了,你不用知道,发送失败的话,send会返回错误,查看错误码就可以了
熄灭的太yang 2012-06-06
  • 打赏
  • 举报
回复
顶啊 。。不能沉啊,还没解决啊啊 啊啊啊啊啊 啊
熄灭的太yang 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
这个就不懂了,,你再找找资料吧,,,
[/Quote]我也一直在找,头大啊。谢谢关注了。 自己顶起
fdl19881 2012-06-06
  • 打赏
  • 举报
回复
这个就不懂了,,你再找找资料吧,,,
熄灭的太yang 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
那为什么要知道tcp重传呢? 原因,目的,

从用户空间的程序基本没法直接获得这个东西。
你得在内核空间编程, 写个内核模块,找到重传的源码在哪,数据结构是什么,然后读取后通过netlink传给你的上层应用。 大概是这么回事, 估计难度很高。

或者看看tcpdump的实现原理 , 从他的输出中观察同一个包(序号相同,方向相同,目的地址,端口,协议相同)发送次数。

如果只是为了获……
[/Quote]恩,对,我其实就是想知道重传的源码在哪里,希望告知。如果有熟悉无线驱动朋友希望能指点下无线驱动中在哪里处理这块的。非常感谢,,工作上需要做个统计量,统计成功重传至终端的次数,,不知道怎么处理了。。
fdl19881 2012-06-06
  • 打赏
  • 举报
回复
那为什么要知道tcp重传呢? 原因,目的,

从用户空间的程序基本没法直接获得这个东西。
你得在内核空间编程, 写个内核模块,找到重传的源码在哪,数据结构是什么,然后读取后通过netlink传给你的上层应用。 大概是这么回事, 估计难度很高。

或者看看tcpdump的实现原理 , 从他的输出中观察同一个包(序号相同,方向相同,目的地址,端口,协议相同)发送次数。

如果只是为了获得RTT的话,直接使用icmp协议就得到了(ping命令使用的icmp).

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧