美文网首页
HTTP协议

HTTP协议

作者: 清水秋香 | 来源:发表于2020-03-02 16:43 被阅读0次
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

相关文章

网友评论

      本文标题:HTTP协议

      本文链接:https://www.haomeiwen.com/subject/wofvkhtx.html