HTTP协议

HTTP:Hyper Text Transfer Protocol,超文本传输协议,是用于在万维网和本地浏览器之间传输超文本的传输协议。

HTTP协议特点:

简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。

灵活:HTTP允许传输任意类型的数据对象,Content-Type。

无连接:限制每次连接只处理一个请求。一次请求应答之后就会断开,节省传输时间。

无状态:指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

              每一个请求都拥有自己的请求体,期望接收到唯一的对应的响应体,而每一次的请求都相互独立,与上一次或下一次的请求毫无关系

支持B/S及C/S模式。

默认端口80。

基于TCP协议。

短连接与长连接:

HTTP/1.0:默认使用短连接,提出长连接(持久连接)的概念,但当时仅提供初步的支持。

HTTP/1.1:默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:Connection:keep-alive

HTTP/1.1和HTTP/2:

HTTP/1.1:pipelining,持久连接的弊端,HOLB(Head of Line Blocking),即持久连接下一个连接中的请求仍然是串行的,如果某个请求出现网络阻塞等问题,会导致同一条连接上的后续请求被阻塞。

因此,HTTP/1.1中提出了pipelining概念,客户端在一个请求发送完成之后不等待响应便可直接发送下一个请求,服务端在返回响应时会按请求到达的顺序依次返回,极大地降低了延迟。但是并没有解决HOLB的问题,因为响应仍然是串行返回的。

HTTP/2:multiplexing,多路复用技术能够让多个请求和响应的传输完全混杂在一起进行,通过streamID来互相区别。解决了HOLB问题,同时还允许给每个请求设置优先级,服务端会先响应优先级高的请求。

参考博客:https://segmentfault.com/a/1190000015821798

HTTP请求方法:

GET:向指定的资源发出“显示”请求。

HEAD:与GET方法一样,都是向服务器发出指定资源的请求。区别是HEAD不传回资源的文本部分。

POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。

PUT:向指定资源上传其最新内容。

DELETE:请求服务器删除Request-URI所标识的资源。

TRACE:回显服务器收到的请求,主要用于测试或诊断。

OPTIONS:可使服务器传回该资源所支持的所有HTTP请求方法。可以测试服务器功能是否正常运作。

CONNECT:

参考博客:https://www.cnblogs.com/an-wen/p/11180076.html

GET与POST区别:

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)

GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.(请求头里面那个content-type做的这种参数形式,后面讲) POST方法是把提交的数据放在HTTP包的请求体中。因此,GET比POST更不安全。

GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

GET请求只能进行url编码,而POST支持多种编码方式。

GET请求参数会被完整保留在浏览历史记录里,而POST中的参数不会被保留。

GET产生一个TCP数据包;POST产生两个TCP数据包。

HTTP状态码:

所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

状态码的第一个数字代表当前响应的类型:

1xx消息:请求已被服务器接收,继续处理。

2xx成功:请求已成功被服务器接收、理解、并接受。

3xx重定向:需要后续操作才能完成这一请求。

4xx请求错误:请求含有词法错误或者无法被执行。

5xx服务器错误:服务器在处理某个正确请求时发生错误。

HTTP请求格式:

 HTTP响应格式:

URI与URL

URL:统一资源定位符  URI:统一资源标识符

URI属于URL更高层次的抽象

URI表示请求服务的路径,定义这么一个资源;而URL同时要说明如何访问这个资源。

Session与Cookie

原文地址:https://www.cnblogs.com/liushoudong/p/12489899.html