你需要了解的事——网络

2018-12-14  本文已影响13人  虫yu

前言

网络的知识范围很大,本篇文章只提取作为一个前端,我们需要关注的部分。

目录

一、URL
二、HTTP协议
三、Cookie和Session机制
四、HTTPS协议
五、TLS和SSL协议
六、端口
七、网络请求
八、常见的网络响应状态码
九、iOS中的网络请求和数据解析
十、iOS中HTTPS的实现(证书验证)

一、URL

网络的内容很大,我们要如何谈论网络与前端的关系呢,或许,从URL开始是一个可行的方式。

URL是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它

http:// hostname /absoltuePath ?query

URL决定网络通信的目标信息处理方式协议决定客户端和服务器之间传输数据的标准和规范,域名/IP定位通信的服务器,端口号定位通信的服务器中的服务。

二、HTTP协议

HTTP协议,即超文本传输协议(HTTP,HyperText Transfer Protocol)。是一个客户端和服务器之间传输文本、图片、语音、视频等文件信息的标准和规范。

1、 HTTP和HTTPS协议的发展历程:
HTTP和HTTPS协议的发展历程
2、 HTTP协议中规范的网络请求的工作流程:
HTTP协议中规范的网络请求的工作流程

TCP层面的三次握手:

HTTP层面的数据请求和响应:

TCP层面的四次挥手(客户端或者服务端都可能是先提出终止报文的一方):

3、 HTTP报文的格式

三、Cookie和Session机制

四、HTTPS协议

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

1、HTTPS和HTTP的区别主要为以下四点:
2、HTTP和HTTPS的层次结构区别:
HTTP和HTTPS的层次结构区别
3、HTTPS协议下的网络请求工作流程:
HTTPS协议下的网络请求工作流程

五、TLS和SSL协议

1、SSL和TLS:

在HTTP和HTTPS协议下的网络请求的层次结构图和工作流程图中,我们看到了区别两者的TSL&SSL,这是什么呢?

2、SSL协议的作用:
3、SSL连接建立的过程

以下红色加粗部分为SSL的四次握手

4、加密

六、端口

端口号定位通信的服务器中的服务。一个端口号对应一个服务。

七、网络请求

请求方式有9种,但是我们一般使用的多的是get和post:

八、常见的网络响应状态码

推荐阅读:http协议的状态码 200、301、304、404、502 HTTP状态码解释

常见状态码:

九、iOS中的网络请求和数据解析

1、iOS中的原生网络请求相关类:

2、iOS中的第三方网络请求类:

3、iOS中的网络数据解析:
网络请求到的数据是加密的,在服务器数据接收完毕的方法中,将拼接好的数据,进行解析。

4、iOS9的ATS特性:
基于安全的考虑,iOS9中新增App Transport Security(简称ATS)特性,强制使用HTTPS,提升安全级别。

为了便于版本迭代,在info.plist文件的Infomation Property List中如下设置,可以正常使用HTTP请求:

十、iOS中HTTPS的实现(证书验证)

以下两个代理方法都可以进入证书验证的过程,干涉SSL连接的建立。

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task
                            didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge 
                              completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * _Nullable credential))completionHandler;
/* NSURLSession *session:一次会话
 * NSURLSessionDataTask *dataTask:一个网络请求任务
 *
 * NSURLAuthenticationChallenge *challenge:认证挑战,
 * 该类有一个成员变量NSURLProtectionSpace *protectionSpace(受保护空间),
 * protectionSpace的成员变量SecTrustRef serverTrust(服务器信任),
 * 它携带者服务端关于返回的证书以及系统的默认验证策略。
 * 
 * NSURLSessionAuthChallengeDisposition disposition:标识认证挑战的一个策略(枚举)
 * NSURLCredential * _Nullable credentia:用来认证的证书
 */

推荐阅读

iOS - HTTPS

上一篇下一篇

猜你喜欢

热点阅读