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
iOS进阶之UDP代理鉴权过程的更多相关文章
- iOS进阶之TCP代理鉴权过程
这段时间接触了网络代理,而自己的任务是完成TCP和UDP的网络代理,所以在这里写些自己的理解吧. 这篇文章先介绍一下TCP代理的鉴权过程(采用的是用户名和密码鉴权),下一篇文章再介绍UDP代理的鉴权过 ...
- PMS权限管理和鉴权过程
一.权限的管理基础知识 1.系统的权限机制分为:权限解析.权限分配.鉴权.动态添加权限 2.PermissionInfo : PackageParser.Permission中包含一个对应的Perm ...
- EasyNVR如何实现跨域鉴权
EasyNVR提供简单的登录鉴权,客户端通过用户名密码登录成功后,服务端返回认证token的cookie, 后续的接口访问, 服务端从cookie读取token进行校验. 但是, 在与客户系统集成时, ...
- Tomcat 容器的安全认证和鉴权
大量的 Web 应用都有安全相关的需求,正因如此,Servlet 规范建议容器要有满足这些需求的机制和基础设施,所以容器要对以下安全特性予以支持: 身份验证:验证授权用户的用户名和密码 资源访问控制: ...
- 【Spring Cloud & Alibaba 实战 | 总结篇】Spring Cloud Gateway + Spring Security OAuth2 + JWT 实现微服务统一认证授权和鉴权
一. 前言 hi,大家好~ 好久没更文了,期间主要致力于项目的功能升级和问题修复中,经过一年时间的打磨,[有来]终于迎来v2.0版本,相较于v1.x版本主要完善了OAuth2认证授权.鉴权的逻辑,结合 ...
- Mongodb 认证鉴权那点事
[TOC] 一.Mongodb 的权限管理 认识权限管理,说明主要概念及关系 与大多数数据库一样,Mongodb同样提供了一套权限管理机制. 为了体验Mongodb 的权限管理,我们找一台已经安装好的 ...
- springboot+security整合(3)自定义鉴权
说明 springboot 版本 2.0.3源码地址:点击跳转 系列 springboot+security 整合(1) springboot+security 整合(2) springboot+se ...
- gitlab配置smtp时,总是提示需要鉴权,记录一下爬坑过程。
配置好smtp,然后发送邮件时总是提示 Net::SMTPFatalError: 550 5.7.1 authentication is required 最后发现是因为在gitlab web界面上配 ...
- apigw鉴权分析(1-4)新浪微博开放平台 - 鉴权分析
一.访问入口 http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E 微博开放接口的调用,如 ...
随机推荐
- Python全栈-magedu-2018-笔记3
第三章 - Python 内置数据结构 分类 数值型 int.float.complex.bool 序列对象 字符串 str 列表 list tuple 键值对 集合set 字典dict 数值型 数值 ...
- NTSC PAL 介绍
NTSC-J是日本地区的模拟 电视系统和视频显示标准,于2011年7月24日在全国47个县中的44个地区停止运营.模拟广播于2012年3月31日在2011年Tōhoku摧毁的三个县停止地震和海啸(岩手 ...
- webpack 知识点
安装 webpack npm install -g webpack npm install -g webpack-cli@2.x 初始化项目 npm init -y npm install --sav ...
- ZPW-2000电气绝缘移频轨道电路
1.该轨道电路是个什么样子?(图片) 整个轨道电路不仅都在室外,其中还包括室内设备.其中室内设备包括发送器.接收器和衰耗盒.室内设备和室外设备通过一根电缆相连. 机柜 2.移频轨道电路有什么作用? z ...
- 构建react项目失败解决办法
1.初始化项目,报下方错误 2.解决方法,更新淘宝镜像 npm config set registry https://registry.npm.taobao.org 3.在初始化项目 create- ...
- MySql 外键重名问题
在使用mysql workbench 来设计数据库模型时可能一不注意就会出现外键约束重名的情况,并在执行sql语句是会报这样的错误: Error 1022 - Can't write; duplica ...
- app启动过程
调用main函数之前: App开始启动后,系统首先加载可执行文件(自身App的所有.o文件的集合),然后加载动态链接库dyld.交由 ImageLoader 读取 image,其中包含了我们的类.方法 ...
- ASP.NET操作DataTable各种方法总结(给Datatable添加行列、DataTable选择排序等)
using System; using System.Collections.Generic; using System.Data; using System.Text; namespace Gz ...
- ubuntu安装zabbix 3.2(转)
转自:http://www.zabbix.org.cn/viewtopic.php?f=13&t=1096本人略做了写修改. 准备工作 apt-get update apt-get upgra ...
- MySql数据库中,判断表、表字段是否存在,不存在就新增
本文是针对MySql数据库创建的SQL脚本,别搞错咯. 判断表是否存在,不存在就可新增 CREATE TABLE IF NOT EXISTS `mem_cardtype_resource` ( ... ...