网络大纲

网络模型五层协议,在开发过程中涉及到的协议和概念进行概括总结

http

http协议随着网络的发展,传输速度的加快和应用的丰富,传输的数据量也越来越大,版本也随之升级更新。
1.0----> 1.1---->2.0
升级的目的:更快的传输数据,更快的渲染速度。
关键词:
http1.1 : 链接复用Keep-alive、队头阻塞、gzip压缩?
http2.0: 二进制分帧, io多路复用,流优先级,header优化(HPack算法),Server-push

请求方式

常用请求方式有get、post。
get请求为向服务器请求资源,通常请求到的资源是不可变的,浏览器会进行缓存操作。
而post请求如请求体中为表单数据,通常服务器会利用提交的数据的数据执行相应的逻辑,不可缓存。

http格式

http request中包含:请求行,请求header,空行,请求内容
http response中包含:响应码,header,空行,响应内容。
考虑一个问题:https中抓包获取到的请求行中有路径吗?

http加速

提到加速必须要先考虑http请求的各个阶段
DNS获取ip地址 ----> 发起网络请求(携带请求数据) ----> 网络传输----> 服务端进行响应

域名解析:dns缓存(浏览器缓存,本地缓存/etc/host)。
Dns解析存在着被劫持的问题:Dns在请求方和dns服务器之间是udp协议 53端口,Master(主要名称服务器);Slave(备份服务器),Slave通过区域传送从 Master 服务器获得区域数据的副本。
那么客户端请求的第一个dns服务器从哪里来呢?
路由器通过DHCP分配,也可以用户自己配置dns服务器如:8:8:8:8
DHCP:动态主机配置协议。用于给网络内的主机自动分配IP地址。一般通过路由器或DHCP服务器,把将要为用户分配的网关、DNS服务器及域名等参数保存至配置文件中,当DHCP客户端连接到DHCP服务器请求IP地址时,就会按配置文件指定的地址池分配IP地址、网关、DNS服务器。

HttpDns优化Dns被劫持的问题。

DNS部分优化

域名----CNAME(如云服务器关联)

DNS相关概念:

A记录(A记录是把一个域名解析到一个IP地址,又称IP指向)
CNAME 简单理解为域名到域名的映射。 如CDN服务中,如果CND服务商提供给你ip地址,如果ip变更,会直接影响到用户,提供给用户的实际为域名,做了一层隔离,并且会根据用户所在位置选择并返回最优节点 IP,加快访问速度,这也是cnd最重要的功能。
缺点:第一次DNS解析域名的时候会多解析一次。

httpdns

域名服务器中有高速缓存,选用一个优质的dns服务器,可能会触发缓存,加快ip返回速度。
httpdns自身考虑配置ip直连列表,同样的ip地址在不同的网络环境下访问速度可能不一致,因此可以在初始化时对ip列表进行速度测试,为当前的ip设置生效时间。(并行 or 串行 or 阶梯型)
当httpdns失败时要使用降级方案。

域名合并

如一个公司不同部门的资源三级域名不一致,那么可以进行合并,并做路径映射然后通过后端统一接口再做拆分转发到对应的服务器。
参见美团域名合并方案

传输数据优化

利用http协议中现有的机制减少请求数据量

  1. 设置gzip压缩
  2. http2.0 中头部压缩
  3. 具体业务场景下如大量音频或者视频数据考虑具体的压缩算法。 post请求 语音识别:multipart,chunked(减少了请求次数)
  4. protobuf 替换json,利用变长编码减少数据量。

如: boundary自然要避免和传输数据一致导致数据解析异常
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary11223344

Content-Length: 514
持续上传数据设置multipart和大数据返回chunk

transfer-encoding:chunked

其他

电商app中网络请求缓存,如缓存get请求数据,并且对应数据本地持久化,再次打开页面时加快访问速度。

tcp

关键词:三次握手,拥塞控制(cwd, swd),数据丢包原因

websocket

websocket和socket区别,和使用tcp建立的长链接区别
websocket和http区别 和Server push机制的区别

问题

基于tcp实现的http协议,必然会受限于tcp协议队头阻塞问题,因此Quick协议基于udp实现,对此进行优化。
如在一次http请求访问异常时,重试发起一次http请求,并以阶梯方式间隔短暂时间发起quic请求,哪个请求先返回则使用哪个请求。

参考

facebook奇特的页面加载技术

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • DNS解析本质上是localDNS的解析,说白了,你给它一个域名,它返回给你一个IPlist DNS(Domain...
    GitArtOS阅读 4,793评论 6 9
  • 非常好的文章,怕博主删除,再也找不到这么好的文章了,所以复制了一份,博主是2016年写,但是是到现在为止看到的,思...
    吭声_cfdc阅读 2,207评论 0 4
  • 推荐阅读:备战2020——iOS全新面试题总结 一、DNS 因特网上的主机,可以使用多种方式标识,比如主机名或IP...
    lp_lp阅读 880评论 0 1
  • 需求背景: 当一个单一的业务对外流量很大时,超过700Mbps后,负载均衡器有可能会成为瓶颈,例如LVS和低...
    广东羊驼阅读 1,190评论 0 3
  • 每一个人的成功都不可复制,我们能做的就是保持一颗平常心,忠于自己的写作节奏,踏踏实实的坚持写下去,我相信人生没有白...
    雪凌悦读阅读 323评论 0 1

友情链接更多精彩内容