
一、HTTP
问题1:HTTP是什么?
- HTTP是超文本传输协议。
- 包含请求/响应报文(具体说出报文包含的字段)。
1.1、请求/响应报文
-
请求报文
请求报文
注意:
1、get请求没有实体主体。
2、post请求有实体主体。 -
响应报文
响应报文
问题2:HTTP的请求方式有哪些?

问题3:GET和POST请求方式的区别?
答案1(比较初级):

高级答案:

安全性解释:

幂等性解释:

可缓存性解释:

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

- 200:响应成功。
- 301、302:网络重定向。
- 401、404:客户端本身请求有问题。
- 501、502:服务端本身有异常。
1.2、连接建立流程
tcp的三次握手和四次挥手。

HTTP请求是建立在TCP通道上的。
三次握手:
- 客户端发送一个同步报文。
- 服务端收到以后,发送给客户端一个同步确认报文。
- 客户端收到以后,向服务端发送一个确认报文。
四次挥手:
- 客户端发送一个终止报文。
- 服务端收到以后,发送给客户端一个确认报文;
此时,由客户端到服务端的连接断开了。
但是,服务端还可能向客户端发送数据。
- 还需服务端向客户端发送终止报文。
- 客户端向服务端发送确认报文。
问题5:HTTP连接建立流程?
- 三次握手
- HTTP请求报文和响应报文
- 四次挥手
1.3、HTTP特点
- 无连接
指的是HTTP有一个建立连接和释放连接的过程。
通过HTTP持久连接方案,来解决无连接。 - 无状态
指的是同一个用户发送多次HTTP请求,服务端是不知道是同一个用户的。
通过Cookie/Session方案,来解决无状态。
1.4、HTTP持久连接

- 每发送一次HTTP响应,都要重新建立一个TCP通道,经历三次握手和四次挥手。

- 多个HTTP响应都在一个TCP通道上,只有经过一定时间才会重新建立一个新的TCP通道。
1.5、HTTP持久连接头部字段

- Connection
代表客户端期望持久连接。 - time
代表持久连接持续时间。 - max
代表持久连接允许的最多HTTP请求。
问题6:怎样判断一个请求是否结束?
因为一个TCP上有多个HTTP请求,判断前一个是否结束很关键。

- Content-length
响应报文的头部字段
根据返回结果大小是否达到Content-length来判断。 - chunked
响应报文中的头部字段
POST请求
碰到为空,代表请求结束。
问题7:Charles抓包原理是怎么样的?
利用HTTP的中间人攻击漏洞来实现的。

二、HTTPS与网络安全
2.1、HTTPS概念


- IP:网络层
- TCP:传输层
- HTTP:应用层
- SSL/TLS:应用层下面、传输层上面
问题8:HTTPS连接建立流程是怎样的?

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

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

2.2、非对称加密

- 加密和解密用的是钥不一样。
- 公钥加密、私钥解密
- 私钥加密、公钥解密
2.3、对称加密

- 用同一个秘钥。
- 秘钥在网络传递过程中,被劫持了,就会造成安全隐患。
- 而非对称加密,只有公钥在网络中传输,私钥不传输,所以比较安全。
三、TCP/UDP

3.1、UDP(用户数据报协议)
问题10:你是否了解UDP协议?
从特点和功能方面回答。
3.1.1、特点

- 无连接
发送UDP数据报的时候,不需要事先建立好连接,也就没有释放连接的过程。 - 尽最大努力交付
不能保证可靠传输 - 面向报文
既不合并,也不拆分。就是有什么就传递什么!
面向报文
解释:
应用层的报文无论大小,直接全部作为传输层UDP用户数据报的数据部分,之后将UDP数据报作为IP数据报的数据部分。
3.1.2、功能

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

IP层接收了
IP数据报数据,将数据拆分成UDP数据报,每个UDP数据报都包含有原端口和目的端口,根据目的端口进行分发数据。
-
差错检测
差错检测

解释:
发送端UDP会对数据报文进行以下处理:
- 以16位字为一个单元。
- 按照
二进制反码计算出这些16位字的和。 - 将
和的二进制反码写入检验和位。
接收方接收到数据报,再按照上述流程走一遍,如果和UDP首部的检验和位一致,则数据没有错误;反之,代表有错误。
UDP只能检测是否有错误,对恢复错误无能为力。
问题11:UDP是怎样进行差错检测的?
看上面图解!
补充:IM等通信软件,都是利用的是UDP用户数据报协议。
3.2、TCP(传输控制协议)
问题12:你是否了解TCP协议?
从特点和功能方面回答。
3.2.1、特点

1、面向连接

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

解释:
从
客户端发送一个同步报文丢失/超时,会造成新建一个TCP通道角度回答。回答步骤如下:
- 客户端发送同步报文
超时了。 - 客户端启用
超时重传机制,重新发送一个同步报文。 - 服务端收到
第二次发送的报文,会发送给客户端一个确认报文,如果是两次握手,至此TCP通道已经建立了。 - 客户端
超时的报文,到达了服务端,服务端又会给客户端发送一个确认报文,如果是两次握手,又建立一个TCP通道。
你看看是不是多建立了一个TCP通道,浪费!!!
通过三次握手就可以解决上述问题,当超时报文➡️服务端➡️客户端,此时客户端不给服务端发送确认报文,就不会新建一个TCP连接。
问题14:为什么要进行四次挥手?

