HTTP

2020-05-22 11:08:08 浏览数 (1)

什么是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

0 人点赞