Day06
1. 请你说说拥塞控制机制
- TCP的拥塞控制主要是调节拥塞窗口来影响发送窗口,因为发送窗口等于拥塞窗口和接收窗口中的较小者。
- 主要有四种算法来影响拥塞窗口,分别是慢开始、拥塞避免、快重传、快恢复。
- 其中慢开始是指每次拥塞窗口的大小从1开始,在没有达到拥塞窗口的阈值前,拥塞窗口的大小每个RTT翻倍增长。
- 拥塞避免是指拥塞窗口大小大于阈值后不再翻倍增长,而是每个RTT增加1。如果遇到超时,则将拥塞窗口重新设为1,阈值减少为原来的二分之一。
- 而快重传和快恢复则是前两者的改进,快重传是指,收到三个重复的ACK后就直接重传该数据包而不再等待计时器。
- 快恢复是指遇到超时,拥塞窗口不是变为1,而是变为原来大小的二分之一
2. 请你说说 HTTPS
- HTTPS是在HTTP中插入了SSL/TLS协议,用于加密报文传输;HTTPS很好地解决了HTTP存在的窃听、篡改、冒充风险
- 窃听风险是指HTTP使用明文传输报文,容易被窃听;HTTPS采用混合加密解决窃听,具体来说,在连接建立前采用非对称加密来交换会话密钥生成的材料,在连接建立后,采用会话密钥对报文进行加密传输
- 篡改风险是指HTTP报文数据被人篡改了,HTTPS采用摘要算法+数字签名来解决这个问题,首先对发送的内容做一个摘要(也就是让它经过一个哈希运算,得到一个哈希值),然后使用非对称加密,具体来说,使用私钥对这个哈希值进行加密,接收方使用公钥进行解密,然后对内容使用相同的哈希运算,得到两个哈希值,对比是否相同
- 冒充风险是指非法的服务器冒充源服务器,HTTPS主要是通过TLS握手时,验证对方的数字证书来解决的
3. 请你说说 HTTPS 加解密的过程是怎么样的?
- 客户端发起连接请求
- 服务端向客户端返回一个证书(公钥)
- 客户端拿到这个证书后,检验其合法性,检验通过之后,随机生成一个密钥,之后,使用这个密钥加密数据,最后用公钥加密这个密钥,一起发给服务端
- 服务端拿到客户端数据之后,首先使用自己生成的证书的时候的私钥,解密,获取要解开加密数据的密钥,然后,再用这个密钥解密数据
- 至此,保证了数据的保密性
4. 请你说说 TCP 粘包
- 多个数据包被连续存储于缓冲中,在对数据包进行读取时由于无法确定发送方的发送边界,而采用某一估测值大小来进行数据读出,若发送方发送数据包长度和接收方在缓存中读取的数据包长度不一致,就会发生粘包。如果是接收方在接收缓存中读取数据不及时,在下一个数据包到达之前没有读取上一个,可能也会造成读取到超过一个数据包的情况
- 发送方可以关闭Nagle算法,使用TCP_NODELAY选项关闭Nagle功能
- 发送定长的数据包
- 数据包末尾加标记,如\r\n
- 数据包头部加上数据包长度
- 应用层层自定义规则
5. 请你说说滑动窗口
- 在流量控制中那些已经被客户端发送但还未被确认的分组的许可序号范围可以被看成是一个在序号范围内长度为N的窗口,随着TCP协议的运行、数据的运输,这个窗口在序号空间向前滑动,因此这个窗口被称为滑动窗口。
- 整个报文段可以分为四组,即:已被确认的分组,已发送但未被确认的分组,下一个可以发送的分组,超出窗口长度之后的待使用的分组