http协议

https://juejin.im/post/5e8b4b69f265da47f25609ce

http协议是一个基于请求与响应模式的无连接,无状态,应用层的协议,支持c/s模式,简单快速,灵活

http有两种报文:请求报文和响应报文

请求报文

请求报文由请求行,请求报头,和请求数据组成

  • 请求行:抓包第一行,包括请求方法,url和http版本
  • 请求报头:指的就是题目中“里面的协议头部”
  • 请求数据:指post方式提交的表单数据
响应报文

响应报文由状态行,响应报头,响应正文组成

  • 状态行:状态码
  • 响应报头:同请求报头
  • 响应正文:服务器返回的资源数据

接下来是http头部,既请求报头和响应报头,统称消息报头,消息报头可以分为通用报头,请求报头,响应报头,实体报头等

通用报头和实体报头既可以出现在请求报头中,也可以出现在响应报头中

  • 通用报头包含的字段如: Date Connection Cache-Control,
  • 实体报头中有Content-Type Content-Length Content-Language Content-Encoding.

  • 请求报头中包含的字段有: Host,User-Agent,Accept-Encoding,Accept-Language,Connection

  • 响应报头包含的字段: Location,Server

http的get和post的区别

http是应用层的协议,==底层基于TCP/IP协议==,所以本质上,get和post请求都是TCP请求。所以二者的区别都是体现在应用层上(HTTP的规定和浏览器/服务器的限制)

  1. 参数的传输方式:GET参数通过URL传递,POST放在Request body中。
  2. GET请求在URL中传送的参数是有长度限制的,而POST没有。
  3. 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。不过要注意,并不是所有浏览器都会在POST中发送两次包,比如火狐
  4. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
  5. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  6. GET请求只能进行url编码,而POST支持多种编码方式。
  7. GET在浏览器回退时是无害的,而POST会再次提交请求。
  8. GET产生的URL地址可以被Bookmark,而POST不可以。
  9. GET请求会被浏览器主动cache,而POST不会,除非手动设置。

socket和http的区别:

TCP/IP是传输层协议,主要解决数据如何在网络中传输,tcp协议:对应于传输层、ip协议:对应与网络层

Http基于TCP/IP协议,是应用层协议。主要解决如何包装数据。 Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。

  • Http连接:http连接就是所谓的短连接,及客户端向服务器发送一次请求,服务器端相应后连接即会断掉。
  • socket连接:socket连接及时所谓的长连接,理论上客户端和服务端一旦建立连接,则不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该链接已释放网络资源。所以当一个socket连接中没有数据的传输,那么为了位置连续的连接需要发送心跳消息,具体心跳消息格式是开发者自己定义的。
Copyright © tracyliu-FE 2021 all right reserved,powered by Gitbook文件修订时间: 2022-03-06 12:52:33

results matching ""

    No results matching ""