iOS 之 Bonjour 协议简单抓包分析

引子

因在学习iOS编程之bonjour编程的过程中,对bonjour产生了一些些的好奇,因此就查  阅了各种资料以及自己抓包分析该协议。
注:文章作为个人学习记录,不一定准确,如有错误请多多指教,共同进步!

什么是Bonjour

关于Bonjour的简介可以参考文章 Bonjour 简介及使用,这里讲得很清楚。
作用:在缺少中心服务器的情况下解决IP获取、名称解析、服务发现这三个问题。


抓包简单验证

这里我是使用了 [Cocoa]深入浅出Cocoa之Bonjour网络编程 文章中所提供的程序,把“启动程序-->创建一个房间”( 即可仅仅是发布聊天的服务)
这个过程用tcpdump抓下来,再用wireshark来分析(相对本人来说wireshark用的比较多,其他工具也可以,甚至直接在tcpdump命令下分析也可以)。

从抓取的数据包来看,可以得一些基本信息:.Bonjour是基于“MDNS(Mutilcast DNS)”协议的。(224.0.0.251为组播地址)

看红色框部分(以下都是个人猜测判断并不一定准确)
1.这里表明了服务端组播了它的设备名称信息即_chatty._tcp.local    
1)名称的格式为:_名称._传输协议._本地根域名 ,
2)PTR是 pointer 的简写。“PTR”就是反向DNS ,该标记,用于表明可讲一个IP地址映射到对应的主机名,即192.168.1.100 映射到 _chatty._tcp.local 该域名
2.这里表明服务端组播了它所能提供的服务是(注册了什么服务):server_create_room's chat room._chatty._tcp.local
如,点开其中一个数据报,查看Queries部分:

3.这里,个人觉得是对第2部分的一中响应,点开其中一个数据报,查看其answer部分如图:

1) 这里指明了server_create_room's chat room._chatty._tcp.local 这个服务的一些其他信息,如端口!众所周知,ip+port 能唯一确定一台机器上的一个服务!

小结

bonjour的简单运作过程是:注册并组播自己的设备名称---注册并组播自己的所能提供的服务的名称--组播自己所提供服务名称对应的详细信息


注:需要分析bonjour协议可以结合DNS协议以及MDNS协议来分析,还有就是可以对程序进行单步调试并进行抓包分析!


再次声明:该文章所分析道的结论不一定正确,只是个人观点!如有错误,请多多指教,共同进步!


  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值