HTTPDNS
介绍:
- 系统的是 UDP去localDNS找,HTTPDNS是用HTTP去 HTTP服务器上找
- 让我们的手机App 发起一个HTTP请求(这个请求地址多数使用ip直连,如果使用域名那么依然针对此请求依然有传统DNS的问题),这个请求可以携带用户所在的运营商,地理位置,精确到省市,然后服务器根据这些信息 返回一个最佳的ip地址给App,然后App将这个域名-ip的映射关系设置到我们的okhttp中。这样手机中的大部分请求就会直接使用我们HTTP服务器返回的ip地址而不是运营商的地址了。
优势:
- 防劫持
- 精准调度
- 实时解析生效
IPv6
介绍:
- 采用128位正整数表示,需要16字节存储,可以提供约2128≈3.4x1038个地址,可分配的地址数量是大的惊人;
- 以每 16 位作为一组,冒号十六进制法来表示IPv6地址
- 简化方式1:允许将每个16进制值的前导0省略
- 简化方式2:某些情况下,一个IPv6地址可能包含很长的一段0,可以把一段连续的0压缩为::。但为了保持地址解析的一致性,零压缩在一个地址中只能使用一次
优势:
- 充足的地址空间和层次化的结构
- 增强的组播支持和对流控制
- 更小的路由表,更灵活的路由机制
- 动态配置状态地址
- 可自动配置,即使没有 DHCP 服务器也可以实现自动分配IP地址,真是便捷到即插即用啊。
- 更有效的认证安全机制
- 有应对伪造 IP 地址的网络安全功能以及防止线路窃听的功能,大大提升了安全性。
- 省流高效
- 包头包首部长度采用固定的值 40 字节,去掉了包头校验和,简化了首部结构,减轻了路由器负荷,大大提高了传输的性能。
- 扩展灵活
QUIC(Quick UDP Internet Connection)
介绍:
- QUIC融合了包括TCP,TLS,HTTP/2等协议的特性,但基于UDP传输。
- QUIC协议实现在用户态,建立在内核态的UDP的基础之上,集成了TCP的可靠传输特性,集成了TLS1.3协议,保证了用户数据传输的安全。
- 把连接的管理和安全性合二为一融为一体
优势:
- 建连快
- 1-RTT 握手
- 0-RTT 传输
- 连接迁移
- 以一个 64 位的随机数作为 ID 来标识,这样就算 IP 或者端口发生变化时,只要 ID 不变,这条连接依然维持着,上层业务逻辑感知不到变化,不会中断,也就不需要重连,从而提高业务层的体验。由于这个 ID 是客户端随机产生的,并且长度有 64 位,所以冲突概率非常低。
- 解决TCP队头阻塞问题
- 丢包阻塞。HTTP2的传输层用的TCP,TCP的实现是在内核态的,而流是实现在用户态度,TCP是看不到"流"的,所以在TCP中,它不知道这个数据包是请求1还是请求2的,只会根据seq number来判断包的先后顺序。
- 更优的拥塞控制算法
- TCP的RTT测量往往不准确,QUIC的RTT测量是准确的。
- 不同于TCP,QUIC的拥塞控制算法是可插拔的,由于其实现在用户态,服务可以根据不同的业务,甚至不同的连接灵活选择使用不同的拥塞控制算法。(Reno、New Reno、Cubic、BBR等算法都有自己适合的场景)
- 在TCP协议中,初始包和重传包的序号是一样的,拥塞控制算法进行计算RTT的时候,无法区别是初始包还是重传包,这将导致RTT的计算值要么偏大,要么偏小。
- QUIC通过Packet Number来标识包的序号,而且规定Packet Number只能单调递增,这也就解决了初始包和重传包的二义性。从而保证RTT的值是准确的。
- 两级流量控制
- 不仅有连接这一个级别的流控,还有流这个级别的流控。每个流都有自己的可用窗口,可用窗口的大小取决于最大窗口数减去发送出去的最大偏移数,跟中间已经发送出去的数据包,是否按顺序收到了对端的ACK 无关。