ISP全称是internet service provider
网络结构可以理解为网络的网络
网络是由主机、路由器、交换机等组成的
按照网络范围可以将网络划分为三种类型:区域网(一个区域内的网络)、城域网(城市范围内的网络)、广域网(更大范围的网络)
信息交换的方式:电路交换【注意要先建立连接】、分组交换【不会建立电路连接、不会预留资源、满了之后会丢弃先到的资源(丢包)计算机网络中使用的是分组交换】
为了使每层的职责更加清晰,计算机网络分为5层,从低到高分别是物理层 -> 链路层 -> 网络层 -> 运输层 -> 应用层
网络协议的存在避免了使用错误的方式解读数据,协议的存在依赖于连接,协议定义了在两个或多个通信实体之间交换的报文格式和顺序,以及报文发送或接收一条报文或其他事件所采取的动作。
网络协议的基本结构是标头和载荷,每一层都会将上一层的标头和载荷视为这一层的载荷,并添加自己的标头【标头和载荷类似于快递包裹的面单和包裹内容,标头类似于记录快递信息,载荷表明要送达的信息】
报文 = 链路层的头 + IP协议的头 + TCP协议的头 + HTTP协议的头 + HTTP的正文
TCP协议格式
TCP协议前两个字节是原端口号,后两个字节是目标端口号,再往后四个字节是序列端口号,再往后四个字节是ACK号,再往后的四位表示的是载荷相对于TCP数据包偏移量
HTTP1.1及以前版本中,头部和载荷是通过两个换行符和回车符进行划分的
HTTP和TCP都是以二进制形式传输,但是HTTP协议可以转换为ASCII码以明文形式展示出来
HTTP模型采取请求-响应模型,发起第一个请求之后需要等客户端先完成响应,才可以发起第二个请求,无法在一条连接上进行多路复用,效率不高,部分头部会重复发送多次,增加了报文的体积
三代模型,最右侧的基本没有浏览器在使用,性能提升不高且安全性低
通常同一个域名下的TCP连接的数量会被浏览器限制为6个,防止连接数量过多导致每个连接分到的带宽过少,造成每个连接的响应时间变长
HTTP1.1无法多路复用;HTTP2将多个TCP请求拆分到不同的帧中,每个帧携带不同的HTTP请求,可以标识每个数据包属于哪个请求,从而实现多路复用
帧的结构:前三个字节表示帧的长度,第四个字节表示帧的类型,第五个字节对于不同帧类型不同的含义用于传递当前帧的状态,第六个字节的第一位是保留位,后面的31位代表这个帧所属流的ID,之后的字节表示当前帧的载荷。通过每个帧的头部信息就可以分析出当前帧属于哪个流,进而可以确定每个帧的载荷属于哪个请求,最终在浏览器或服务器中重组为完整的请求或响应。上述方式实现了HTTP2中的多路复用
帧的优点:解决了队头堵塞,实现多路复用,调整响应传输的优先级,头部压缩,Server Push
RTT(Round Trip Time)
HTTP3 使用QUIC,实现第一次连接1RTT,第二次连接0RTT
CDN(Content Delivery Network)
CDN:拉策略【用户决定CDN的策略】、推策略【网站决定】
WebSocket
- 有状态的持久连接
- 服务端可以主动推送消息
- 用WebSocket发送消息延迟比HTTP低
WebSocket是从HTTP升级来的
网络安全三要素:
- 机密性:攻击者无法获知通信内容
- 完整性:攻击者对内容进行篡改时能被发现
- 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信
对称加密:加密、解密用同样的密钥
非对称加密:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
密码散列函数(哈希函数):
输入:任意长度的内容
输出:固定长度的哈希值
性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
加密算法和加密密钥统称为秘密信息