iOS 网络相关知识学习

1.什么是HTTP?HTTP的请求方式都有哪些?

HTTP其实就是 超文本传输协议。
GET POST HEAD PUT DELETE OPTIONS

2. HTTP协议中,POST和GET的区别是什么?

GET是幂等的,并且是可缓存的,安全的。
POST是不幂等的,不可缓存的。不安全的。

GET:用来获取资源 POST:处理资源

屏幕快照 2020-07-12 下午5.21.12.png

安全性:不应该引起Server端的任何状态变化
幂等性:同一个请求方法执行多次和执行一次的效果完全相同
可缓存性:请求是否可以被缓存
3.HTTP的特点?

无连接:HTTP的持久连接
无状态:Cookie/Session

image.png
4.Charles抓包原理是怎样的?

利用了HTTP的中间人攻击漏洞来实现的。

5.HTTPS连接建立流程是怎样的??

客户端发送给服务端一个支持的加密算法列表。包括TLS的版本号以及随机数C。服务端给客户端一个证书和商定的加密算法。后续首先通过非对称加密进行对称加密的秘钥传输。之后HTTP之间的网络请求通过被非对称加密保护的对称秘钥进行网络访问。

image.png

延伸:HTTPS都使用了哪些加密手段?为什么?
连接建立过程使用非对称加密,非对称加密比较耗时
后续通信过程使用对称加密

6. 怎么解决DNS劫持?

httpDNS
长连接

7. TCP和UDP的区别?

TCP提供的是面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。
简单的说,TCP注重数据安全,而UDP数据传输快点,但安全性一般。

面向连接:数据传输开始之前,需要建立连接

非面向连接就是当要传输数据的时候是直接把数据发过去,不用像TCP那样预先执行三次握手建立连接
8.HTTPS和HTTP有怎样的区别?

HTTPS = HTTP + SSL/TLS

http和https的区别

9.TCP的三次握手和四次挥手?

HTTP的连接建立流程,可以从这三个方面回答。(三次握手 请求响应 四次挥手)


image.png

三次握手:

1.客户端发起连接,发送一个SYN同步报文到server端
2.server端收到报文请求后,server端返回给客户端一个同步ACK的SYN报文
3.之后客户端再次回应一个ACK确认报文
4.然后就可以进行客户端的http的请求报文给server端
5.server端给客户端一个http响应报文

四次挥手:

6.客户端主动发起FIN终止报文连接断开
7.server端收到后,会给客户端一个ACK确认报文
8.(也许server端还在给客户端传输数据)在某一时刻,server端向客户端发送一个FIN,ACK终止报文断开连接
9.然后客户端向server端发送一个ACK确认报文
10.TCP为什么要三次握手?
屏幕快照 2020-07-16 下午8.35.54.png

如果客户端发送请求的报文超时了。客户端会使用超时重传策略。重新发送一个syn同步报文。server收到后,会回复给客户端一个确认同步报文,如果只有两次握手。此时tcp连接已经建立。 假设server给客户端的报文之后,又收到了超时的syn同步报文,对于server来说,可能就认为客户端又要建立一个tcp连接,相当于server来说。客户端发了2次tcp连接。此时客户端只想要建立一次tcp连接。通过三次握手,可以解决这个问题。当接收到超时的syn后,客户端没有给server端发送ack确认同步报文,无法进行第二次连接。 三次握手主要是为了解决超时的问题。

你可能感兴趣的:(iOS 网络相关知识学习)