HTTP协议

151 阅读5分钟

准备工作

1-参考资料

HTTP协议

1-基础

1-1 概述

  1. URL(Uniform Resource Locator)统一资源定位符
  • 标准格式:协议类型:[//服务器地址[:端口号]][/资源层级 UNIX 文件路径]文件名[?查询字符串][#片段标识符]
  • 完整格式:协议类型:[//[访问资源需要的凭证信息@]服务器地址[:端口号]][/资源层级 UNIX 文件路径]文件名[?查询字符串][#片段标识符]
  1. HTTP协议

1-2 HTTP和HTTPS

2-HTTP传输

2-1 传输数据

  1. 请求Requet:
  • 定义:浏览器向服务器发送的请求,包含请求的类型、请求的数据、浏览器的信息(语言、浏览器版本等)
  • 请求消息:
    • 定义:客户端向服务器发送的请求消息
    • 格式:65bf3cd8777db40000000484.png
    • 请求行:用来说明请求类型,要访问的资源以及所使用的HTTP版本。GET说明请求类型为GET , /hello.txt为要访问的资源,其次是HTTP协议1.1版本。
    • 请求方法:(查改增删)GET获取;POST提交;PUT传输;DELETE删除;
      • HTTP1.0定义了三种: GET, POST 和 HEAD方法。
      • HTTP1.1新增了五种:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
      • GET和POST的区别 => GET和POST的区别【面试】
        • 侧重:get重点在从服务器上获取资源,post重点在向服务器发送数据;
        • get传输数据是【通过URL】请求,以键值对的形式置于URL后,并用"?“连接,多个请求数据间用”&"连接,这个过程用户是可见的,get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;Get传输的数据量小,因为受URL长度限制,但效率较高;
        • post传输数据通过Http的【post机制】,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的,post较get安全性较高;Post可以传输大量数据,所以上传文件时只能用Post方式;
    • 请求头:紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息,从第二行起为请求头部,HOST将指出请求的目的地.User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送等等
    • 空行:请求头部后面的空行是必须的,即使第四部分的请求数据为空,也必须有空行。
    • 请求体:可以添加任意的其他数据,可以为空。
  1. 响应Response
  • 定义:服务器对浏览器请求的返回的数据,包含是否成功、状态码等。
  • 响应消息
    • 定义:服务器端根据客户端的请求消息,返回给客户端的响应消息
    • 格式:65bf3c06777db4000000044b.png
      • 状态行:由HTTP协议版本号, 状态码, 状态消息 三部分组成。第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
      • 状态码 => 常见状态码【面试】
        • 100:指示信息–表示请求已接收,继续处理
        • 2xx:成功–表示请求已被成功接收、理解、接受
        • 3xx:重定向–要完成请求必须进行更进一步的操作
        • 4xx:客户端错误–请求有语法错误或请求无法实现
        • 5xx:服务器端错误–服务器未能实现合法的请求
      • 消息报头:用来说明客户端要使用的一些附加信息,第二行和第三行为消息报头,Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8
      • 空行:消息报头后面的空行是必须的
      • 响应正文:服务器返回给客户端的文本信息。空行后面的html部分为响应正文。

2-2 HTTP通信

3-缓存

  1. Cookie
  • 由来:HTTP 是无状态协议,它不能以状态来区分和管理请求和响应,即服务器不能从网络连接上得知客户身份,所以给用户一个通行证Cookie,服务器可以确认身份
  • 定义:Cookie是服务器在本地机器上存储的一小段文本,并随着每次请求发送到服务器。
  • 工作流程:
    • 服务器→set-Cookie通知→客户端:根据响应报文里的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。
    • 客户端→请求报文+Cookie→服务器:当下客户端再向服务端发起请求时,客户端会自动在请求报文中加入Cookie值之后发送出去。服务端发现客户端发送过来的Cookie后,会检查是那个客户端发送过来的请求,然后对服务器上的记录,最后得到了之前的状态信息。
  1. Session

  2. Cookie和Session的区别 => Cookie和Session的区别【面试】

  • 位置:cookie数据存放在客户的浏览器(客户端)上,session数据放在服务器上,但是服务端的session的实现对客户端的cookie有依赖关系的;
  • 安全:cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗,考虑到安全应当使用session;
  • 性能:session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用Cookie
  • 大小:单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的Cookie不能超过3K;

TCP/IP协议