iOS网络:协议基础知识-2020-08-26-周三
基本模式
- 客户端(Client):移动应用(iOS、android等应用)
- 服务器(Server):为客户端提供服务、提供数据、提供资源的机器
- 请求(Request):客户端向服务器索取数据的一种行为
- 响应(Response):服务器对客户端的请求做出的反应,一般指返回数据给客户端
HTTP协议
即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
image.png请求
image.png响应
image.png常见的状态码
image.pngURL
image.pngTCP三次握手
image.png在TCP三次握手之后,建立了TCP连接,此时HTTP就可以进行传输了。一个重要的概念是面向连接,既HTTP在传输完成之前并不断开TCP连接。在HTTP1.1中这是默认行为。
GET和POST
image.png image.png其实,在实际的移动开发中,统一使用POST进行数据传输就可以了,处理起来也更方便。
iOS中发送HTTP请求的方案
image.png在实际项目中,一般用AFNetworking;在某些场合也可以使用NSURLSection自己写。
HTTPS
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
image.png-
https协议需要到ca申请证书,一般免费证书很少,需要交费。
-
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
-
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
-
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
HTTP 2.0
HTTP/2 源自 SPDY/2,SPDY 系列协议由谷歌开发,于 2009 年公开。它的设计目标是降低 50% 的页面加载时间。当下很多著名的互联网公司,例如百度、淘宝都在自己的网站或 APP 中采用了 SPDY 系列协议(当前最新版本是 SPDY/3.1),因为它对性能的提升是显而易见的。主流的浏览器(谷歌、火狐、Opera)也都早已经支持 SPDY,它已经成为了工业标准,HTTP Working-Group 最终决定以 SPDY/2 为基础,开发 HTTP/2。
- HTTP2.0相对HTTP1.1的优势是什么?
-
相同的Host占用一个TCP链接
-
请求可以设置优先级
-
采用二进制协议,而不是之前的文本协议
-
多路复用
-
头部压缩
- iOS怎么支持?
-
苹果从iOS9开始支持HTTP2.0,对iOS开发人员来说,即是iOS9开始,NSURLSession可以支持HTTP2.0。
-
因为苹果已经打算废弃NSURLConnection,所以NSURLConnection不能支持HTTP2.0。
-
UIWebView也不能支持HTTP2.0(当然,如果你使用UIWebView,然后使用NSURLProtocol,在NSURLProtocol中使用NSURLSession,这样也是可以支持HTTP2.0的),WKWebView是可以的。
说白了,就是什么也不用做,最低支持版本iOS9,用NSURLSession、WKWebview就可以了。