软件架构设计-网络篇
1、HTTP协议
连接复用问题如何解决? 请求和响应头添加Keep-Alive参数
连接数有限,如何解决? 使用Keep-Alive timeout参数
如何判断请求结束? Content-Length
动态语言服务器难计算Content-Length如何解决? Transfer-Encoding:chunked
如何实现并发TCP HTTP请求? Pipline管道
问题:Pipline对头阻塞,1,2,3请求并行发出,需等待1收回,即使2和3先到达
优化:减少请求连接数思路
图片合并、CS和JS合并、部署多个CDN域名(同域名限制6-8个连接)
断点续传如何实现? Range: first offset 、last offset字段
2、HTTP/2协议如何优化并发调用性能
请求分帧 流ID(帧编号),例如 1:FF1 1:FF2
请求并发发出和并发收回,最终按照协议编号组装
3、对称加密公钥如何传输? CA证书认证
服务器公钥A和私A钥,申请CA数字证书,数字证书保存(公钥C,私钥C)
SSL/TLS协议过程:申请/返回数字证书,验证证书/解析公钥,协商服务器公钥传输
4、HTTPS=HTTP+SSL/TLS+HTTP request/response对称加密传输
5、TCP/UDP 丢包和乱序问题如何解决
消息编号+客户端重发+顺序ACK确认, ACK=6代表6之前的所有包都已确认,返回客户端
不丢问题: ACK+重发,ACK=6,代表前6个包已收到,一次性返回客户端,优化性能
不重问题:约定超时时间,客户端会重发; 顺序ACK=6,代表前6个包已收到,即使后续再收到,也会丢弃
时序错乱问题:先收到1,2,3, ACK=3,收到5,6,7, 等待;超时重发4,5,6,7, 则5,6,7数据包丢弃,ACK=7
6、QUIC
RAID6,每次发送5个数据包,允许冗余两个数据包
A+B+C+D+E=R1
A-B+C-D+E=R2
通过丢包的这两个方程式,计算丢失包重发,优化TCP/UDP重发一组包功能

浙公网安备 33010602011771号