美文网首页
25.2、HTTP报文、请求方式GET和POST

25.2、HTTP报文、请求方式GET和POST

作者: 一土二月鸟 | 来源:发表于2020-06-26 12:46 被阅读0次

HTTP

  • http是基于TCP/IP通信协议来传递数据的
  • http是无状态的协议,tcp、web应用是有状态的协议。有状态的意思是每次连接请求都是基于上一次的连接请求决定的。

HTTP报文

  • HTTP报文是客户端和服务器端之间通信的数据。通过报文客户端会告知服务端其请求的目的,服务端再通过报文将结果返回给客户端。
  • MIME-type 代表传输数据的类型。
  • http报文分为起始行、头部信息、主体信息
    • 起始行存放http协议版本 请求地址 请求方式(get post)信息
    • 头部信息存放配置信息
    • 主体部分存放业务数据
  • 浏览器network中的信息为浏览器加工后的http报文,非原报文信息


请求报文
响应报文
  • keep-alive: 代表长连接的意思,意味着在服务器规定的timeout时间内,如果无新的http请求,tcp将会断开连接。在timeout时间内,会重复使用tcp连接,无需重新创建tcp连接。
    • keep-alive需要等待前面的http返回数据后,再发起另一个http请求。但管道化传输是不等待前面的http返回数据,直接按照顺序一个个发送请求。发送请求的同时接受响应。
    • 目前只有欧朋默认支持管道化,其他浏览器都需要进行配置。
request header
  • 请求头头部信息 是浏览器自动设置的 也可以在客户端手动设置
  • accept:代表服务端可以返回哪些文件类型给客户端
response header
  • content-encoding:压缩的形式
  • content- type:返回的资源类型和编码格式
  • date:服务器发送的时间
  • server:服务器的名称
header-General
  • General是从http报文中整理出来的一部分信息,会将请求地址、请求方法、服务器响应码、服务器ip地址等信息放置到general中。

Get和Post

  • 重要区别:
  • post要比get请求慢一些
    • 在tcp第三次握手时,get会将请求的全部信息发送给服务器,但是post会先将request header发送至服务器进行确认,返回100后,再继续发送请求主体信息。该行为属于浏览器和服务器的内部机制,通过浏览器network无法看到。
    • post要比get请求发送的请求头信息更多一些。
  • get请求会缓存到浏览器本地、post不会
  • post不能进行管道化传输
    • 幂等性:数学中某个数无论多少次方,都等于它自己。这样的数称之为遵守幂等性。(0和1即为有幂等性)
    • http请求中,get请求具有幂等性,post请求不具有幂等性。
    • 管道化传输,如果有一个链接出现异常,会导致整个所有的链接重新请求,这样对于post请求会造成数据紊乱,因此post不支持管道化传输。

科学上网的原理

  • 利用国外可访问的服务器做代理,访问真正要访问的网站。

疑惑

  1. 浏览器的最大并发连接数指的是tcp连接还是http连接?
  2. 现代浏览器资源下载是按顺序 还是同时?

    按照keep-alive的规则,图二的请求开始时间不应该是图一的请求开始时间7.58s+右下角的3.86s才对么?为什么图二的请求开始时间和图一几乎是同时的
    -1和1的答案见此链接

相关文章

网友评论

      本文标题:25.2、HTTP报文、请求方式GET和POST

      本文链接:https://www.haomeiwen.com/subject/hdayfktx.html