[ 前端与 HTML | 青训营笔记]Web 中的网络2

107 阅读9分钟

7. 对头堵塞,但是在TCP中(HTTP2不能解决对头堵塞问题)

image.png

TCP的机制,丢包重传,当TCP包一丢失后,包2和包3并不会交给HTTP2,会先告诉服务器序号为1的包没有收到,服务器会重新发送,且浏览器收到后会把所有包一起交给HTTP2,但是即使HTTP2知道包1知识包含命令js的内容,包1并不影响包2和包3(CSS)由于TCP缺乏对上层数据缺少比较的信息,导致HTTP2出现对头堵塞,这个问题很难在已有的HTTP协议进行修改。

8.3RTT

RTT是Round-Trip Time的缩写,意为往返时间,通常用于衡量网络通信的延迟时间。它表示从发送方向接收方发送一个数据包,再从接收方返回到发送方所需要的时间。

 

具体来说,当一台设备向另一台设备发送数据包时,发送方会记录下发送时间戳,接收方收到数据包后也会记录下接收时间戳。RTT就是这两个时间戳之间的差值。由于数据包要经过网络中的多个节点,RTT可能会受到网络拥塞、延迟等因素的影响。

RTT是衡量网络性能的重要指标之一,对于需要高实时性的应用程序(如在线游戏、视频通话等),较小的RTT可以提供更好的用户体验。

 

TCP连接需要一个RTT

TLS连接需要两个RTT

在真正HTTP报文交互之前,客户端和服务端一个RTT需要50毫秒,那就需要等150毫秒,这个效率显然很低,无法修个已有的HTTP协议进行改良,因为已经形成了。

image.png 9.HTTP3 :QUIC

image.png 为了解决上述问题,解决了对头堵塞和效率问题,但是设计一个全新的协议需要大量时间,所以基于UDP基础上,设计了QUIC,QUIC诞生。HTTP3基于QUIC。

UDP不靠谱,包丢了是不管的,也没有顺序保证,应用成给多少数据就发多少数据,UDP到没到 ,谁先到一律不管也不问,并不适合在网络中使用。

QUIC在UDP基础上实现了和TCP一样的控制实现了丢包重传等特性,实现了传输数据的稳定性,完整性

 

HTTP/3是一种用于传输超文本传输协议(HTTP)数据的网络协议,它是HTTP/2的继任者。HTTP/3使用了一种名为QUIC(Quick UDP Internet Connections)的新协议来传输数据,该协议使用了基于UDP协议的传输层加密和多路复用技术,以提高网络性能和安全性。

 

相比于HTTP/2,HTTP/3的一个显著特点是使用了QUIC协议而不是TCP协议来传输数据。QUIC协议具有快速建立连接、实现0-RTT(零往返延迟)等优势,可以大幅减少网络延迟和拥塞。此外,HTTP/3还引入了一些新的特性,例如使用了基于TLS 1.3的加密机制,可以进一步提高网络安全性。

总的来说,HTTP/3旨在通过使用新的协议和技术来改进Web应用程序的性能和安全性。

10.HTTP3 原理

image.png QUIC相比于之前TLS和TCP,吧原先分别属于TLS和TCP的握手组合起来了,因此可以实现首次1 RTT的连接,二次0RTT的连接 这种方式就可以实现0RTT的连接。可以在HTTP协议上进行的优化方案基本实现了。 HTTP 协议之外的影响web性能的因素和解决方案

1.

image.png 物理距离就决定了没有北京到上海的通讯延迟

CDN是内容分发网络的缩写。它是一个由分布在全球不同地区的服务器组成的网络,旨在提供更快速、更可靠的数字内容传递,例如网页、图片、视频和其他媒体文件等,以供用户使用。通过使用CDN,用户可以更快地加载网页和媒体文件,因为它们可以从最接近用户的服务器上获取内容。这也可以减轻主服务器的负载,提高网站的可用性和性能。

DNS是域名系统(Domain Name System)的缩写。它是互联网上的一项基础服务,用于将人类可读的域名转换为计算机可识别的IP地址。

当您在浏览器中输入网站的域名时,浏览器会向DNS服务器发送请求,以获取该域名对应的IP地址。DNS服务器会返回一个IP地址给浏览器,然后浏览器就可以使用这个IP地址连接到相应的网站服务器,获取网页内容并显示在您的屏幕上。

