HTTP协议介绍

简介

  • HTTP协议Hyper Text Transfer Protocol(超文本传输协议),用于从万维网服务器传输超文本到本地浏览器的传 送协议。
  • HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件,图片文件, 查询结果等)的应用层协议。
  • HTTP协议工作于C/S或C/B架构。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。 Web服务器根据接收到的请求后,向客户端发送响应信息。

    URL

  • HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

  • URL是一种特殊类型的URI,全称是UniformResourceLocator(统一资源定位符),是互联网上用来标识某一处资源的 地址。
  • 举例:http://www.runoob.com/http/http‐tutorial.html http : 协议部分 www.runoob.com:域名部分或IP地址,[端口] /http/: 虚拟目录部分 http‐tutorial.html:文件

    工作流程

  • 针对Server端来说:

    • 建立连接或处理请求
    • 接收请求
    • 处理请求
    • 访问资源
    • 构建响应报文
    • 发送响应报文
    • 记录日志

      HTTP请求报文:Request

  • 格式:请求行 请求头部 空行 请求数据 四个部分组成

    • 请求行: GET(请求方法) URL(请求资源) HTTP/1.1(协议号和版本号)
    • 请求头部:

      • Host字段:请求资源的主机地址
      • User-Agent字段:浏览器标识
      • Accept: 媒体类型 —> 告诉服务端我能认识什么样的资源
      • Accept-Encoding: 支持的编码方式
      • Accept-Language: 支持使用的语言
      • Referer:指明当前资源的原始URL
      • Cache-Control:缓存控制
      • Connection: keep-alive(连接保持-tcp连接)
      • Cookie:身份标识 —> Session

        ……

        请求方法

  • GET:请求指定的页面信息

  • POST:向指定资源提交数据进行处理(表单)
  • Head: 类似GET请求,但是返回内容仅仅头部信息
  • PUT:从客户端向服务端传送的数据取代指定的文本内容
  • DELETE: 删除指定的页面信息
  • CONNECT: 预留给能够将连接改成管道方式的代理服务器
  • OPTIONS:允许客户端查看服务器性能
  • TRACE:回显服务端收到的请求,主要用于测试

    状态码

  • 1xx:指示信息-表示请求已经接受,继续处理

  • 2xx:成功-表示请求已经被成功接受,理解,并处理
  • 3xx:重定向-要完成请求必须进行更进一步的操作
  • 4xx:客户端错误 - 请求的语法存放错误
  • 5xx:服务端错误 - 服务端不能够处理请求
  • 200: OK
  • 301: 永久重定向
  • 302: 临时重定向
  • 304: 请求被重定向到本地缓存
  • 400: 客户端语法存在错误
  • 401: 客户端请求没有授权
  • 403: 客户端授权错误
  • 404: 客户端请求的资源在服务端不存在
  • 500: 服务端内部错误
  • 502: gateway bad 服务端不能处理请求
  • 503: servcie .. : 客户端请求无法处理
  • 504: gateway tiemout 服务端没能接收到请求

    HTTP协议版本

  • HTTP/0.9:仅支持GET方法,仅能访问HTML格式的资源

  • HTTP/1.0:增加POST和HEAD方法,MIME支持多种数据格式,开始支持Cache
  • HTTP/1.1:支持持久连接(保持连接),一个TCP连接允许多个请求,新增PUT、PATCH、DELETE等方法
  • HTTP/2.0:性能大幅提升,新的二进制格式,多路复用,header压缩,服务端推送。

一个事务没有记忆能力;浏览器发送一个请求给服务端,服务端处理完之后返回响应消息;同一个浏览器再发送一个请求给服务端,
服务端依然能够处理请求并返回响应消息,但是服务端不知道是同一个浏览器发送的

针对“无状态”的解决方案: Cookie Session (会话保持技术)
- 区别:
1. Cookie存储在浏览器中而Session是存储在服务器()
2. seesion能够存储更多的数据,安全性更好
3. Cookie减轻服务端压力,信息不安全
Session技术其实是依赖于cookie技术
name=zhsang password=123456 -> 浏览器上
seesionID=xxxxx {name=zhsang,password=123456} -> 服务端上
浏览器上:seesionID=xxxxx

网站技术的发展情况

image.png

安装部署IIS

day3 - 图2

优化方案

image.png