一、 iOS网络框架

iOS网络框架分为四层,第一层为Cocoa层,包含了常用的网络API,如NSURLConnection、NSURLSession;第二层为Core-Foundation层,由C编写,包括CFNetwork,里面的相关接口是上层API的基础;第三层为OS层,主要由BSD构成;第四层为硬件层,包括WIFI、蓝牙等。



二、iOS网络相关API
1.NSURLConnection

NSURLConnection 作为 Core Foundation / CFNetwork 框架的 API 之上的一个抽象,在 2003 年,随着第一版的 Safari 的发布就发布了。NSURLConnection 这个名字,实际上是指代的 Foundation 框架的 URL 加载系统中一系列有关联的组件:NSURLRequest、NSURLResponse、NSURLProtocol、 NSURLCache、 NSHTTPCookieStorage、NSURLCredentialStorage 以及同名类 NSURLConnection。

2.NSURLSession

在 2013 的 WWDC 上,苹果推出了 NSURLConnection 的继任者:NSURLSession。与 NSURLConnection 相比,NSURLsession 最直接的改进就是可以配置每个session的缓存,协议,cookie,以及证书策略(credential policy),甚至跨程序共享这些信息。这将允许程序和网络基础框架之间相互独立,不会发生干扰。

3.WebKit

在iOS8之前,在应用中嵌入网页通常需要使用UIWebView这样一个类,这个类通过URL或者HTML文件来加载网页视图,功能十分有限,只能作为辅助嵌入原生应用程序中。在iOS 8之后,Apple提供了WebKit框架,使用WKWebView替换了原来UIKit中的UIWebView。

4.Bonjour

Bonjour是Apple对零配置网络的实现。它提供一种机制,可以检测网络中的设备或服务进行连接,同时无须知道设备的网络地址。比较常用于智能家居方面,比如现在的苹果投屏。

5.NSStream

NSStream是Cocoa级别的API,构建在CFNetwork之上,它通过NSStreamDelegate协议来实现CFNetwork中的回调函数。

6.CFNetwork

CFNetwork位于基础的BSD Socket之上,它为HTTP和FTP等高级协议提供了原生的支持。对比其NSURLConnection和NSURLSession,它可以控制一些更底层的东西。

6.BSD socket

BSD socket构成了大多数网络活动的基础,是网络框架层次体系中的最底层。一般不推荐使用BSD socket相关API,因为它没有在操作系统中插入任何钩子。

三、总结

本小节主要描述了iOS网络框架,并自顶而下地说明了各个部分的作用和联系。

参考资料
  • 从 NSURLConnection 到 NSURLSession