关于HTTP和HTTPS

一. 计算机网络模型

1 五层模型

物理层,数据链路层,网络层,传输层,(会话层,表示层),应用层。

七层协议作用传输数据协议
物理层底层数据传输比特流
数据链路层定义数据的基本格式,如何传输,如何标识数据帧
网络层定义IP编址,定义路由功能数据报IP/ICMP
传输层端到端传输数据的基本功能报文TCP/UDP
会话层控制应用程序之间会话能力
表示层数据格式标识,基本压缩加密功能
应用层各种应用软件,包括 Web 应用不确定HTTP,FTP
数据链路层

a.封装成帧:实现可靠传输(在一段数据的前后分别添加首部和尾部

b.透明传输:无论是什么报文都可以传输

c.差错控制:奇偶校验法和模二法

奇偶校验法:判断1出现的次数奇偶
模二法:生成多项式,模二除法得到多项式余数,填充0

d.常见协议:以太网协议

二. TCP/UDP区别

区别TCPUDP
连接性面向链接无连接
可靠性可靠不可靠
报文字节流报文
传输速度
连接对象一对一一对一,一对多,多对多
应用http协议DNS寻址

TCP保证可靠传输:

三次握手
拥塞窗口控制(保证接收方来得及接受)
慢启动算法(指数幂增长,到达拥塞窗口一半)
拥塞避免算法(慢启动到达拥塞窗口一半后开始慢慢增加)
超时重传

三. 三握四挥

三次握手:

1.客户端发送SYN(syn=x)包,等待服务器确认
2.服务端接受后,确认客户端SYN包,同时发送SYN包(syn=y和ack=x+1)
3.客户端收到后,确认服务端SYN包,发送确认包(ack=y+1),建立链接

为什么是三次不是四次或两次?

四次挥手:

1.客户端发送SYN包(syn=x),等待服务端确认
2.服务端接受后,发送ACK给客户端(ack=x+1),(期间可以发送数据)
3.服务端发送FIN和SYN包(syn=y),通知客户端不会在发数据并且请求断开链接
4.客户端接受,发送ACK包(ack=y+1),断开链接

四 .HTTP

1.http组成

起始行:方法+路径+http版本
头部:头部字段信息
空行:分开头部和主体
主体:数据

http常用方法:get,post,put,delete

2.http详解

2.1 http常见头部字段
头部字段作用
Connection否可以处理持久 HTTP 连接
Cookie浏览器的 cookies
HostURL 中的主机和端口
If-Modified-Since在指定的日期后已更改时
Referer预防csrf攻击
content-type信息类型
expires判断强缓存
cache-control判断强缓存
content-type类型解释
application/x-www-form-urlencoded提交原生form表单
multipart/form-datapost上传提交表单
application/jsonJSON 字符串
2.2 http常见响应码
响应码意义常见响应码
1XX临时响应100:请求者继续请求post中header
2XX成功200:成功
204:成功但无内容
3XX重定向301:永久重定向
302:临时重定向
304:未修改(HTTP缓存)
4XX请求错误400:错误请求
401:请求要求身份验证
404:服务器找不到请求页面
5XX服务器错误500:服务器内部错误
2.3 http中get和post区别
区别getpost
缓存缓存不缓存
编码URL编码无限制
参数明文传输请求体传输
TCP传一个报文分两个数据包传输

3.HTTP版本

http1.0
无连接:浏览器每次请求都需要建立tcp连接

无状态:服务器不跟踪不记录请求过的状态
http1.1
长连接:新增Connection字段,可以设置keep-alive值保持连接不断开

缓存处理:新增字段cache-control,检查读取缓存

断点传输:在上传/下载资源时,如果资源过大,将其分割为多个部分,分别上传/下载,如果遇到网络故障,可以从已经上传/下载好的地方继续请求,不用从头开始,提高效率

节约带宽:响应式数据排除
http2.0
多路复用:共享TCP链接的基础上同时发送请求和响应

头部压缩:客户端服务器分别存储头部信息,减少服务器压力

服务器推送:服务器可以额外的向客户端推送资源,而无需客户端明确的请求
http3.0

基于udp,音视频通话

4.HTTP缓存

4.1 Cache-Control与Expires

指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据,还是重新发请求到服务器取数据,Cache-Control优先级高于Expires

Cache-Control
no-cache:不直接使用缓存,根据是否过期来使用缓存
no-store:不使用缓存,每次下载新资源
max-age:缓存时长
public/private:是否只能被单个用户使用,默认为private
must-revalidate:每次访问需要缓存校验

4.2 Etag & If-None-Match

If-Not-Match与ETag生成一段hash字符串,标识资源的状态,由服务端产生。浏览器会将这串字符串传回服务器,验证资源是否已经修改
Etag是服务器端的唯一标识符

4.3 Last-modified & If-modified-since

服务器端文件的最后修改时间

判断Cache-Control与Expires,在缓存数据未失效的情况下,会命中强缓存,直接使用浏览器的缓存数据,不会再向服务器发送任何请求,http状态码200,如果没有命中强缓存,就会进行协商缓存,对响应头ETag和请求头if-none-match进行校验后,如果不一致,请求头中If-Not-Match和If-Modified-Since进行比较如果时间差不大,返回304状态码,走协商缓存缓存,否则直接返回数据(ETag是服务器端唯一标识,Last-Modified最后修改时间)

5.HTTPS加密

HTTPS

https=http+ssl

img

SSL加密过程

对称加密:有一个密钥,它可以加密一段信息,也可以对加密后的信息进行解密
非对称加密:有两把密钥,通常一把叫做公钥、一把叫私钥,用公钥加密的内容必须用私钥才能解开,同样,私钥加密的内容只有公钥能解开

情况1:
服务器端存在公钥A、私钥A,浏览器存在公钥B、私钥B。互相传输进行解密
情况2:
浏览器接受服务器公钥A,浏览器用公钥A加密秘钥X传服务端,服务器端用公钥A解密
偷换公钥A为公钥B(狸猫换太子)

HTTPS工作流程

客户端A访问服务器B,A生成随机数1,SSL版本加密算法等信息传递给服务器B

服务器B知道后确认双方加密算法,生成随机数2,并将随机数2和证书一同返回给客户端A

A得到证书后校验CA证书有效性,生成随机数3,把证书中的公钥加密随机数3传给服务器B

B得到加密随机数3,用私钥解密

客户端A和服务器B都用随机数1,2,3生成一个对话秘钥,之后通信用秘钥加密进行会话

img

HTTPS缺点

证书的选择、购买到部署,传统的模式下都会比较耗时耗力

与纯文本通信相比,加密通信会消耗更多的CPU及内存资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值