http是客户端/服务器模式中 请求-响应 所应用的协议,在这种模式中客户端向服务器提交HTTP请求,服务器响应请求的资源
HTTP的特点
- HTTP是半双工协议,在同一时刻数据只能单向流动,客户端向服务器发送请求,然后服务器响应请求,二者不能同时进行
- HTTP1.1
- 长连接:设置
keep-alive
允许再一定时间内,同一域多次请求数据,只建立一次http连接,使用通道以提高效率 - 支持只发送 header 信息
- 引入更多的缓存控制等策略
- 管道机制:可以将浏览器的请求一次性全部发送给服务器,无需等待上一个完成再发送下一个
- 长连接:设置
- HTTP2.0(使用二进制数据帧传输)
- 多路复用:TCP连接可以承载任意数量的双向数据流,多个帧之间可以乱序发送,然后根据帧首部的流标识重新组装
- 头部数据压缩:HPACK 算法,维护一份相同的字典
- 服务器推送:服务端可以在发送HTML时主动推送其它资源,不用等浏览器解析到响应位置再发起请求
HTTP | HTTPS | |
---|---|---|
CA证书 | 不需要 | 需要(产生一定费用) |
是否加密 | 明文 | SSL加密 |
端口 | 80 | 443 |
状态 | 无状态 | 有状态 |
- 首先进行域名解析
- 浏览器搜索自己的DNS缓存
- 若没有,则搜索操作系统的DNS缓存
- 若没有,则操作系统将域名发送至本地域名服务器,本地域名服务器查询自己的DNS缓存
- 若没有,本地域名服务器向根域名服务器发起请求,根域名服务器返回com域的顶级域名服务器地址,本地域名服务器向com域的顶级域名服务器发起请求,返回权限域名服务器地址,本地域名服务器向权限域名服务器发起请求,得到IP地址。本地域名服务器将IP地址返回给操作系统,操作系统将IP地址返回给浏览器
- 浏览器判断是否需要建立网络连接
- 是,建立HTTP事务发起HTTP请求
- 请求进入传输层,选择传输协议,TCP或UDP,对HTTP封装,加入端口等信息
- 请求进入网络层,通过IP协议将IP地址封装为IP数据报
- 进入数据链路层,把IP数据报添加首部和尾部,封装为MAC帧,根据mac开始建立TCP连接(三次握手)
- TCP连接后如果使用了HTTPS则要进行SSL握手,沟通加密参数以及交换密钥,完成后,报文再发送给TCP之前都会在SSL层加密
- TCP连接后就可以发送HTTP请求(浏览器发送资源请求前会检查缓存)
- 服务端接受请求返回资源
- 浏览器接收资源解析文件
- 传输完成后断开TCP连接或者保持长连接
- TCP/IP
TCP/IP
协议一定听说过,TCP/IP我们称之为协议簇
,什么意思呢?就是TCP/IP协议簇中不仅仅只有TCP协议和IP协议,它是一系列网络通信协议的统称。而其中最核心的两个协议就是TCP/IP协议,其他的还有UDP、ICMP、ARP等等,共同构成了一个复杂但有层次的协议栈
TCP协议的全称是Transmission Control Protocol
的缩写,意思是传输控制协议
,HTTP使用TCP作为通信协议,这是因为TCP是一种可靠的协议,而可靠能保证数据不丢失。
IP协议的全称是Internet Protocol
的缩写,它主要解决的是通信双方寻址的问题。IP协议使用IP地址
来标识互联网上的每一台计算机,可以把IP地址想象成你的手机号码,你要与别人通话必须要知道他人的手机号码,计算机网络中信息交换必须先要知道对方的IP地址
- DNS
有没有想过为什么你可以输入www.baidu.com就能获取到你想要的网站?是因为计算机网络中的每个端系统都有一个IP地址存在,而把IP地址转换为便于人类记忆的协议的就是DNS 协议
DNS的全称是域名系统(Domain Name System)
,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
- URI/URL
我们可以输入www.baidu.com地址来访问百度官网,那么这个地址有什么规定么?可以随意输入么?我们输入的地址格式必须要满足URI
的规范
URI
的全称Uniform Resource Identifier
,中文名称是统一资源标识符,使用它就能够唯一地标记互联网上的资源
URL
的全称是Uniform Resource Locator
,中文名称是统一资源定位符,也就是我们俗称的网址
,实际上就是URI的一个子集
URI不仅包括URL,还包括URN(统一资源名称)
- HTTPS
HTTP一般是明文传输,很容易被攻击者窃取重要信息,鉴于此,HTTPS应运而生。HTTPS的全称为Hyper Text Transfer Protocol over SecureSocket Layer
,HTTPS和HTTP有很大的不同在于HTTPS是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS在HTTP的基础上增加了SSL层
,也就是说HTTPS = HTTP + SSL
- 资源调度:CDN会根据用户接入网络的ip寻找距离用户最优路径的服务器。调度的方式主要有DNS调度、http 302调度、使用HTTP进行的DNS调度(多用于移动端)
- 缓存策略和数据检索:CDN服务器使用高效的算法和数据结构,快速的检索资源和更新读取缓存;
- 网络优化:从OSI七层模型进行优化,达到网络优化的目的
- L1物理层:硬件设备升级提高速度
- L2数据链路层:寻找最快的网络节点,确保Lastmile尽量短
- L3路由层:路径优化,寻找两点间最优路径
- L4传输层:协议TCP优化,保持长连接、TCP快速打开
- L7应用层:静态资源压缩,请求合并