HTTP协议
网络分层模型
- osi七层模型,国际标准组织提出的网络七层模型标准,只是标准,而非实现
-
TCP/IP 四层模型,将七层模型简化为四层模型,是一个实现的应用模型
分层模型.png
应用层:采用何种协议
表示层:数据格式和标准的格式转换--图片、文字、声音
会话层:何时建立连接、连接保持多久
传输层:管理2个节点之间的数据传输。负责可靠传输。
网络层:地址地址管理和路由选择,经过那个路由更近更快的传递到目标地址。tracerd -d + ip/域名
数据链路层:负责数据帧和比特流之间的转换。
物理层:比特流和电子信号之间的切换,0和1代表电压的高低,灯光的亮灭
传输.png - 什么是HTTP协议
中文名:超文本传输协议
作用是:规定服务器和浏览器信息传递规范
HTTP协议是一个简单的请求 --》响应协议。换句话说:一个请求只能有一个响应,响应是被动的,不能主动发起
他是建立在TCP协议之上(是由TCP协议来负责数据传输)
HTTP默认的端口为80,HTTPS默认的端口是443
HTTP协议版本有:HTTP0.9、HTTP1.0、HTTP1.1,HTTP1.2、HTTP2.0,目前以HTTP1.1 为主 - HTTP协议主要特点
HTTP协议口诀:无连接、无状态、简单快速灵活
无连接:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。
无状态:协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
简单快速:客户向服务器请求服务时,只需传送请求的方法和路径,由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
领过:HTTP允许传输任意类型的数据对象,传输的类型有Content-Type加以标记
HTTP请求
-
请求行
1⃣️请求方法
GET:请求服务器特定的资源
POST:向指定资源提交数据进行处理请求(表单提交)
PUT:向指定资源位置更新内容
DELETE:请求删除服务器上面特定的资源
其他
2⃣️路径
3⃣️协议类型和版本 -
请求头
content-type:告诉服务器内容的类型
accept:客户端可识别的内容类型列表
accept-enconding:用户指定可接受的内容编码
accept-language:用于指定可接收的语言
user-agent:告诉服务器浏览器、操作系统等信息
host:请求主机名
cookie:浏览器储存的cookie信息
等 -
空行
必须的,表示请求头结束 -
请求正文(可选)post方式请求用,适用于需要客户填写表单的场合
注:1、2、3是必须的。期中2中必须有Host,其他根据需求。
请求消息实体.png -
最常用的请求方法
GET方法:
GET方法提交数据不安全,数据置于请求行,浏览器地址栏可见;
GET方法URL长度每个浏览器限制不同,最好在2000字符以内
GET方法速度快
默认的请求方法,不需要提交大量数据,无敏感、保密数据时使用。
POST方法:
POST方法提交数据安全,数据置于消息主体内,浏览器地址栏不可见
POST方法提交的数据大小没有限制
POST方法速度慢
需要提交大量数据、有敏感、保密数据时使用
HTTP响应
- 状态行
协议类型:HTTP HTTPS
状态码:1xx:信息性,2xx:成功性,3xx重定向错误,4xx:客户端错误,5xx:服务器错误
状态描述 - 响应头:
content-type:告诉浏览器发送的内容类型
server:服务器信息
content-Length :内容长度
date:日期信息
connection:TCP连接信息 - 空行:
必须的,表示请求头结束 -
响应正文:
服务器返回的html页面或者json数据
响应消息实例.png - HTTP响应状态码(常见)
200 客户端请求成功
301 永久性重定向
302 临时性重定向
403 服务器收到请求,但拒绝提供服务。
404 请求的资源不存在
500 服务器发生不可预期的错误。 - 请求/响应头中,重要的参数
一、Content-Type参数
Content-Type,叫:是Internet Media Type,互联网媒体类型。存在于请求中或响应中:
如果出现在请求中,则表示:告诉服务端客户端实际发送的数据类型。
如果出现在响应中,则表示:告诉客户端服务端实际发送的数据类型。
在【请求】中,常见的数据类型有:
application/x-www-form-urlencoded-----> 以“键-值”对的方式组织的数据
multipart/form-data-----> 一般需要上传文件的表单则用该类型
application/json -----> JSON 字符串格式提交数据
最好能用postman 配合 fiddler 抓包,对比以上三种数据格式,在请求包中的组织方式。
二、Cookie参数
Cookie参数,也是一个很重要的参数,存在于请求或响应中。
源头在服务端,服务端向客户端设置Cookie后,浏览器会自动把Cookie添加到每次请求的请求头中。一般用在用户登录或记住用户名等地方。
关于HTTPS
HTTP请求都是明文传输的,所谓的明文指的是没有经过加密的信息,如果HTTP请求被黑客拦截,并且里面含有银行卡密码等敏感数据的话,会非常危险。为了解决这个问题,Netscape 公司制定了HTTPS协议,HTTPS可以将数据加密传输,也就是传输的是密文,即便黑客在传输过程中拦截到数据也无法破译,这就保证了网络通信的安全。
- 一、密码学基础(拓展知识)
明文:原始数据
密码:明文被算法加密,变为密码。密文是可以被解密的
密钥:解开密文的钥匙。分为对称密钥和非对称密钥
对称加密:使用同一个密钥进行加密和解密。特点是加密解密速度快
明文+私钥=密文
密文+私钥=明文
非对称加密:使用公钥加密,私钥解密。特点是解密速度慢
明文+公钥=密文
密文+私钥=明文
-
二、HTTPS数据传输:
需求:
1、客户端要把敏感数据发给服务器端,且不能被别人破译,怎么办?
2、服务器端也要把敏感数据发给客户端,且不能被别人破译,怎么办?
解决方法:
服务器端配置一对非对称的密钥:公钥(仅能加密)和私钥(仅能解密)
公钥可以给任何客户端,客户端加密后的数据,只有服务器能解密
私钥留给自己,打死都不外借,只用来解密公钥加密过的数据
非对称密钥加密解密速度慢,不能多用
客户端买了2把对称的钥匙,一把留给自己从不外借,一把用公钥加密后,寄给服务端
服务端拿到经过公钥加密后的客户端密钥,用它的私钥解密,
最终服务端安全的得到了客户端对称的钥匙
客户端和服务端需要传输数据时,都采用客户端密钥,进行对称加密进行数据传输
终于客户端和服务端可以愉快的聊天了 -
HTTPS协议主要特点
HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费
HTTP信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议
HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
网友评论