iOS面试剖析

网络相关知识

2019-10-19  本文已影响0人  huoshe2019
标题

一、HTTP

问题1:HTTP是什么?

1.1、请求/响应报文

问题2:HTTP的请求方式有哪些?

请求方式

问题3:GET和POST请求方式的区别?

答案1(比较初级):

答案1

高级答案:

高级答案

安全性解释:

安全性

幂等性解释:

幂等

可缓存性解释:

可缓存性

问题4:你都了解哪些状态码,它们的含义是什么?

状态码

1.2、连接建立流程

tcp的三次握手四次挥手

tcp
HTTP请求是建立在TCP通道上的

三次握手:

四次挥手:

此时,由客户端服务端的连接断开了。
但是,服务端还可能向客户端发送数据。

问题5:HTTP连接建立流程?

1.3、HTTP特点

1.4、HTTP持久连接

非持久连接 持久连接

1.5、HTTP持久连接头部字段

头部字段

问题6:怎样判断一个请求是否结束?

因为一个TCP上有多个HTTP请求,判断前一个是否结束很关键。


结束

问题7:Charles抓包原理是怎么样的?

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

中间人攻击

二、HTTPS与网络安全

2.1、HTTPS概念

HTTPS 层级

问题8:HTTPS连接建立流程是怎样的?

HTTPS
解释:
1、客户端向服务端发送:TLS版本号、支持的加密算法、随机数C
2、服务端向客户端发送:商定的算法、随机数S、server证书。
3、用服务端公钥 对客户端私钥进行加密,然后发送给服务端。
4、在服务端,服务端私钥 对客户端私钥进行解密。
5、之后HTTP请求就通过被非对称加密保护的对称秘钥展开了
备注:
客户端的秘钥是对称加密
服务端对对称秘钥的保护是通过非对称加密

会话秘钥

会话秘钥

问题9:HTTPS都使用了那些加密手段?为什么?

加密手段

2.2、非对称加密

非对称加密

2.3、对称加密

对称加密

三、TCP/UDP

TCP/UDP

3.1、UDP(用户数据报协议)

问题10:你是否了解UDP协议?

从特点和功能方面回答。

3.1.1、特点
UDP协议特点
3.1.2、功能
功能

计算机数据传输是通过网络套接字(socket)。
网络套接字(socket)是IP地址与端口的组合。
一台电脑(同一个IP地址)有不用应用(不同端口号)。
但是不同的应用进行数据传输时,可以通过同一个UDP数据报,再经过IP层。

分用

分用
IP层接收了IP数据报数据,将数据拆分成UDP数据报,每个UDP数据报都包含有原端口目的端口,根据目的端口进行分发数据。 UDP头部

解释:
发送端UDP会对数据报文进行以下处理:

接收方接收到数据报,再按照上述流程走一遍,如果和UDP首部的检验和位一致,则数据没有错误;反之,代表有错误。

UDP只能检测是否有错误,对恢复错误无能为力。

问题11:UDP是怎样进行差错检测的?

看上面图解!

补充:IM等通信软件,都是利用的是UDP用户数据报协议。

3.2、TCP(传输控制协议)

问题12:你是否了解TCP协议?

从特点和功能方面回答。

3.2.1、特点
TCP特点
1、面向连接
面向连接

问题13:为什么要进行三次握手?

三次握手
解释:
客户端发送一个同步报文丢失/超时,会造成新建一个TCP通道角度回答。回答步骤如下:
  1. 客户端发送同步报文超时了。
  2. 客户端启用超时重传机制,重新发送一个同步报文。
  3. 服务端收到第二次发送的报文,会发送给客户端一个确认报文如果是两次握手,至此TCP通道已经建立了。
  4. 客户端超时的报文,到达了服务端,服务端又会给客户端发送一个确认报文如果是两次握手,又建立一个TCP通道。

你看看是不是多建立了一个TCP通道,浪费!!!
通过三次握手就可以解决上述问题,当超时报文➡️服务端➡️客户端,此时客户端不给服务端发送确认报文,就不会新建一个TCP连接。

问题14:为什么要进行四次挥手?

四次挥手
解释:
从客户端到服务端建立的TCP通道是全双工的
全双工的概念:客户端可以给服务端发送和回复,服务端可以给客户端发送和回复。
所以需要双方都进行中断。
2、可靠传输

问题15:TCP是怎样保证可靠传输的?

通过停止等待协议实现的;有以下特点:

停止等待协议
3、面向字节流
面向字节流
解释:
发送方发送给TCP的字节,会被拆分成不同的字节进行发送,而不是有多少发送多少,由TCP决定。
4、流量控制

基于滑动窗口协议来完成的。

滑动窗口协议
解释:
由于接收方的接收窗口/接收缓存,没有那么大;此时,通过由接收方向TCP报文首部字段中更改窗口值,发送方解析出来后,调整发送窗口大小,从而达到流量控制

简单理解就是:接收方通过告知发送方,自己当前缓存区的大小情况,让发送方减少或增大发送量。

问题16:什么是滑动窗口协议?你是怎么理解的?

见上图解。

5、拥塞控制

1、两个策略


概念 拥塞控制
解释:
1、横轴代表交互次数、纵轴代表窗口值大小。
2、开始,先发送一个报文,如果没有发生网络拥塞;接着,发送两个报文,如果还没有发生网络拥塞,就以指数规律成倍发送报文。
3、增长到窗口门限值后,会采用拥塞避免的策略,采用线性增长
4、当增长到一定值时,发生了网络拥塞,采用拥塞避免乘法减小的策略,来恢复到只发送一个报文。 同时,把拥塞窗口门限值降为原来的一半
5、此时,从新的门限值位置开启拥塞避免的策略,采用线性增长;而不会重新慢开始

问题17:请简单描述TCP慢启动的特点?

慢开始、拥塞避免角度回答。
见上图解。

问题18:TCP的快恢复、快重传?

新的门限值位置开启拥塞避免的策略,采用线性增长;而不会重新慢开始

四、DNS解析

4.1、概念

DNS解析
解释:
DNS解析特点:UDP数据报明文

问题19:你是否了解DNS解析?

见上图解

4.2、解析过程

解析过程

4.2、DNS解析查询方式

问题20:DNS解析查询方式?

查询方式

4.2、DNS存在问题

问题21:DNS解析存在哪些常见的问题?

DNS问题

问题22:DNS劫持与HTTP的关系是怎样的?

关系

4.3、怎样解决DNS劫持

解决

示例图如下:

httpDNS解析图

五、Session / Cookie

5.1、作用

HTTP协议无状态特点的补偿。

图解

5.2、Cookie

5.2.1、Cookie概念

问题23:Cookie的概念?

Cookie的概念

Cookie整个流程

流程

客户端和服务端设置Cookie

设置Cookie

问题24:怎样修改Cookie?

修改Cookie

问题25:怎样删除Cookie?

删除Cookie
备注
删除Cookie:覆盖+ 设置过期时间等

问题26:怎样保证Cookie的安全?

安全

5.3、Session

5.3.1、Session概念

问题27:Session的概念?

Cookie的概念

问题28:Session和Cookie的关系怎样?

5.3.2、Session工作流程

流程

六、网络整体总结

题目

问题29:TCP和UDP有什么区别?

1、特点不同
TCP

TCP

UDP

UDP

2、功能
TCP
提供了流量控制拥塞控制

UDP
只提供了复用/分用差错检测基本功能。

其它答案:见上文。

上一篇下一篇

猜你喜欢

热点阅读