http协议的基础知识

一、URL

1. URL与URI
 URL - 统一资源定位符
 URI - 统一资源标识符

 URL与URI的区别
 所有的URL都是URI,但URI不一定是URL
2、完整的URL
1) 完整的url具有哪些元素

    网络协议://IP地址:端口号/路径;参数?查询数据#锚点

    网络协议 - 
    IP地址 - 每个电脑都有0.0.0.0每个
    端口号 - 电脑开放给外部电脑访问接口
    路径 - 相对路径和绝对路径
    参数 - 某些方案会使用参数来指定输入参数
    查询地址 - 
      key=value&key=value
    锚点 -

2) 一般使用时:
    http://www.baidu.com/news
    http://137.0.0.1:8080?key=value&
    http://localhost:80#mylink

二、Http协议

1. 网络协议
  客户端与服务端之间的协议
2. 主流协议
   http、socket、ftp、pop3
3. http协议
   1)多用与b/s架构

   2)问题

      短连接:每次客户端与服务端交互时,先建立连接,交互完毕后,关闭连接

      无状态:服务端只能记得住当次请求状态

   3)http:1.0 - 目前主流版本
      http:1.1 - 较新版本(向下兼容)
      http:2.0 - 最新版本

三、http请求协议

1. 客户端发送一个请求,应该有如下三个部分:
 请求行: 请求方法、请求url 状态码、(http协议版本)

 请求头部: 说明服务器要使用的附加信息

 请求主体: 提交给服务器的请求数据
2. HTTP客户端请求内容详解
  1)请求行 - 请求的信息

      请求类型 - get、post/put

      请求地址 

         如果是get请求,参数应该拼到url的后面url?key=value,但请求体为空

         如果是post请求,url后面不拼参数,参数放在请求体中
         

      状态码 - 服务器端的状态
    
  2)请求头 - 反映给服务端的信息

      格式为 key:value,key:value,...
           
      accept - 表示浏览器可接受的MIME类型
      accept-Encoding - 浏览器能够进行解码的数据编码方式

      accept-language - 表示服务端接受的语言

        zh-cn:简体中文
        zh-tw:繁体中文
        zh - 中文
        us -英文

      connection - 表示当前链接状态

        keep-alive - 保持连接

      host - 请求的服务器网址;

      referer - 表示当前的请求来源

        实现防盗链接

      user-agent 获取到用户浏览器信息

      cache-control -缓存控制
          
        max-age 设置最大活动周期,设置缓存保存的最大时间的单位为秒,为0代表不缓存

      cookie - 将cookie自动携带到请求头

      content-type:互联网媒体类型;使用post请求必须设置这个属性

          也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。

          <form>元素提交时默认的类型
         一般文件上传时默认为application/x-www.form-urlencoded

      Content-Length:请求内容的长度

         对于POST请求来说Content-Length必须出现


  3)请求体 - 存放请求参数

      如果为post请求,有值,如果为get请求为空

四、http响应协议

1. 服务端给客户端响应信息,应该有如下三部分
  响应行:协议版本 状态码 原因短语

  响应头部:

  响应主题: 返回给客户端的响应数据,可能是字符数据,也可能是字节数据
2. HTTP服务端响应内容详解
   1)响应行

       状态码
       协议版本

   2)响应头
     
       Allow:服务器支持哪些请求方法

          GET、POST

       Content-Encoding 文档的编码(Encode)

       Cache-Control: 告诉客户端,服务端的缓存配置

       Connection - 表示当前的连接状态

         keep-alive 表示保持连接

       content-length 响应数据的长度(大小)

       content-type - 响应数据的mime类型

          一般情况下:text/html
          
       Date - 当前响应的日期时间

       keep-alive 设置保持连接的超时和最大存活时间
          timeout=5 max=99

       server - 服务器端的信息

   3)响应体

       服务器返回给客户端的数据主体

五、扩展内容

1. 请求类型
     get/post/head/put/delete/options/trace
2. 标准API - 标准的请求方式
      get - 获取数据
      post - 修改数据
      put - 新增数据
      delete - 删除数据
