编写自定义网络堆栈时回复不支持的协议

时间:2016-09-02 19:31:34

标签: networking network-programming protocols 802.11

我一直在用网络堆栈编写自己的802.11协议版本。这主要是一种学习经验,可以更深入地了解网络的运作方式。

我的问题是,是否有回复客户端设备的标准,某些协议不受支持?

我有一个Android设备连接到我的自定义wifi设备,并立即在我的UDP协议的DNS端口发送一个TON请求。由于我想测试其他协议,我非常想要一种方式让我的wifi设备告诉Android设备DNS不可用并让它有点下降。

提前致谢!

2 个答案:

答案 0 :(得分:0)

无法以您想要的方式停止DNS。但是,仅适用于您的测试,您可以检查UDP消息并找出设备正在寻找的名称。然后更新hosts文件(谷歌如何操作:http://www.howtogeek.com/140576/how-to-edit-the-hosts-file-on-android-and-block-web-sites/)并添加一些localoop IP地址的名称。这可能适合您的测试。 其他可能性是将DNS服务器更改为某个localloop IP地址:http://xslab.com/2013/08/how-to-change-dns-settings-on-android/ 同样,这只是为了避免通过wifi连接获得所有DNS消息。

答案 1 :(得分:0)

我没有看到发送服务不可用的回复的可能性。

我无法在UDP specification中找到有关此案例的任何内容。

一个part of the DNS specification假设有多个DNS服务器并定义了如何处理与它们的通信。这解释了网络中的部分行为,但没有提供有关如何处理它的大量信息。

4.2.1消息 - 格式 - UDP使用

  

最佳UDP重传策略将随着性能而变化   互联网和客户的需求,但建议如下:

     
      
  • 客户端应该尝试其他服务器和服务器地址    在重复查询服务器的特定地址之前。

  •   
  • 重传间隔应基于先验    统计数据如果可能过于激进的转播可以    容易减缓整个社区的反应。根据    关于客户端与预期服务器的连接情况,    最小重传间隔应为2-5秒。

  •   

7.2解析器实施 - 发送查询

  
      
  • 如果解析器出现服务器错误或其他奇怪的响应    从名称服务器,它应该从SLIST中删除它,并且可以    希望安排立即传输到下一个    候选服务器地址。
  •   

根据这个你可以尝试将垃圾发送回客户端,但这是一个黑客或错误,但错误是怎样的?这样的解决方案假设您了解您不支持的服务。

我相信使用DHCP可以避免DNS请求。 DHCP允许指定链接页面中列出的DNS服务器。这是我知道局域网中DNS解析器获取初始DNS服务器的常用方法,尽管我在DNS规范中找不到任何相关信息。您可以为Android设备提供带DHCP的DNS服务器,以便它可以尝试查询您的设备。查询您的设备可能是一个后备。

除了DNS之外,还有mDNS使用网络中的多播来发送查询。这似乎不是您必须使用的协议,因为它使用特殊端口5353。