计算机网络(二):HTTPDNS、IPv6、QUIC 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 字节去掉了包头校验和简化了首部结构减轻了路由器负荷大大提高了传输的性能。扩展灵活QUICQuick UDP Internet Connection介绍QUIC融合了包括TCPTLSHTTP/2等协议的特性但基于UDP传输。QUIC协议实现在用户态建立在内核态的UDP的基础之上集成了TCP的可靠传输特性集成了TLS1.3协议保证了用户数据传输的安全。把连接的管理和安全性合二为一融为一体优势建连快1-RTT 握手0-RTT 传输连接迁移以一个 64 位的随机数作为 ID 来标识这样就算 IP 或者端口发生变化时只要 ID 不变这条连接依然维持着上层业务逻辑感知不到变化不会中断也就不需要重连从而提高业务层的体验。由于这个 ID 是客户端随机产生的并且长度有 64 位所以冲突概率非常低。解决TCP队头阻塞问题丢包阻塞。HTTP2的传输层用的TCPTCP的实现是在内核态的而流是实现在用户态度TCP是看不到“流”的所以在TCP中它不知道这个数据包是请求1还是请求2的只会根据seq number来判断包的先后顺序。更优的拥塞控制算法TCP的RTT测量往往不准确QUIC的RTT测量是准确的。不同于TCPQUIC的拥塞控制算法是可插拔的由于其实现在用户态服务可以根据不同的业务甚至不同的连接灵活选择使用不同的拥塞控制算法。Reno、New Reno、Cubic、BBR等算法都有自己适合的场景在TCP协议中初始包和重传包的序号是一样的拥塞控制算法进行计算RTT的时候无法区别是初始包还是重传包这将导致RTT的计算值要么偏大要么偏小。QUIC通过Packet Number来标识包的序号而且规定Packet Number只能单调递增这也就解决了初始包和重传包的二义性。从而保证RTT的值是准确的。两级流量控制不仅有连接这一个级别的流控还有流这个级别的流控。每个流都有自己的可用窗口可用窗口的大小取决于最大窗口数减去发送出去的最大偏移数跟中间已经发送出去的数据包是否按顺序收到了对端的ACK 无关。