DNS还有其他功能,例如域名解析、记录域名的所有者和管理员信息、管理电子邮件交付等。

image.png 这样导致不仅占用网络资源还得给网络运营商很多前,如果该地有一台服务器可以省不少事情。

image.png 一台服务器,如果单点出现故障,会出现很大的损失。

2. 解决方法(CDN)

image.png


全国客户都可以在本地跳程内访问本地内容

image.png 在六个城市内不是服务器全国用户都可以在两跳内访问服务器

3.CDN :DMS劫持

1)域名解析一般由网络自己处理

2)要加速的域名则重定向到CDN厂商的域名解析服务处理

3)CDN厂商根据来源确定最近的CDN服务器IP

4)用户直接访问最近的CDN服务器

广州的小明正在访问抖音上的视频,浏览器向本地DNS查询IP对应的IP地址,于是向上一层DNS发送了查询请求,DNS查询发现这个域名应该交给抖音解析,于是交给了抖音的域名解析服务器,抖音域名解析服务器解析之后发现这是CDN的加速域名于是没有返回IP,而是返回一个新的DNS地址,新的DNS地址是CDN管理的,本地的DNS又像CDN的DNS发起了请求,CDN的DNS和用户确认最近的CDN是广州的CDN,浏览器最终和广州的CDN服务器连接,而不是和终端服务器。

4.CDN 服务器选择

image.png 最近也不一定是最优,还需要考虑路由器反应时间,通讯延迟等因素。

对于大型网络,尤其是视频网站,视频总量体积会非常庞大,在全国的CDN服务器上都维护是成本非常大的方案,因此大部分站点都会使用一些策略,确保用户体验的同时,也降低陈本

下面为解决方案

image.png 拉策略(用户在CDN上拷贝):

该用户首次访问一个视频后CDN服务器会保留该视频CDN服务器有流量限制每隔一段时间会清除访问量最小的视频,用来腾出空间

推策略(网站在CDN上拷贝):

新电影非常热门,假设电影没上映时,该网站会向CDN服务器拷贝最新上映的电影,在上映的时候,用户可以以最快速度获取该电影

CDN可以从物理层面解决HTTP协议无法解决的问题,大大提升web应用性能,有时候使用HTTP协议并不合适。 5.WebSocket 协议

WebSocket是一种在单个TCP连接上进行全双工通信的协议,它允许在客户端和服务器之间建立持久性的连接,并通过该连接进行双向通信,而无需在每个请求和响应之间重新建立连接。

WebSocket的主要特点包括:

双向通信:WebSocket支持双向通信,可以在客户端和服务器之间发送任意类型的数据,包括文本、二进制数据等。 持久连接:WebSocket建立的连接是持久的,可以避免HTTP的连接和断开开销,提高网络性能和效率。 心跳检测:WebSocket支持心跳检测机制,可以检测连接的状态并进行恢复。 二进制传输:WebSocket支持二进制传输,可以更好地支持视频、音频等多媒体数据的传输。 WebSocket已经成为Web应用程序中双向通信的主流技术,它能够更好地支持实时通信、在线游戏、在线视频等应用场景,但需要注意的是,WebSocket需要服务器端和客户端都支持才能够使用。

1)有状态的持久

2)服务端可以主动推送消息

3)用WebSocket发送消息延迟比HTTP低

4)由HTTP协议升级而来,在使用前会先用HTTP协议进行交互

5)只需要关心来自服务端的消息,和发送消息即可,其他都不需要关心

服务端代码

image.png 客户端代码

image.png

image.png HTTP请求头是和HTTP建立联系

image.png

image.png 客户端发送了一条somthing

image.png 小结

1)     HTTP 1 2 3的演进历史

2)     CDN解决HTTP协议之外的问题

3)      WebSocket从HTTP协议升级而来

个人感受

此次学习我查了很多网上资料并且补充到了笔记中例如WebSocket含义和特点,CDN含义,HTTP3原理和优点等等,同时我在学习过程中也将课上ppt图片粘贴到笔记中方便总结和学习,通过此次学习我对计算机网络有了初步的了解,了解了HTTP几代的升级和改进方法,此次笔记和上次是一起的,后面我也总结了网络安全的笔记,我不知道这种学习方法对不对,希望有人可以指点我使我学习效率得到提高,我课下也会认真复习笔记,更加深入了解计算机网络。