youli
2023/04/14阅读:20主题:全栈蓝
计算机网络
❝常见的分析方法:
❞
自底向上(从简单开始,逐渐变复杂,将模块逐步拼凑成一个系统) 自顶向下(从复杂开始,逐渐变简单,从复杂的系统问题入手,拆分为模块问题)
网络基础
在了解网络基础前,我们需要了解一下网络组成部分。
网络组成部分
-
主机:指连接到网络的计算机或其他设备,例如智能手机或平板电脑。 -
网络设备:包括路由器、交换机和集线器等设备,它们用于连接主机并在它们之间传输数据。 -
网络协议:网络协议是一组规则,用于在网络上传输数据。
接下来,我们了解一下网络结构。
网络结构(网络的网络)
-
广域网(WAN):一种覆盖较大地理范围的计算机网络,通常由多个城域网或区域网组成。 -
局域网(LAN):一种覆盖较小地理范围的计算机网络,通常由单个建筑物或校园内的多个设备组成。 -
无线局域网(WLAN):一种使用无线信号连接设备的局域网,通常用于覆盖较大的地理范围。 -
个人局域网(PAN):一种连接个人设备的局域网,例如连接手机和电脑的蓝牙网络。
从某些方面来说,网络的通信的本质就是数据交换。我们来了解一下交换技术。
交换技术
-
电路交换:网络会为两个设备之间的通信建立一条专用的物理连接,直到通信结束。 -
分组交换:数据被分成小的数据包,并通过网络传输到目标设备。其前身为报文交换。
接下来就是计算机网络的最基础的内容——网络分层。
网络分层
OSI模型是计算机网络中的一种标准化模型,用于描述网络通信的不同层次。该模型将网络通信分为七个层次,每个层次都有不同的功能和协议。
-
物理层:负责将数据转换为电信号,并通过物理介质传输数据。 -
数据链路层:负责将数据包转换为帧,并在物理介质上传输数据。 -
网络层:负责将数据包从源设备传输到目标设备,并在不同的网络之间进行路由选择。 -
传输层:负责在源设备和目标设备之间建立端到端的连接,并提供可靠的数据传输服务。 -
会话层:负责在不同设备之间建立会话,并管理会话的终止。 -
表示层:负责将数据转换为应用程序可以理解的格式,并提供数据加密和解密服务。 -
应用层:负责提供应用程序与网络之间的接口,并提供各种网络应用程序,例如电子邮件、文件传输和Web浏览器。
最后,我们来聊一下协议叭~
协议
协议的存在依赖于连接,协议定义了在两个或者多个通信实体之间交换的报文格式和顺序,以及报文发送和/或接收一条报文或其他事件所采取的动作。
好了,说了这么多,接下来看看web里面的网络叭~
web里的网络
web的网络有很多知识点,这里我们来学习一下HTTP协议以及WebSocket协议。
HTTP协议
HTTP是一种用于传输超文本的协议,它是Web应用程序的基础。当您在浏览器中输入URL时,浏览器会向服务器发送HTTP请求,服务器会响应HTTP响应。 HTTP分为请求和响应两个部分,请求和响应又分为请求头和请求体,以及响应头和响应体。HTTP请求数据包结构大致如下:
请求方法 请求的资源路径 HTTP版本
Header1: Value1
Header2: Value2
请求体
HTTP的响应数据包结构大致如下:
HTTP版本 响应状态码 HTTP响应状态码的文本描述
Header1: Value1
Header2: Value2
响应体
但是HTTP通信也会有一些问题,如队头堵塞。
队头堵塞
在HTTP协议中,队头堵塞通常是由于HTTP请求和响应的顺序不当引起的。例如,如果一个HTTP请求的响应比另一个HTTP请求的响应更慢,那么后者的响应就会被阻塞,从而导致队头堵塞。
在HTTP1.1中,队头堵塞问题可以通过使用持久连接和管线化技术来解决。持久连接是指在一个TCP连接上可以传输多个HTTP请求和响应,从而避免了每次请求都需要建立和关闭TCP连接的开销。管线化是指在一个TCP连接上可以同时发送多个HTTP请求,从而避免了等待前一个请求的响应才能发送下一个请求的开销。但是这个方案成本很大,而且不同的浏览器会限制TCP连接数量,而且HTTP1.1无法多路复用。
在HTTP2.0中,通过使用多路复用来解决。多路复用是指在一个TCP连接上可以同时传输多个HTTP请求和响应,从而避免了每个请求都需要建立和关闭TCP连接的开销。当然,实现这一方案的基础是二进制帧。
HTTP/2.0协议中的数据传输是通过二进制帧(Binary Frame)来实现的。HTTP/2.0协议中的每个帧都包含一个帧头(Frame Header)和一个帧体(Frame Payload)。帧头包含了帧的长度、类型、标志和流标识符等信息,而帧体则包含了具体的数据内容。帧的具体结构为:
-
前三个字节:载荷长度 -
第四个字节:类型 -
第五个字节:类型对应的Flags -
第六到第九个字节:第一位是保留位,第2~32位为流ID
此外,二进制帧的额外好处有:
-
调整相应传输的优先级 -
头部压缩 -
Server Push
HTTP/3.0是一种基于QUIC协议的新一代HTTP协议,旨在提高Web性能和安全性。HTTP/3.0使用QUIC协议作为其传输层协议,该协议使用UDP协议而不是TCP协议来传输数据,并提供了更好的流量控制和错误恢复机制,从而可以更好地处理队头拥塞和丢包等问题。
什么是QUIC?
HTTP QUIC代表Quick UDP Internet Connections,是一种基于UDP协议的安全的HTTP传输协议。它旨在提高Web性能并减少延迟。QUIC使用加密来保护数据,因此它比HTTP / 2更安全。现存网络设备对TCP和UDP的支持已经僵化,UDP不可靠,但是QUIC可靠,QUIC可以为除HTTP协议以外的应用层协议提供支持。
❝扩展
RTT:RTT代表Round Trip Time,是指从发送请求到接收到响应所需的时间。在HTTP中,RTT是指从客户端发送请求到服务器并返回响应所需的时间。RTT时间越短,HTTP请求的响应时间就越快。HTTP QUIC是一种旨在减少延迟的协议,因此它可以帮助减少HTTP请求的RTT时间。QUIC使用UDP协议而不是TCP协议,因此它可以更快地建立连接并更快地传输数据。此外,QUIC使用多路复用技术,可以在单个连接上同时传输多个请求和响应,从而减少了RTT时间。
❞
当然了,优化HTTP请求会提高我们的资源访问的速度,但是在相差比较远的地域上,我们访问资源速度依旧会比较慢。这时候我们就需要CDN了。
CDN
CDN(内容分发网络)是一种通过在全球各地部署服务器来加速Web内容传输的技术。CDN可以将Web内容缓存到离用户最近的服务器上,从而减少了网络延迟和带宽消耗,提高了Web性能和可用性。
CDN的内容分发原理为DNS劫持,域名解析一般是网站自己处理,要加速的域名则重定向到CDN服务厂商的域名解析服务处理,CDN厂商根据来源确定最近的CDN服务器IP,用户直接访问最近的CDN服务器资源即可请求到目标资源。需要注意的是,这里的原理和网络安全领域的DNS劫持相似,但是不完全一样。
CDN的缓存策略有:
-
基于时间的缓存:在一定时间内,CDN服务器会将用户请求的内容缓存到缓存服务器上,并在缓存时间到期后重新向源服务器请求内容。这种缓存策略适用于内容更新不频繁的网站,可以减少源服务器的负载和网络带宽消耗 -
基于内容的缓存:CDN服务器会根据用户请求的内容生成一个唯一的缓存标识,并将该标识与缓存内容一起存储到缓存服务器上。当用户再次请求相同内容时,CDN服务器会根据缓存标识判断是否命中缓存,如果命中缓存则直接返回缓存内容,否则再向源服务器请求内容。这种缓存策略适用于内容更新频繁的网站,可以提高Web性能和可用性。
WebSocket
WebSocket是一种在单个TCP连接上提供全双工通信的协议。它允许客户端和服务器之间进行实时通信。它有以下的特点:
-
有状态的持久连接 -
服务端可以主动推送消息 -
用WebSocket发送消息延迟比HTTP低
网络安全
网络安全有三个要素:
-
机密性:攻击者无法获取通信内容 -
完整性:攻击者对内容进行篡改时能被发现 -
身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信
在网络安全中,加密分为对称加密和非对称加密。
对称加密与非对称加密
对称加密是指使用相同的密钥对数据进行加密和解密。由于加密和解密使用相同的密钥,因此对称加密算法的加密速度非常快,但密钥的安全性是一个问题。如果密钥被泄露,那么加密的数据也就不再安全了。常见的对称加密算法有DES、3DES、AES等。
非对称加密是指使用一对密钥(公钥和私钥)对数据进行加密和解密。公钥可以公开,任何人都可以使用它来加密数据,但只有持有私钥的人才能解密数据。非对称加密算法的安全性比对称加密算法更高,但加密和解密的速度比对称加密算法要慢得多。常见的非对称加密算法有RSA、DSA等。
对于加密,有着比较常见的加密方式——密码散列函数。
密码散列函数
密码散列函数是指将任意长度的消息压缩成固定长度的散列值,通常用于验证数据的完整性和一致性。密码散列函数是不可逆的,即无法从散列值推导出原始消息。
它的特点是:输入任意长度的内容,输出固定长度的哈希值,两个不同的输入经过密码散列函数后在计算上是不可能有相同的哈希值的。
身份验证
完整性和身份验证相互关联,身份验证是一个比较广泛的问题,这里讨论与web有关的身份验证。身份验证常见的有数字签名以及非对称加密。
数字签名
数字签名是一种用于验证数据完整性和身份验证的加密技术。数字签名使用公钥和私钥来生成和验证签名。私钥用于生成签名,公钥用于验证签名。数字签名可以防止数据被篡改或伪造,并确保数据的来源是可信的。
分发、验证证书的基础设施为PKI,公钥基础设施(PKI)是一种用于管理数字证书和加密密钥的框架。PKI包括证书颁发机构(CA)、注册机构(RA)、证书撤销列表(CRL)和在线证书状态协议(OCSP)等组件。PKI的主要目的是确保数据的机密性、完整性和身份验证。
我们熟知的HTTPS的本质就是HTTP+TLS(身份验证+加解密),服务端的身份验证靠PKI,客户端身份验证靠HTTP协议。
作者介绍