解释:
从客户端到服务端建立的TCP通道是
全双工的。全双工的概念:客户端可以给服务端发送和回复,服务端可以给客户端发送和回复。所以需要双方都进行中断。
2、可靠传输
问题15:TCP是怎样保证可靠传输的?
通过停止等待协议实现的;有以下特点:

-
无差错情况(正常情况)
无差错情况
客户端➡️服务端报文,服务端➡️客户端确认报文。
一直循环下去。 -
超时重传(服务端收不到报文)
超时重传
解释:
1、由于网络环境比较差,客户端丢失/滞留了报文;或者报文被篡改了等等。会被服务端判定为有差错的报文。此时,服务端不会发送确认报文。
2、客户端收不到确认报文,一定时间后,会重新发送报文。 -
确认丢失(客户端收不到确认报文)
确认丢失
解释:
1、服务端发送的确认报文,客户端没有收到。
2、客户端启动超时重传,重新发送。
3、客户端丢弃重传的报文,重新发送确认报文。
4、客户端收到确认报文,一切正常进行。 -
确认迟到(服务端的确认报文迟到了)
确认迟到
解释:
1、前面过程和确认丢失过程类似。
2、收到迟到的确认报文什么也不做。
3、面向字节流

解释:
发送方发送给TCP的字节,会被
拆分成不同的字节进行发送,而不是有多少发送多少,由TCP决定。
4、流量控制
基于滑动窗口协议来完成的。

解释:
由于接收方的
接收窗口/接收缓存,没有那么大;此时,通过由接收方向TCP报文首部字段中更改窗口值,发送方解析出来后,调整发送窗口大小,从而达到流量控制。
简单理解就是:接收方通过告知发送方,自己当前缓存区的大小情况,让发送方减少或增大发送量。
问题16:什么是滑动窗口协议?你是怎么理解的?
见上图解。
5、拥塞控制
1、两个策略


解释:
1、横轴代表交互次数、纵轴代表窗口值大小。
2、开始,先发送一个报文,如果没有发生网络拥塞;接着,发送两个报文,如果还没有发生网络拥塞,就以
指数规律成倍发送报文。3、增长到窗口
门限值后,会采用拥塞避免的策略,采用线性增长。4、当增长到一定值时,发生了
网络拥塞,采用拥塞避免乘法减小的策略,来恢复到只发送一个报文。 同时,把拥塞窗口门限值降为原来的一半。5、此时,从
新的门限值位置开启拥塞避免的策略,采用线性增长;而不会重新慢开始。
问题17:请简单描述TCP慢启动的特点?
从慢开始、拥塞避免角度回答。
见上图解。
问题18:TCP的快恢复、快重传?
从新的门限值位置开启拥塞避免的策略,采用线性增长;而不会重新慢开始。
四、DNS解析
4.1、概念

解释:
DNS解析特点:
UDP数据报、明文。
问题19:你是否了解DNS解析?
见上图解
4.2、解析过程

- 客户端通过
DNS协议向DNS服务器进行域名解析。 - DNS服务器返回解析出来的
IP地址。 - 客户端根据
IP地址发送网络请求。
4.2、DNS解析查询方式
问题20:DNS解析查询方式?

-
递归查询
含义:我去给你问一下
递归查询 -
迭代查询
含义:我告诉你谁可能知道
迭代查询
4.2、DNS存在问题
问题21:DNS解析存在哪些常见的问题?

- DNS劫持
DNS劫持
解释:
因为DNS请求采用UDP数据报文,且是明文。很容易被劫持的。
问题22:DNS劫持与HTTP的关系是怎样的?

- DNS解析转发
DNS解析转发
解释
通俗来讲,你用的电话卡是移动的,此时进行DNS查询的时候,会去移动的DNS服务器去查询。但是这个移动的DNS服务器为了节约资源,转发到电信的DNS服务器,此时就形成了DNS解析转发。
4.3、怎样解决DNS劫持

- httpDNS
httpDNS
解释
不产生正常的DNS解析了,就不会产生DNS解析的问题了。
示例图如下:

- 长连接
长连接
这里的长连Server指的是代理服务器。
五、Session / Cookie
5.1、作用
HTTP协议无状态特点的补偿。

5.2、Cookie
5.2.1、Cookie概念
问题23:Cookie的概念?

Cookie整个流程

客户端和服务端设置Cookie

问题24:怎样修改Cookie?

问题25:怎样删除Cookie?

备注
删除Cookie:
覆盖+ 设置过期时间等。
问题26:怎样保证Cookie的安全?

5.3、Session
5.3.1、Session概念
问题27:Session的概念?

问题28:Session和Cookie的关系怎样?
- 区别
Session存在服务端,Cookie存在客户端。 - 联系
Session需要依赖Cookie机制。
5.3.2、Session工作流程

六、网络整体总结

问题29:TCP和UDP有什么区别?
1、特点不同
TCP

UDP

2、功能
TCP
提供了流量控制和拥塞控制
UDP
只提供了复用/分用、差错检测基本功能。
其它答案:见上文。














