HTTP和HTTPS协议

一、HTTP协议

1、什么是http协议
HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
2、http的应用
通常应用在B/S架构(浏览器 - 服务器),B--》browser
3、什么是URL
URL即统一资源定位符,通常由协议、主机和端口(默认80)以及文件名三部分构成:
如:
	http://www.baidu.com/news/index.html
	http://	-->协议
	www.baidu.com/	-->主机和端口,这里用的是域名
	news/index.html  -->文件名及路径
4、http的作用
将网页文件(.html文件、图片、音视频等文件)从服务器(nginx等)里传输到客户机里(浏览器)
5、http的工作原理
假设用户访问的是http://www.baidu.com/index.html
 1、分析url
 2、解析域名的ip地址
    2.1 先看缓存 (浏览器www.baidu.com  112.233.223.223-- linux的缓存nscd
    2.2 再看/etc/hosts 文件里面有没有记录
    2.3 再看/etc/resolv.conf里的本地域名服务器有没有解析  
    		本地域名服务器记录的解析如果有就会直接返回,如果没有解析,就向DNS服务器发起请求解析,得到ip
 3、浏览器和服务器进行tcp三次握手,建立TCP连接
 4、浏览器请求百度页面
 5、服务器收到请求,然后返回百度的html页面文档给浏览器
 6、浏览器收到页面内容之后,运行展示在窗口上
 7、释放tcp连接,看一下是客户端主动断开还是服务器到了时间后主动断开

6、http协议的特点
1、简单快速
2、灵活
3、无状态
7、无状态性
1.什么是无状态性:每次请求都是独立的,上一次请求和下一次请求互不相干。
 	 比如,你登录了某个网站,下一次请求理论上来说就不需要再登录了。http是无状态的,它不能知道你上一次请求已经登录过了。所以下一次请求还需要重新登陆。
2.如何解决:
	引入了cookie和session
		session存储在服务器端的缓存里,每次请求就会产生一个session_id,并将session_id发送给客户,客户端对应有一个cookie,cookie存储在客户端的缓存里,cookie里面存储了一个session_id,所以每次请求的时候会携带者cookie,然后每次请求的时候,服务器端会查看cookie里的session_id,如果在session里面能找到,就不需要重新登陆了
8、持久性连接和非持久性连接
1.非持久性连接:
	即浏览器每次请求一个web文档,就创建一个新的连接,当文档传输完毕后,连接即立刻释放。当请求其他文档时,又要重新创建新的连接,效率比较低
2.持久性连接:
	即在一个连接中,可以进行多次文档的请求和响应。服务器在发送响应以后,不立即释放连接,浏览器可以使用该连接继续请求其他的文档,效率比较高
9、http的版本
10.9版本   GET方法
21.0       POST HEAD 方法
31.1       PUT、OPTIONS、DELETE等方法,引用了持久连接,一个tcp连接里处理多个http请求
42.0       效率快,吞吐快	谷歌:基于2015 -- SPDY协议发布的

10、http的请求报文

在这里插入图片描述

请求报文里有哪些东西:
	1.请求方法
	2.host:表示访问的那个网址
	3.user-agent:使用的用户代理--》浏览器
	4.connection:查看连接是否关闭
	5.cookie:保存session_id,下次访问不要登陆验证
11、请求报文里的方法
1.常见方法
	GET     请求获取  浏览器默认参数只能放在url中 /sc?username=root&passwd=123456,不会携带body数据
	POST    新增   可以携带body数据
	PUT     修改
	DELETE  删除
	CONNECT 连接
	OPTIONS 查看服务器端的参数,比如支持哪些方法
	HEAD  请求头
2.get和post的区别
	2.1 url形式:
		get将数据携带在url里面,post将数据携带在body里面
	2.2 传输数据的大小:
		因为url的参数是有限的,所以get请求的数据也是有限的,而post请求的数据就可以是很大的
	2.3 安全性:
		因为get是将数据携带在url中,别人看到到,而post是携带在body里面,所以post相对更安全
12、响应报文

在这里插入图片描述

响应报文里面有哪些东西:
	1.http的版本
	2.状态码
	3.连接状态
	4.日期
	5.last-Modified:服务器里的数据是否发生改变
	6.server:服务器的版本
13、响应报文里的状态码

在这里插入图片描述

常见的状态码
	200	  请求成功
    301   永久重定向
    302   临时重定向
    304   not modified  浏览器缓存里的内容和nginx服务器里的内容是一样的
    400   客户端语法错误
    401   用户验证失败
    403   用户禁止访问
    404   url找不到,not find
    405   方法不被允许(方法错误)
    499    client has closed connection(客户端关闭连接) 
    500    服务器内部错误,无法完成请求
    501    服务器不支持请求的功能,无法完成请求
    502    网关故障--》负载均衡是好的,但是内部的服务器挂了,所以是负载均衡器联系不上后面的real server
    503    服务临时不可用,资源限制或者过载导致的;限制了某个时间段只能访问多少次,访问次数,并发数
    504    后端服务器响应超时了
14、http传输面临的风险
1) 窃听风险:黑客可以获知通信内容。
(2) 篡改风险:黑客可以修改通信内容。
(3) 冒充风险:黑客可以冒充他人身份参与通信。

二、https协议

1、什么是https
1.HTTPS 相比 HTTP 多了一层 SSL/TLS
	SSL(Secure Socket Layer,安全套接字层):SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
	TLS(Transport Layer Security,传输层安全):其前身是 SSL,相当于SSL的升级版

2、对称加密与非对称加密
1.对称加密:通信双方使用同一个密钥进行加密
	特点:速度快,但是安全性得不到保障
2.非对称加密:通信双方利用不同的密钥进行加密,有公钥和密钥之分,公钥用来加密可以对外公开,密钥用来解密,只能自己知道;
	特点:相对安全,但是计算量大	
3、https建立连接的过程

在这里插入图片描述

1.客户端向服务器端发起请求
2.服务器端将带有数字证书的公钥发送给客户端,客户端验证证书是否有效,无效则停止请求,有效则生成一个client key(相当于对称加密的密钥),再用服务器发过来带有数字证书的的公钥将这个client key进行一个非对称加密
3.将加密后的client key传输给服务器,因为加密client key的公钥是服务器发过去的,所以服务器可以用自己的私钥进行解密,然后得到客户端随机生成的client key;
4.将客户端请求的数据,用客户端随机生成的client key进行一个对称加密,客户端直接使用client key进行解密,就可以得到这个请求的数据了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值