iOS网络编程(一)网络编程基础

由于iOS 9以后苹果开放了Network Extension这个互联网的库,而我自己也想做一个VPN,在互联网上对相关的资料进行搜索,比如说Specht和该作者的数据传输库NEKit等相关资料的搜索,在这对VPN开发进行一个总结或者学习的归纳。

基本概念

  1. 虽然苹果开放了Network Extension这个库,但是这只是方便了我们能够方便的创建一个代理,但是相对的,对应tunnel->socket的转换还是需要我们自己进行处理的。
  2. 简单而已,根据同事的介绍,苹果的VPN就是在手机中开启了一个服务,然后所有的流量都是通过这个服务进行区分发送,这样就能将手机中所有请求都根据我们自己的配置进行设置。
  3. 苹果开放了3个主要的类型 Network Extension EntitlementPersonal VPNNetwork Tunneling Protocol Client,而对于我们而言,需要创建的就是Network Tunneling Protocol Client,第二个Personal VPN基于的是IPSec协议和IKEv2协议,这里和我的需求不符合,所以暂时不在考虑范围内。而第一个Network Extension Entitlement目的是方便 wifi 连接,也不在我们的考虑范围内,所以也不作考虑。
  4. 苹果在2016-11-10之后对于 apple developer 开放了Network Extension权限(原来需要进行邮件申请,填写好所有你想要获得的信息后,他才会给你一个反馈)。现在只需要在apple developer中创建Provisioning ProfilesIdentifiers中的App IDs从而允许对应的app可以使用网络库。

网络编程——网络基础

  1. 完全限定域名(英语:Fully qualified domain name),

    缩写为FQDN,又译为完全资格域名、完整领域名称,又称为绝对领域名称(absolute domain name)、 绝对域名,网域名称的一种,能指定其在域名系统 (DNS) 树状图下的一个确实位置。一个完全资格域名会包含所有域名级别,包括 顶级域名 和 根域名。完整网域名称这个名称的由来,是因为它没有模糊空间,只能用一种方式来解析。完整网域名称是因应互联网上需要一个统一识别方式而出现,在1980年代后期快速成长。
    完整网域名称由主机名称与母网域名称两部分所组成,例如有一部服务器的本地主机名为myhost,而其母域名为example.com,那指向该服务器的完整网域名称就是myhost.example.com。虽然世界上可能有很多服务器的本地主机名是myhost,但myhost.example.com是唯一的,因此完整网域名称能识别该特定服务器。