zoukankan      html  css  js  c++  java
  • iOS进阶之UDP代理鉴权过程

      上一篇介绍的是TCP代理的鉴权过程,这篇将介绍UDP代理的大致鉴权过程。

      在UDP鉴权过程中,有几点是需要注意的。首先,UDP是一种无连接协议,不需要连接,使用广播的方式;其次,为了通过鉴权,所以需要使用TCP的连接过程;最后,需要代理服务器根据是否有UDP数据包的判断来保持TCP的长连接。

      在上一篇中已经介绍了需要的文件,这里就不再重复了。类似TCP,同样创建一个文件SJXUDPSocketClient,继承自NSURLProtocol,其他信息可参看demo,这里直接介绍关键步骤。

      第一步:设置UDP代理地址和端口,分别绑定并且监听本地端口和远端端口。

        

      第二步:当UrlProtocol拦截到UDP请求时,会调用 - (void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data fromAddress:(NSData *)address withFilterContext:(nullable id)filterContext 方法,在该方法中判断UDP请求的来源,并进行对应的操作。

        

      如果来源为本机,则通过TCP连接与远端代理进行鉴权。

          

        

      第三步:与远端代理服务器进行鉴权的第一步,同上一篇文章中的第一步鉴权,同样以 050102 为例。

      第四步:如果第一步鉴权通过,则进行第二步鉴权,同上一篇文章中的第二步鉴权,根据自己的需求,拼接自己的用户名和密码,发送给远端代理服务器。

      第五步:如果第二步鉴权通过,则向代理服务器发起UDP请求。

        

        

      第六步:如果代理服务器接收到命令,并且鉴权通过,则会分配一个IP和PORT,进行转发UDP请求。

        

      以上就是UDP代理鉴权的大致过程,这是自己对UDP代理的理解,希望各位大神多多指正。

      GitHub:https://github.com/sjxjjx/SJXSocket

  • 相关阅读:
    [转]Angular4首页加载慢优化之路
    [转]angular 禁止缓存
    微服务之分布式跟踪系统(springboot+pinpoint)
    分布式追踪系统设计与实现
    QLExpress 规则引擎使用介绍
    几个常见规则引擎的简单介绍和演示
    大数据对账
    美团配送资金安全治理之对账体系建设
    美的支付-对账系统实现
    redis实现对账(集合比较)功能
  • 原文地址:https://www.cnblogs.com/sjxjjx/p/8390998.html
Copyright © 2011-2022 走看看