当前位置:  技术问答>linux和unix

传入一个sk_buff的结构,如何获取tcp的端口和其它数据

    来源: 互联网  发布时间:2016-04-26

    本文导语:  一个函数,传入一个sk_buff的结构,如:struct sk_buff **skb  ,请问,如何从该结构中获得其协议类型?如果是TCP的包,如果获取端口号?如果TCP包承载的是http的协议报文,如何获取http的数据? 谢谢! ...

一个函数,传入一个sk_buff的结构,如:struct sk_buff **skb  ,请问,如何从该结构中获得其协议类型?如果是TCP的包,如果获取端口号?如果TCP包承载的是http的协议报文,如何获取http的数据? 谢谢!

|
sk_buff你都填充好了,其它的就简单了! 看看sk_buff的结构吧。

TCP包端口号: skb->h->th->dest/source

至于你说的HTTP数据,那么需要熟悉协议,自己解析了,比如:
ip数据位于 skb->data + skb->nh.iph->ihl * 4 处;
udp数据位于skb->data + skb->nh.iph->ihl *4 +sizeof(struct udphdr)处;
tcp数据位于skb->data + skb->nh.iph->ihl*4 +sizeof(struct tcphdr)出;

至于http数据,下层协议一般是TCP,所以HTTP数据通常就是从skb->data + skb->nh.iph->ihl*4 +sizeof(struct tcphdr)开始...

大概意思就这样,自己结合内核和sk_buff看看吧。

good luck!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • JSP 重置按钮清空传入的表单数据实例
  • 发分了 急急 跪谢 100 分 需要从文件中每次读取 固定(通过参数传入)字节
  • c++下的外部参数传入system()
  • 怎样给tar 动态传入要压缩的文件名呀
  • 用gdb调试时如何将命令行参数传入?
  • Applet中的ArrayList怎么传到javascript中,反之,js中的数组如何传入APPLET中?
  • 应用awk时,正则表达式可以传入一个变量的值么?
  • shell脚本中,grep命令可以接受传入变量吗?
  • 在fedora8下,打包的文件夹传入虚拟机ubuntu下解压出现问题
  • 如何把字符串(命令行)传入linux的终端下,各位高手,有什么好的建议吗?
  • 写一个.bat文件,如何使用命令行传入数据?
  • gdb调试时命令行参数如何输入?比如main(int argc,char **argv)中,我要把一个filename作为argv[1]传入给gdb调试
  • 设置shell脚本传入参数值的分隔符问题
  • jni 中如何将一个LONG型数组传入,修改后并传出呢????我很迷惑,.....
  • 请问如何将一组记录传入数据库
  • 参数的传入
  • 请问在FAT32下的文件如何传入到linux下?
  • 俺需要实现这样的功能:一个宏放在return前,把本函数中的入参都记录下来,当然不希望调用者传入参数,谢谢
  • 函数传入参数个数错误,C语言警告都不报一个?
  • 深入mysql存储过程中表名使用参数传入的详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3