Http协议概述--请求响应模型

Http--Hyper Text Transfer Protocol 超文本传输协议

传输协议:定义了客户端和服务器端通信时,发送数据的格式
Http协议的特点
  • 基于TCP/IP的高级协议,默认端口是80
  • 基于请求/响应模型的:一次请求对应一次响应
  • 无状态的:每次请求之间相互独立,不能交互数据
Http协议的历史版本
  • 1.0版本
    每次请求响应之后都会断开连接,下一次请求响应又会建立新的连接,即每次请求响应都会建立新的连接
    缺点:连接会被多次建立和多次丢弃掉,影响传输速度,消耗资源
  • 1.1版本
    在一次请求响应之后,连接不会立刻断开,而是会等待一定的时间,如果在这一定时间内,还有其他请求,就会默认使用该连接,而不去建立新的连接,这样就实现了连接的复用

上面说了,Http定义了客户端和服务器通信时传输数据的格式,而传输数据分为两种:
客户端向服务器传输数据: 请求消息数据
服务器向客户端传输数据: 相应消息数据

1、Http请求消息数据格式
  • 请求行:请求方式 请求url 请求协议/版本
    例如:GET /login.html HTTP/1.1
    请求url=虚拟路径+Servlet资源路径
  • 请求头:客户端浏览器告诉服务器一些信息
    请求头消息以键值对的方式给出:请求头名称:请求头值
    常见的请求头:
    • User-Agent:浏览器告诉服务器,使用的浏览器版本信息,可以在服务器端获取该头的信息,解决浏览器的兼容性问题(可以在服务器端对不同的服务器写不同的逻辑代码,然后根据该头的内容获取浏览器名称,执行对应浏览器的代码)
    • Referer:告诉服务器,当前请求从哪里来?可以用来防盗链和统计工作
  • 请求空行:一个空行,用于分割请求头和请求体
  • 请求体(正文):封装POST请求消息的请求参数

对于请求行中的请求方式,http协议7中请求方式,常用的有2种
  • GET:
    请求参数在请求行中,跟在url后。
    请求的url长度有限制的
    不太安全
  • POST:
    请求参数在请求体
    请求的url长度没有限制的
    相对安全

2、Http响应消息数据格式
  • 响应行:协议/版本 响应状态码 状态码描述
    例如:HTTP/1.1 200 OK
    请求url=虚拟路径+Servlet资源路径
  • 响应头:服务器告诉浏览器一些信息
    响应头消息以键值对的方式给出:响应头名称:响应头值
    常见的响应头:
    • Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
    • Content-disposition:服务器告诉客户端以什么格式打开响应体数据
        常见有两种取值
      • in-line:默认值,在当前页面内打开
      • attachment;filename=xxx:以附件形式打开响应体,用于文件下载
        注意:这个filename是浏览器在弹出框显示,和服务器中要下载的文件名无关
  • 响应空行:一个空行,用于分割响应头和响应体
  • 响应体(正文):传输的数据

响应状态码
服务器告诉客户端浏览器本次请求和响应的一个状态。
状态码都是3位数字
  • 1xx:服务器接收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码
  • 2xx:本次请求响应成功。代表码:200
  • 4xx:客户端错误。
    • 404:请求路径没有对应的资源-->路径错误
    • 405:请求方式没有对应的doxxx方法-->比如浏览器请求方式是Post方式,而客户端没有doPost方法
  • 5xx:服务器端错误。代表码:500(服务器内部出现异常)
发布了28 篇原创文章 · 获赞 1 · 访问量 2131

猜你喜欢

转载自blog.csdn.net/weixin_42387411/article/details/100268039