iOS基本功

iOS 面试 --- 网络

2020-03-16  本文已影响0人  唐师兄

get 和 post的区别?

http 请求的整个流程?

首先是通过 tcp 的三次握手建立客户端到服务端的连接,连接建立完成,客户端发送请求报文,服务端发送响应报文给客户端,然后通过四次挥手断开客户端与服务端的连接。三次握手流程是这样的,首先是客户端发送同步 syn 报文给服务端,服务端收到以后发送同步的 ack 报文给客户端,客户端将接收的 ack 报文回给服务端,此时 http 连接就已经建立了。四次挥手是,客户端发送 fin 报文给服务端,服务端收到发送 ack 报文给客户端,此时服务端接着发送 fin的 ack 报文给客户端,客户端将收到的 ack 报文回传给服务端,这个时候客户端和服务端就断开了

http有啥特点?

如何理解 http 的持久连接?

非持久连接,每次建立网络请求都会重新建立一条连接,请求结束关闭连接,而http持久连接,建立一条连接,后续多个连接都在同一条 tcp 链路。
持久连接的头部字段

对于持久连接,如何判断一个请求结束?

https 和 http 的区别?

https 是安全的 http,它的安全来源于,在应用层之下传输层之上插入了一个 ssl或者 tls 来保证 http 传输的安全性。

https 连接建立的流程?

  1. 客户端向服务端发送 tls 协议的版本号,以及客户端支持的算法和一个随机数C,之后server 端会发送一个加密算法和一个随机数S 以及server证书给客户端,客户端接收到证书会进行证书验证,然后会组装会话秘钥,此时客户端会通过服务端的公钥对预主秘钥进行加密
  2. 接着服务端通过私钥解密得到预主秘钥,然后组装会话
  3. 客户端发送加密握手消息
  4. 服务端发送加密握手消息

https采用的加密手段?

  1. 在建立连接流程使用的是非对称加密,因为非对称加密是耗时的
  2. 而在后续通信的过程中使用的是对称加密

TCP 和 UDP

关于 TCP 和 UDP,我自认为没有以下这篇博文写的通俗易懂,故附上链接,大家转到这里去看即可,所有涉及到的面试,都在这篇博文里面。
https://juejin.im/post/5e527c58e51d4526c654bf41#comment

DNS

什么是 DNS解析?

域名到ip 地址的映射,dns 解析请求采用 udp 数据报的形式传输,且明文

流程大概是什么的?

客户端向 dns 服务器获取连接的 ip 地址,然后用得到的 ip 地址去和服务端建立连接,这个就是 dns 解析

dns解析的方式有哪几种?

dns解析存在哪些常见的问题?

dns劫持和 http的关系是怎样的?

dns 劫持和 http是没有关系的,因为 dns 解析是发生在建立连接以前,并且 dns解析请求是通过 udp 数据报,去访问端口号为 53 的请求,所以说 dns 劫持和 http 是没有关系的

如何解决 dns 劫持?

httpDns
Dns 常规解析是使用 dns 协议向 dns 服务器的 53 端口发送请求,而使用 httpDns 则是使用 http 协议向 dns 服务器的 80 端口发送请求解析

长链接

Cookie 和 Session

什么是 cookie?

cookie 主要是用来记录用户的状态、区分用户,状态保存在客户端

Cookie 生成流程

客户端发送的 cookie 在 http 请求报文的Cookie头部字段中,
服务端设置 http 响应报文的 set-cookie头部字段向客户端传递 cookie 内容

如何修改 cookie?

怎么删除 cookie?

什么是 session?

session 主要是用来记录用户的状态、区分用户,状态保存在Server端

session 生成流程

客户端发送请求,服务端会生成 Cookie,同时会生成一个 sessionId,然后已 set-Cookie 的形式返回客户端

怎么样保证 cookie 的安全?

  1. 对 cookie 进行加密处理
  2. 只在 https 上携带 cookie
  3. 设置 cookie 为 httpOnly,防止跨站脚本攻击

总结

以上基本就涵盖了 iOS 面试网络相关的面试了

上一篇 下一篇

猜你喜欢

热点阅读