12-DHCP的内容和HTTP的改良
12 DHCP的内容和HTTP的改良
一、回顾
计算机分配相关身份
- 网络号、主机号 网络号内的主机识别 局部网通信
- 网关 不同网络的通信
- DNS服务器 域名解析 因特网通信
二、DHCP协议
1、理解
DHCP 的全称是 Dynamic Host Configuration Protocol 动态主机配置协议 。DHCP与IP地址紧密联系。
作用 :自动配置IP地址、统一管理IP地址分配。
注意:
除了IP地址,DHCP服务器还会把 子网掩码,默认路由,网关信息,DNS服务器 告诉你。
2、DHCP服务器
动态IP地址最终的去处。
- 由于IP地址是 动态的(临时分配) 而不是 静态的(永久分配) ,因此 不再使用的IP地址会自动返回IP地址池中进行重新分配 。
那么DHCP服务器由谁服务呢?
- 网络管理员负责建立DHCP服务器 ,并以租约的形式向启用DHCP的 客户端提供地址配置。
- DHCP会为每个客户端提供一个动态地址,到了截止时期,会自动收回。
当虚拟机的静态地址是192.168.1.9与手机的IP地址一样。虚拟机接入网络时,会连不上。IP地址发生冲突。
那么DHCP如何知道哪些IP地址是空闲的呢?
- 这就需要数据库了。通过DHCP维护的信息,来合理分配IP地址。那么
DHCP维护了哪些信息
?
- 有效的TCP/IP配置参数
- 主机名(Host name)、DHCP 客户端(DHCP client)、域名(Domain name)、IP 地址(IPaddress)、网关(Netmask)、广播地址(Broadcast address)、默认路由(default rooter)。
- 有效的 IP 地址和排除的 IP 地址 ,保存在 IP 地址池中等待分配给客户端。
- 为某些特定的 DHCP 客户端保留的地址,这些地址是 静态 IP ,这样可以将单个 IP 地址⼀致地分配给单个DHCP 客户端。
- 有效的TCP/IP配置参数
3、DHCP工作机制
DHCP报文有哪些?
- DHCP discover :客户端广播寻找可用DHCP服务器。
- DHCP offer :服务器接收到 DHCPDISCOVER 之后 做出的响应 ,它 包括了给予客户端的 IP 租约过期时间、服务器的识别符以及其他信息 。【 单播或广播 】
- DHCP request :客户端确认接受服务器提供的IP地址。【 广播 】
- DHCP ACK :服务器确认分配(Ack)。【 单播或广播 】
- DHCP NAK :服务器拒绝了客户端的请求。【 单播或广播 】
- DHCP RELEASE :一般出现在客户端关机、下线等状况。这个报文将会使 DHCP 服务器 释放发出此报文的客户端的 IP 地址 。
- DHCP INFORM :客户端发出的向服务器 请求⼀些信息的报文 。
- DHCP DECLINE :当客户端发现服务器 分配的 IP 地址无法使用 (如 IP 地址冲突时),将发出此报文,通知服务器 禁止使用该 IP 地址 。
三、HTTP 2.0/3.0的理解
1、最初的HTTP
最初的HTTP只用于Web端的内容获取 。web端那时候是很简单的界面。但是时代的发展,界面变得越来越好看,需要的技术文件越来越多。就会导致发送数据的阻碍。
1.1、影响
影响HTTP的网络请求因素 主要有: 带宽和延迟 。
带宽
- 因为 单位时间传输的数据很少 。如果按以前的老年机来输入信息,那么是无法满足现代聊天的需求。
延迟
浏览器阻塞
- 浏览器阻塞是指浏览器在执行某些操作时被阻止,导致页面加载或功能无法正常运行。
DNS查询
- 览器需要知道目标服务器的 IP 才能建立连接。将域名解析为 IP 的这个系统就是 DNS。但是这个通常可以利用 DNS 缓存结果来达到减少这个时间的目的。
建立连接
- HTTP 是基于 TCP 协议的,浏览器最快也要在第三次握手时才能捎带 HTTP 请求报文,达到真正的建立连接,但是这些连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。
1.2、HTTP的问题1
- HTTP被抱怨最多的问题是: 连接无法复用 。每次请求都要进行TCP三次握手,4次挥手。建立连接的过程消耗的资源很大。
- 所以后面 HTTP1.0会设置connection:Keep-Alive(持久连接) 。这样就可以减少TCP的握手和挥手,至于可以 复用多久是由服务器决定 。
- HTTP 1.1的话默认就是Keep-Alive 了,要关闭这个功能就把connection改成 Close 。
1.3、HTTP的问题2
- HTTP还有个大问题是
队头阻塞
(head of blocking)。
队头阻塞导致带宽无法充分利用。后续请求被阻塞 。
- 例如:假如有五个请求被同时发出,如果第⼀个请求没有处理完成,就会导致后续的请求也无法得到处理,如下图所示:
- 如果发送的第一个请求被阻塞,其他的4个请求也就被阻塞在客户端,等到请求1被处理完,其他才发出。
HTTP1.1里面有个 管线化技术(流水线) :单个连接可以同时发多个请求,但是发送的请求顺序是怎么样,响应的顺序也是一样的。
但是这种它有不少缺陷。
- 如果管道中的 第一个请求的响应延迟或阻塞 ,后续请求的响应也会被阻塞,即使它们已经处理完成。
- 并非 所有服务器和代理都正确支持流水线技术。
- 如果管道中的某个请求失败, 客户端难以确定具体是哪个请求出了问题 。
- 流水线可能导致 服务器资源竞争 ,尤其是在高并发场景下。
- 流水线的实现对客户端和服务器都增加了复杂性 。
2、SPDY
SPDY(发音为 “speedy”)是 Google 开发的一种网络协议,旨在减少网页加载时间并改善 Web 性能。 它是 HTTP/2 协议的前身 ,引入了许多创新特性,为现代 Web 性能优化奠定了基础。
- SPDY主要解决了HTTP的延迟和安全性。
SPDY 的主要目标是解决 HTTP/1.1 的性能瓶颈
- 高延迟 :HTTP/1.1 的串行请求和响应机制导致延迟较高。
- 队头阻塞 (Head-of-Line Blocking):一个请求的延迟会影响后续请求。
- 低效的头部传输 :HTTP/1.1 的头部信息重复且未压缩。
- 并发连接限制 :浏览器对同一域名的并发连接数有限制。
SPDY的功能
- 多路复用(Multiplexing)
- 功能:在单个 TCP 连接上同时传输多个请求和响应。
- 优势:避免了 HTTP/1.1 的队头阻塞问题,提高了连接利用率。
- 头部压缩
- 功能:使用专门的算法(如 HPACK)压缩 HTTP 头部。
- 优势:减少了头部数据的传输量,降低了延迟。
- 请求优先级
- 功能:允许客户端为请求设置优先级,确保关键资源优先加载。
- 优势:优化了页面渲染性能,提升了用户体验。
- 服务器推送(Server Push)
- 功能:服务器可以主动向客户端推送资源,而无需等待客户端请求。
- 优势:减少了额外的请求往返时间,加快了页面加载速度。
- 加密传输
- 功能:SPDY 默认使用 TLS 加密传输数据。
- 优势:提高了安全性,防止数据被窃听或篡改
3、HTTP 2.0
3.1、二进制格式
HTTP 1.x是文本格式。那么它的协议解析是基于文本,而文本的复杂度很高。而二进制格式只识别0和1,所以在 HTTP2.0里开始使用二进制格式 。
3.2、连接共享
连接共享意味着客户端与服务器之间也只需要⼀个连接即可,这样即使来自 很多流的数据包也能够混合在⼀起通过同样连接传输 ,再根据不同帧首部的 **stream id 标识符(流标识符)**重新连接将不同的数据流进行组装。
stream 是连接中的⼀个虚拟信道,可以承载 双向消息传输 。每个流有唯⼀整数标识符。为了 防止两端 streaam id 冲突 ,客户端发起的流具有奇数 id,服务器端发起的流具有偶数 id。HTTP 2.0 你可以对不同的 stream 设置不同的优先级。
3.3、头部压缩
HTTP1.x 中的 header 由于 cookie 和 user agent 不存在记忆性 ,导致每次都要带着这些头 重新发送请求 。HTTP 2.0 可以使用 HPACK 算法压缩 HTTP 头部,减少冗余数据。通信双方会各自 缓存⼀份 header 字段表 ,这样能够避免重复传输 header ,也能够减小传输的大小。
3.4、服务端推送
服务器可以主动向客户端推送资源,而无需等待客户端请求。
3.5、HTTP 2.0的缺陷
- 多路复用的情况下,连接(连接是基于TCP协议上的)频繁的话,容易导致TCP性能瓶颈。
- HTTP 2.0会增加一次TLS,就多了一次RTT。
- 多个请求是在同一个 TCP 管道中,这样当 HTTP 2.0 出现丢包时,整个 TCP 都要开始等待重传,那么就会阻塞该 TCP。连接中的所有请求。
4、HTTP 3.0
- TCP 队头阻塞问题
- 在一个 TCP 连接中, 如果某个数据包丢失或延迟 ,后续的数据包即使已经到达接收方,也无法被处理, 必须等待丢失的数据包重传并到达 。
解决方法:使用了基于UDP的QUIC协议。QUIC把TLS和TCP整合在一起了,减少了时间。