3. 状态码
      1XX - 服务器的信息
      2XX - 表示请求成功
        200:请求成功
        201:成功创建连接
        202:接受请求            
      3XX - 表示重定向
        302:表示重定向
        304:表示服务端资源没有变化,访问缓存
          问题 - 这次请求没有真正低访问服务器端
        305:使用代理
      4XX - 客户端错误
        400:错误的请求
        404:网页找不到
        403:拒绝访问
        405:请求类型不允许
      5XX - 服务端错误
        500:服务端错误
        502:路径错误
        504:请求超时
        505:http版本不支持
4. MIME类型 - 文件类型
     MIME类型是如何定义的

        //定义MIME类型
        <mime-mapping>
            //文件的扩展名
            <extension>jpg</extension>
            //对应的MIME类型
            <mime-type>image/jpeg</mime-type>
         </mime-mapping>

       常见的MIME类型

        html - text/html
        htm  - text/html
        css  - text/css
        js   - text/javascript
        json - application/json
        jpg  - image/jpeg
        text - text/plain
5. 请求参数
     1)get请求类型

         将请求数据 - url?key=value(浏览器地址)

         安全性低

         请求地址的长度是有限制的

         请求数据中包含中文的话,需要转码

     2)post请求类型
     
     参数在请求体中,相对而言较安全

         浏览器地址栏url,不包含请求类型

         安全性相对比较高

         对请求数据的长度没有要求

         请求数据中包含中文的话,可以不转码,对中文的处理相对比较好
6. 控制HTTP头部方法
    可以配置每个HTML文件的HTTP-EQUIV标签控制缓存

      <meta http-equiv="Cache-Control" content="no-cache">


    在PHP页面中控制响应头

       header("Content-Type: image/jpeg");

六、缓存工作原理

  1. 客户端可以自动保存已经访问过的文档的副本,这些副本就成为“文档缓存”

  2. 当客户端再次发送针对同一个URL的请求时,如果本地有“已缓存的副本”,就可以直接从本地存储设备而不是远程服务器提取该文档了。

  3. 数据缓存有下列优点

    减少了冗余的数据传输,节省客户端流量费用
    缓解服务器带宽瓶颈的问题,服务器可以节省出更多的带宽
    降低了对服务器的资源消耗和运行要求
    降低了由于远距离而造成的加载延时

缓存逻辑:
  1.发送请求

  2.判断是否有缓存

  3.有缓存,判断是否过期,如果过期,不用

  4.如果不过期,跟服务器进行验证,判断是否最新的数据,如果不是,需要更新缓存,更新过以后从缓存获取

七、http基本优化

网站性能优化最主要的就是要减少HTTP请求及每次响应中内容的长度。可以从连接过程中的下列方面加以考虑:

1、域名解析
尽可能减少域名解析次数——减少跨站外部资源的引用
2、创建连接
努力减少连接创建次数——使用Keep-Alive避免重复连接
3、发送请求
尽力减少请求次数——合理设置Expires时间、资源合并
4、等待响应
提高服务器端运行速度——提高数据运算及查询速度
5、接收响应
尽可能减小响应数据长度——启用压缩

八、安全的HTTP协议

  1. HTTP协议本质上属于“明文传输”,可能被窃听和篡改,政府、银行等机密应用需要需要“安全版本的HTTP”:http协议默认端口80

  2. HTTPS协议将消息发送给TCP层之前,先交给了一个安全层(由SSL或TLS协议实现),安全层负责对消息进行加密和解密操作。https协议默认端口443
    应用层和传输层之间有一个安全层

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • http协议有http0.9,http1.0,http1.1和http2三个版本,但是现在浏览器使用的是htt...
    一现_阅读 5,910评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,077评论 19 139
  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 12,710评论 6 152
  • 前言:最近发现自己在网络相关这一块基础很是欠缺,所以准备花时间了解一下,本文主要是讲http协议的一些基础,和一些...
    justCode_阅读 6,281评论 0 23
  • 本文整理自MIN飞翔博客 [1] 1. 概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或...
    HoyaWhite阅读 7,602评论 2 20

友情链接更多精彩内容