软件架构设计-网络篇

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重发一组包功能
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix