msbon
驱动牛犊
驱动牛犊
  • 注册日期2004-06-27
  • 最后登录2009-04-25
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望54点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1279回复:2

可以得到端口吗

楼主#
更多 发布于:2004-12-01 11:21
我现在得到了包的内容,通过包的内容是可以得到协议类型的,如下:
if(((char *)pPacketContent)[12] == 8 &&
((char *)pPacketContent)[13] == 0 &&
((char *)pPacketContent)[23] == 17)
UDP包
我现在问题是如果是UDP包,我怎么得到它的端口号呢,能从这个包内容中得到吗,谢谢,看过协议分析的书,可是还是没有很好的思路,谢谢。
frog_huang
驱动牛犊
驱动牛犊
  • 注册日期2002-06-05
  • 最后登录2008-05-02
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-01 14:54
简单点:
    (pPacketContent + 34)已经指向UDP包的源端口了,其中,34代表14个字节的Ether MAC头长度,20个字节的IP包头长度。
但是,要考虑的问题很多:例如,接收到的MAC帧是VLAN帧吗?IP包头是不是正好就是20个字节吗?(虽然大多数是20,不过若带有选项的话就不是了),这些都要处理。

[编辑 -  12/1/04 by  frog_huang]
msbon
驱动牛犊
驱动牛犊
  • 注册日期2004-06-27
  • 最后登录2009-04-25
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望54点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-01 15:11
谢谢,已给分了,呵呵
游客

返回顶部