iOS开发中, https 请求的 dns 解析阶段, 域名解析的请求地址是怎样获取的 ?

在 iOS 开发中,当发起 HTTPS 请求时,DNS 解析阶段的域名解析请求地址获取过程如下:

1. 系统 DNS 解析机制

  • 当应用发起一个 HTTPS 请求(如通过 URLSessionNSURLSession),需要将请求的域名解析为对应的 IP 地址。
  • iOS 系统会先检查设备的网络配置,以确定使用哪个 DNS 服务器来进行域名解析。通常,这个 DNS 服务器是通过 DHCP 协议从路由器或网络中获取的。

2. DNS 请求地址的获取

  • 本地缓存检查:iOS 会首先检查本地缓存中是否有对应域名的解析记录。如果缓存中有记录,系统将直接使用缓存的 IP 地址,跳过后续的 DNS 查询过程。
  • Hosts 文件检查:iOS 系统也会检查是否存在与该域名相关的本地 hosts 文件记录,如果存在,也会直接使用相应的 IP 地址。
  • DNS 服务器请求:如果本地缓存和 hosts 文件中都没有对应的记录,iOS 会向配置好的 DNS 服务器发送 DNS 查询请求,解析该域名对应的 IP 地址。这个 DNS 服务器地址是从设备的网络设置中获取的,通常由网络的 DHCP 配置提供。

3. 应用指定的 DNS 服务器

  • 在某些情况下,开发者可以通过特定的网络库(如 CFNetwork)或者第三方库(如 Alamofire)进行更加精细化的控制,包括使用特定的 DNS 服务器。
  • 另外,也可以在设备的 Wi-Fi 或蜂窝数据网络设置中手动配置 DNS 服务器。这样配置后,所有的网络请求,包括 HTTPS 请求,都会使用手动配置的 DNS 服务器。

4. 实际解析的 DNS 请求

  • 当 DNS 查询请求发出后,系统会等待 DNS 服务器返回解析结果。如果使用的是标准 DNS 协议,该请求是以 UDP 包的形式发送到 DNS 服务器的 53 号端口。
  • 若 DNS 服务器返回了正确的 IP 地址,系统会将该地址与 HTTPS 请求进行匹配,继续进行后续的 SSL/TLS 握手等过程。

5. DoH 或 DoT 的使用

  • 在 iOS 14 及更高版本中,Apple 引入了对 DNS over HTTPS (DoH) 和 DNS over TLS (DoT) 的支持,这些协议可以通过加密 DNS 请求,保护 DNS 查询不被劫持或窃听。
  • 通过 NEAppProxyProviderNEDNSSettingsManager 等网络扩展,开发者可以配置应用或设备使用 DoH 或 DoT。

总结

在 iOS 中,HTTPS 请求的 DNS 解析过程由系统自动处理,具体使用哪个 DNS 服务器地址,取决于设备的网络配置,通常是通过 DHCP 自动获取的 DNS 服务器地址。如果开发者或用户在网络设置中指定了自定义的 DNS 服务器,系统会使用该地址进行 DNS 解析。


备注

Objective-C 中的 NSURLSession 与 Swift 中的 URLSession 是一个东西, URLSession 和 NSURLSession 只是同一类在 Swift 和 Objective-C 中的不同写法。它们的功能和用途是完全一致的,你可以根据编程语言的惯例选择使用其中之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依旧风轻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值