什么是http协议
http是一个计算机世界里专门在两点之前传输文字、图片、音频、视频等超文本数据的约定和规范。
TCP/IP网络分层
http | application layer(应用层) |
---|---|
TCP | transport layer(传输层) |
IP | internet layer(网际层) |
MAC | link layer(连接层) |
TCP和UDP区别
TCP | UDP |
---|---|
面向连接 | 无连接 |
面向字节流 | 面向数据报 |
有状态 | 无状态 |
保证可靠交付 | 不保证可靠交付 |
具备拥塞控制 | 不具备拥塞控制 |
点对点传播 | 广播、多播 |
有序 | 无序 |
TCP的三次握手和四次挥手
三次握手
1.客户端主动发送SYN | Client -> SYN -> Server |
---|---|
2.服务端收到并返回SYN以及ACK客户端的SYN | Server -> SYN/ACK -> Client |
3.客户端收到服务端的SYN和ACK后,发送ACK的ACK给服务端,服务端收到后连接建立 | Client -> ACK -> Server |
四次挥手
1.客户端发送FIN给服务端 | Client -> FIN -> Server |
---|---|
2.服务端收到后发送ACK给客户端你 | Server -> ACK -> Client |
3.服务端发送FIN给客户端 | Server -> FIN -> Client |
4.客户端收到后,发送ACK的ACK给服务端,服务端关闭,客户端等待2MSL后关闭 | Client -> ACK -> Server -> CLOSEDClient -> 2MSL时间 -> CLOSED |
HTTP的请求方法
GET 获取资源(幂等)
POST 新增资源
HEAD 获取HEAD元信息(幂等)
PUT 更新资源(带条件时幂等)
DELETE 删除资源(幂等)
CONNECT建立Tunnel隧道
OPTIONS 获取服务器支持访问资源的方法 (幂等)
TRACE 回显服务器收到的请求,可以定位问题(有安全风险)
HTTPS
HTTPS是在HTTP和TCP协议中间加入了SSL/TLS安全套接层。
结合非对称加密和对称加密的各自优点,配合证书。及保证了安全性,也保证了传输效率。
TLS1.2实现原理如下:
DNS
DNS(Domain Name System)是互联网中的重要基础设施,负责对域名的解析工作,为了保证高可用、高并发和分布式,他设计成了树状的层次结构。
由根DNS服务器、顶级域名DNS服务器、权威域名服务器组成
解析顺序:浏览器缓存、操作系统缓存、本地DNS缓存(/etc/hosts)逐级查找,然后从本地DNS服务器、根DNS、顶级DNS 、权威DNS层层递归查询。
CDN
CDN(Content Delivery Network)内容分发网络
为了突破显示生活中的光速、传输距离等物理限制,CDN投入大量资金,在全球范围内各大枢纽城市建立机房,部署大量高存储搞宽带的节点,构建跨运营商、跨地域的专用高速传输网络。
其中分为中心节点、区域节点、边缘节点等。在用户接入网络后,首先通过全局复杂均衡(Global Server Load Balance)简称GSLB算法负责调度,找到离用户最合适的节点。然后通过HTTP缓存代理技术进行缓存,缓存命中就返回给用户,否则回源站去取。CDN擅长缓存静态资源(图片、音频等),当然也支持动态内容缓存。
WebSocket
WebSocket是一种基于TCP的轻量级网络通信协议。WebSocket针对的是“请求-应答”的通信模式。
“请求-应答”是半双工的通信模式,不具备服务器推送能力,限制了HTTP在实时通信领域的发展。虽然可以用轮询来不停的向服务器发送HTTP请求,但是,反复的无效请求占用了大量的带宽和CPU资源。So,WebSocket应运而生。
WebSocket是一种双全工通信协议,具备服务端主动推动的功能。本质上是TCP做了一层包装,让他可以运行在浏览器环境中。
webpack的热更新就是利用了这个协议。
HTTP缓存策略
强缓存 | 协商缓存 | ||
---|---|---|---|
expires(过期时间) | max-age(缓存时间) | last-modified(上次更改时间) | Etag(标识,需要预先在服务端的响应报文设置) |
HTTP状态码
1XX 请求已经接收到,需要进一步处理才能完成,HTTP/1.0不支持
100 Continue :上传文件前使用
101 Switch Protocol :协议升级使用
102 Processing :服务器正在处理,无响应可用
2XX 请求成功
200 OK :成功返回响应
201 Created :有新资源在服务端被成功创建
202 Accepted :服务器接受并开始处理请求,但请求未处理完成
206 Partial Content : 使用range协议时返回部分响应内容时的响应码
3XX 重定向
301: 永久重定向、
302:临时重定向
300:是一个特殊的重定向状态码,会返回一个有多个链接选项的页面,由用户自行选择
选择304:是一个特殊的重定向状态码,服务端验证过期缓存有效后,要求客户端使用该缓存
4XX 客户端发现错误
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
5XX 服务器端出现错误
500 Internal Server Error
:服务器内部错误,且不属于以下错误类型502 Bad Gateway
:代理服务器无法获取到合法响应503 Service Unavailable
:服务器资源尚未准备好处理当前请求505 HTTP Version Not Supported
:请求使用的 HTTP 协议版本不支持
参考
https://httpstatuses.com/
https://mp.weixin.qq.com/s/Qhn4qhGYHybfSy22wJZGmQ