一 、HTTP 和 HTTPS 协议
1 网络七层模型 (
网络体系结构参考模型OSI)
物理层:用做机械、电子、定时接口通讯信道上的原始比特流(bites二进制流)传输
数据链路层:物理寻址,同时将原始比特流转变为逻辑传输线路
网络层:控制子网的运行,如逻辑编址,分组传输,路由选择
传输层:接收上层数据,在必要的时候,把数据进行分割,并将这些数据交给网络层,且保证这些数据可以有效到达对端
会话层:不一样机器之间创建以及管理会话
表示层:信息的语法,语义,以及他们的关联,如加密解密,翻译装换,压缩解压缩
应用层:提供用户程序接口,各类应用程序协议。HTTP、FTP、SMTP、POP3。
1.1 共分为7 层: 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。会话层、表示层和应用层每每被合并称为高层网络协议, 所以整个网络体系结构也可分为物理层协议、数据链路层协议、网络层协议、传输层协议及高层协议。一般, 一个协议能够实现OSI 的一层或多层功能。从应用上来说, 网络协议可分为局域网协议、广域网协议和路由选择协议。
2 URL
2.1 URL全称 Uniform Resource Locator (统一资源定位符),经过一个URL,能找到互联网上惟一的1个资源
2.2 URL就是资源的地址、位置,互联网上的每一个资源都有一个惟一的URL
2.3 URL基本格式 = 协议://主机地址/路径
a 协议:不一样的协议,表明着不一样的资源查找方式,资源传输方式
b 主机地址:存放资源的主机的 IP 地址(域名)
c 路径 : 资源在主机中的位置
3 协议的定义
定义:两个计算机间通讯时对传输信息内容的理解、信息表示形式以及各类状况下的应答信号都必需进行一个共同的约定,咱们称为协议(Protocol)。通常来讲,协议要由以下三个要素组成:
(1)语义(Semantics)涉及用于协调和差错处理的控制信息
(2)语法(Syntax)涉及数据及控制信息的格式、编码及信号电平等。
(3)定时(Timing)涉及速度匹配和排序等
4 常见的协议
a ftp ://(
文件传输协议)
b http://(超文本传输协议)
c https://(安全超文本传输协议)
d files://(
本地文件协议)
5 HTTP协议(Hyper Text Transfer Protocol)
5.1 HTTP:
超文本传输协议,属于应用层,由请求/响应构成(客户端向服务器发送一个请求报文,服务器以一个状态做为响应),是一个标准的客户端服务器模型。
5.2 做用:是用于从万维网(www)服务器传送超文本到本地浏览器的传输协议
5.3 工做原理:HTTP 协议采用请求/响应模型.
客户端向服务器发送一个请求报文,服务器以一个状态做为响应
5.4 C/S 模式 Client(客户端) Server(服务器)
Client 和 Server 一般分别处在相距很远的两台计算机上;
Client程序的任务是将用户的要求交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;
Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序
5.5 HTTP
一般承载与TCP协议之上,有时候也承载于TLS或者SSL协议之上,这个时候就构成了咱们所说HTTPS协议
a SSL (安全套接字层) :是 Netscape公司提出的安全保密协议,在浏览器(如Internet Explore等)和 Web 服务器之间构造安全通道来进行数据传输,SSL运行在 TCP/IP 层之上、应用层之下,为应用程序提供加密数据通道
b TLS
6 HTTPS 协议(Secure Hypertext Transfer Protocol)
6.1 HTTPS (S-HTTP):
加强版的HTTP,比HTTP更加安全,在HTTP基础上与安全套接子层(SSL)结合,把原始数据进行加密,而后接受对方解密,加密和解密须要发送和接收方交换公知的密匙来实现,因此,更加安全。
6.2
默认端口号:HTTP(80)、HTTPS(443)
6.3
注意:
a HTTP
协议,永远的都是由客户端发起请求,服务器返回数据
b HTTP协议是无状态,同一个客户端的此次请求,和上一次没有对应关系
c HTTPS
协议须要到CA(由受信任数字证书颁发机构(沃通CA)在验证服务器身份后,具备服务器身份验证的和数据传输加密功能,因其须要配置在服务器上,因此也成SSL服务器,或者SSL证书)申请证书,通常免费证书不多,须要交费
7 HTTP和HTTPS 的异同
7.1 HTTP HTTP(应用层)->TCP(传输层)->IP(网络层)->网络接口(数据链路层)
HTTPS HTTP(应用层)->TSL or SSL (安全层)->TCP(传输层)->IP(网络层)->网络接口(数据链路层)
7.2 HTTPS 协议须要到 ca 申请证书,通常免费证书不多,须要交费
7.3 HTTP 是超文本传输协议,信息是明文传输
HTTPS 则是具备安全性的 SSL 加密传输协议
7.4 HTTP 和 HTTPS 使用的彻底不一样的连接方式,用的端口也不同,前者是80,后者是443
7.5 HTTP 的连接很简单,是无状态的
HTTP协议是由 SSL+HTTP 协议构建的可进行加密传输,身份认证的网络协议,要比 http 安全
二 、HTTP 协议的常见请求方式
1 1
最基本的请求方式:GET,POST,PUT,DELETE,这四种请求方式对应着对资源的查、改、增、删 4 种操做
0,GET:GET能够说是最多见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源经过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
1,HEAD:HEAD和GET本质是同样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能以为这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,咱们一般使用GET,但这里用HEAD则意义更加明确。
2,PUT:这个方法比较少见。HTML表单也不支持这个。本质上来说, PUT和POST极为类似,都是向服务器发送数据,但它们之间有一个重要区别,PUT一般指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器本身决定。举个例子:如一个用于提交博文的URL,/addBlog。若是用PUT,则提交的URL会是像这样的”/addBlog/abc123”,其中abc123就是这个博文的地址。而若是用POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT和POST用途是不同的。具体用哪一个还取决于当前的业务场景。
3,DELETE:删除某一个资源。基本上这个也不多见,不过仍是有一些地方好比amazon的S3云服务里面就用的这个方法来删除资源。
4,POST:向服务器提交数据。这个方法用途普遍,几乎目前全部的提交操做都是靠这个完成。
5,OPTIONS:这个方法颇有趣,但极少使用。它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
6, 其实还有一个TRACE方法,不过这个基本上不会用到,这里就不介绍了。
以上的六种方法,咱们能够跟数据库的CRUD增删改查操做对应起来: CREATE :PUT READ:GET UPDATE:POST DELETE:DELETE 这样一来就实现了HTTP和数据库操做( 其实不光是数据库,任何数据如文件图表都是这样)的完美统一,这也是REST的精髓之一
7 最经常使用方法
GET:
通常用于获取或查询资源,也就是说若是请求 URL 是一个产生数据的过程,使用GET的话,须要的是产生的数据结果,而不是对产生过程的描述(如何产生数据的)
POST:
通常用于更新数据,向服务器发送请求,告知服务器接收请求后面的实体(BODY),也就是说,POST向服务器发送请求信息,而须要提交的数据在信息后面的实体中。
7.1 比较
相同点:都能给服务器传输数据
不一样点:
a 给服务器传输数据的方式不一样
GET :经过网址字符串
POST:经过Data
b 传输数据的大小
GET:网址字符串最多255字节
POST:使用NSData,容量超过1G
c 安全性
GET:全部传输给服务的数据,显示在网址里,相似于密码的明文输入,直接可见
POST:数据被转成NSData(二进制数据),相似于密码的密文输入,没法直接读取
3、iOS实现网络编程
1 几个对象
1.0 NSURL:请求地址
url:统一资源定位符,也被称为网址,英特网上标准的资源网址
url的符语法:协议://受权/路径?查询
url的做用:url做为网址字符串包含不少请求参数,NSURL对网址字符串进行封装,可使用NSURL对象获取相应的参数
1.1 NSURLRequest(网络请求地址对象)
封装一个请求,保存发给服务器的所有数据,包括一个NSURL 对象,请求方法、请求头、请求体
注意:任何 Request 默认都是get 方法
1.2 NSMutableURLRequest(网络请求对象)
NSURLRequest的子类
1.3 NSURLConnection(网络连接对象)
负责发送请求,创建客户端和服务器的链接。发送NSURLRequest 的数据给服务器,并收集来服务器的响应数据
1.4 NSURLConnectionDelegate(网络连接协议)
有两个子类 NSURLConnectionDataDelegate、NSURLConnectionDownloadDelegate
2 链接方式
2.1 同步链接:程序容易出现卡死现象
GET同步;POST同步
2.2 异步链接:等待数据返回
a 异步链接有两种实现方式:
b 实现 block
2.3 掌握代码实现
四 、iOS7 以后请求变化
- 在WWDC 2013中,Apple的团队对NSURLConnection进行了重构,并推出了NSURLSession做为替代。
- 支持后台运行的网络任务
- 暂停、中止、重启网络任务,再也不须要 NSOpation 封装
- 请求可使用一样的配置容器
- 不一样的 session 可使用不一样的私有存储,block和代理能够同时起做用
- 直接从文件系统上传、下载
- 为了方便程序员使用,苹果提供了一个全局 session
- 全部的 任务(Task) 都是由 Session 发起的
- 全部的任务默认是挂起的,须要 Resume
注意:若网址字符串URLString中有类对象,可使用此方法处理:程序员
[URLString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
1 解析步骤
2 NSURLSession 的三种工做模式
2.1
默认会话模式:相似与原来的 NSURLConnection ,使用的是基于磁盘缓存的持久化策略,使用用户 keychain 中保存的证书进行认证受权
2.2
瞬时会话模式:该模式不会使用磁盘保存任何数据,全部和会话相关的 caches证书,cookies 都被保存在 ROM(内存中),所以当程序是会话无效的时候,这些缓存,就会被自动清空。
2.3
后台会话模式:该模式在后台完成上传和下载,在建立配置对象时,须要一个NSString 类型的ID,用于标识完成工做的后台会话。
3 支持三种类型的任务:加载数据,下载数据,上传
4 NSURLSessionTask类:是一个抽象子类,有三个子类:NSURLSessionDataTask、NSURLSessionUploadTask、NSURLSessionDownloadTask。这三个类封装了现代应用程序的三个基本网络任务:获取数据,好比 JSON或XML,以及上传和下载
5 NSURLSessionTask 代理
NSURLSessionTaskDelegate 继承与NSURLSessionTaskDelegate;NSURLSessionTaskDelegate继承于 NSURLSessionDelegate
6 NSURLSessionConfiguration:用于配置会话的属性能够经过该类配置会话的工做模式
7 适合小的数据访问:JSON、XML、Plist、HTML、图像
五:临时数据加载设置
NSAppTransportSecurity
NSAllowsArbitraryLoads