Http 笔记

Http 笔记

Http协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。Http 是基于 TCP/IP 协议通信协议来传递数据(HTML 文件、图片文件、查询结果等)。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。

Http的特点

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、PUT、DELETE、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  • 灵活:HTTP允许传输任意类型的数据对象。
  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 状态:HTTP协议是无状态的,HTTP 协议自身不对请求和响应之间的通信状态进行保存。任何两次请求之间都没有依赖关系。直观地说,就是每个请求都是独立的,与前面的请求和后面的请求都是没有直接联系的。协议本身并不保留之前一切的请求或 响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设计成如此简单的。

Http报文

请求报文

请求报文由请求行(request line)、请求头(header)、空行和请求体四个部分组成

在这里插入图片描述

  • 请求行: 用来说明请求类型、要访问的资源以及所使用的HTTP版本。 POST /chapter17/user.html HTTP/1.1
  • 请求头: 请求头部通知服务器有关于客户端请求的信息。它包含许多有关的客户端环境和请求正文的有用信息。由关键字 / 值对组成,每行一对,关键字和值用英文冒号“:”分隔。其中比如
    • User-Agent:请求发出者,兼容性以及定制化需求。
    • Host:表示主机名,虚拟主机。
  • 空行: 最后一个请求头之后是一个空行,它表示请求头已经结束,接下来的是请求正文
  • 请求体: 可以承载多个请求参数的数据, name=tom&password=1234&realName=tomson

响应报文

响应报文由响应行、响应头、空行和响应体四个部分组成

在这里插入图片描述

  • 响应行:响应行主要包括响应协议,状态码, 状态码的描述
  • 响应头:响应头就是一些常见的响应名对应的响应值
  • 空行: 最后一个响应头之后是一个空行,它表示响应头已经结束,接下来的是响应体正文
  • 响应体:响应体就是我们真正需要的从数据库中取出的数据

Http状态码

  • 1xx:指示信息——表示请求已接收,继续处理。
  • 2xx:成功——表示请求已被成功接收、理解、接受。
  • 3xx:重定向——要完成请求必须进行更进一步的操作。
  • 4xx:客户端错误——请求有语法错误或请求无法实现。
  • 5xx:服务器端错误——服务器未能实现合法的请求。

Http请求方法

  • GET:请求指定的页面信息,并返回实体主体。
  • HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
  • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。
  • PUT:从客户端向服务器传送的数据取代指定的文档的内容。
  • DELETE:请求服务器删除指定的页面。

GET与POST区别

  • GET在浏览器回退时是无害的,而POST会再次提交请求。
  • GET请求会被浏览器主动缓存,而POST不会,除非手动设置。
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  • GET请求在URL中传送的参数是有长度限制的,而POST没有限制。
    • HTTP协议规范中其实是没有对URL限制长度的,限制URL长度的是客户端或服务器的支持的不同所影响:比如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持
  • GET参数通过URL传递,POST放在Request body中。

持久连接

为什么需要持久连接

HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。以当年的通信情况来说,因为都是些容量很小的文本传输,所以即使这样也没有多大问题。可随着 HTTP 的 普及,文档中包含大量图片的情况多了起来。比如,使用浏览器浏览一个包含多张图片的 HTML 页面时,在发送请求访问 HTML 页面资源的同时,也会请 求该 HTML 页面里包含的其他资源。因此,每次的请求都会造成无谓的 TCP 连接建立和断开,增加通信量的 开销。

  • 持久连接的特点: 只要任意一端没有明确提出断开连接,则保持TCP连接状态
  • 持久连接的好处: 减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载

推荐文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoLiuRs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值