概述
HTTP 是基于 TCP/IP 协议的应用层协议,它不涉及数据包(packet)的传输,主要是规定客户端和服务器之间的通信格式,默认使用 80 端口。
 
HTTP 协议最早版本是 HTTP/0.9,经历了 HTTP/1.0 和 HTTP/1/1 的发展,到目前为止已经是 HTTP/2.0 。其中 HTTP/1.0 最为普遍也是目前使用最久的一个版本。
 
HTTP 协议主要有以下几个特点:
  1. 支持 B/S 和 C/S 模式。
  2. 简单快速。客户端向服务器请求时,只需要传送请求方法和路径。
  3. 灵活。HTTP 允许传输任意类型的数据对象。
  4. 无连接。每次连接只处理一个请求。HTTP/0.9 和 HTTP/1.0 采用非持久连接,HTTP/1.1 采用持久连接。
  5. 无状态。HTTP 协议是无状态协议,对事务处理没有记忆能力。一方面,若后续处理需要上一次的信息,那么这些数据需要重传,这导致连接传输的数据量大增。另一方面,服务器不需要前面的信息时它的应答就会很快。
无状态协议
HTTP 协议是无状态的。所谓无状态,是指服务器不会保存客户端请求的数据,这样同一个客户端这次请求和上一个请求是没有对应关系的,对服务器来说,每一个请求都是全新的,它并不知道两个请求来自同一个客户端。
为了解决这个问题,浏览器引入了 Cookie 机制,每次请求客户端都将 Cookie 中的数据全部发给服务端,而服务端将数据写入 Cookie 响应给客户端。
 
 
HTTP/1.1 持久连接
在 HTTP/0.9 和 HTTP/1.0 使用非持久连接。在非持续连接下,每个 TCP 只连接一个 Web 对象,连接在一次 请求-回应 后都会关闭,而持续连接可以让一个连接被多个请求重复利用。这种连接持久化显著减少了请求延迟,因为客户不用在首次请求后再次进行 TCP 交互确认创建连接。HTTP/1.1 引入了持续连接机制,不必为每个 web 对象创建一个新的连接,一个连接可以传送多个对象。
HTTP/1.1 还进行了宽带优化,如引入了分块传输编码来允许流化传输持续连接上发送的内容,取代原先的 buffer 模式。HTTP 管道允许客户在上一个回应被收到前发送多重请求从而进一步减少延迟的时间。
 
 
HTTP/1.1 管道机制
HTTP/1.1 引入了管道机制,管道机制前提是在持久连接下完成。在同一个 TCP 连接中,客户端可以同时发生多个请求,而不像以前那样在同一个 TCP 连接中发出请求后需要等待服务器做出回应,然后才能发生下一个请求。不过按 HTTP/1.1 协议,服务器端必须按客户端请求的顺序恢复请求。
 
 
工作流程
一次 HTTP 请求-响应 称为一个事务
1)客户端与服务器建立连接。因为 HTTP 协议是基于 TCP 协议的,所以每次建立连接时都要经过三次握手。
2)建立连接后,客户端发送一个请求给服务端。
3)服务端接收请求后,给予相应的响应消息。
4)客户端接收服务器响应的消息,然后客户端与服务器断开连接。
 
 
参考文章:
Hypertext Transfer Protocol — HTTP/1.1:https://tools.ietf.org/html/rfc2616

HTTP 协议 -- 基础的更多相关文章

  1. TCP/IP协议基础(转)

    转自 http://www.chinaunix.net 作者:Bernardus160  发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...

  2. 小白日记27:kali渗透测试之Web渗透-Http协议基础,WEB

    Http协议基础 Web技术发展[http://www.cnblogs.com/ProgrammerGE/articles/1824657.html] 静态WEB[网页] 动态WEB 属于一种应用程序 ...

  3. HTTP协议基础与实验

    一. HTTP协议(Hypetext Transfer Protoacal,超文本传输协议) HTTP协议规定了Web基本的运作过程,以及Web服务器之间的通信细节. Http协议采用客户端/服务器端 ...

  4. udp协议基础(转自疯狂java讲义)

    第17章  网络编程 17.4  基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发 ...

  5. UART串口协议基础1

    Louis kaly.liu@163.com 串口协议基础 1 串口概述 串口由收发器组成.发送器是通过TxD引脚发送串行数据,接收器是通过RxD引脚接收串行数据. 发送器和接收器都利用了一个移位寄存 ...

  6. 接口测试培训:HTTP协议基础

    接口测试培训:HTTP协议基础   引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展. ...

  7. 【RL-TCPnet网络教程】第41章 HTTP超文本传输协议基础知识

    第41章      HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...

  8. 【RL-TCPnet网络教程】第35章 FTP文件传输协议基础知识

    第35章      FTP文件传输协议基础知识 本章节为大家讲解FTP(File Transfer Protocol,文件传输协议)的基础知识,方便后面章节的实战操作. (本章的知识点主要整理自网络) ...

  9. 【RL-TCPnet网络教程】第33章 SMTP简单邮件传输协议基础知识

    第33章      SMTP简单邮件传输协议基础知识 本章节为大家讲解SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)的基础知识,方便后面章节的实战操作. (本 ...

  10. 【RL-TCPnet网络教程】第25章 DHCP动态主机配置协议基础知识

    第25章      DHCP动态主机配置协议基础知识 本章节为大家讲解DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通过前面章节对TCP和UDP ...

随机推荐

  1. 【转】JVM可视化工具插件---Visual GC

    Visual GC是一个Java 内存使用分析与GC收集的可视化工具插件 <插件下载> 一:整个区域分为三部分:spaces.graphs.histogram 1 spaces区域:代表虚 ...

  2. Http之ContentType

    引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值 ...

  3. 如何打开 Windows 的热键提示

    如何打开 Windows 的热键提示 很早之前我记的 Windows 是有热键提示的,不知道什么时候开始默认不显示了,难道 微软是为是美观? 找了一下原来是有地方可以设置的.

  4. Spring基础知识之装配Bean

    装配(wiring):创建应用对象之间协作关系的行为.这是依赖注入的本质. Spring配置的可选方案 Spring提供了三种装配机智: 1)在XML中进行显示装配 2)在java中进行显示装配 3) ...

  5. 备份Ubuntu系统

    1.工具:再生龙 2.备份方法:使用再生龙将系统备份(在U盘/boot目录下有很多文件),可以通过这个U盘去装机.将这个U盘生成的文件发送给应用,应用会将其打包生成iso可发布版本: 3.操作步骤:

  6. C++字符集问题终极分析(可解决乱码问题)

    最近研究vc,windows的东西真是很傻瓜,啥都给你做好,有个好处就是开发方便了. 有个弊端就是完全按微软的一套进行,规则都是它定的,你得知道它的很多api, 开发出来的代码效率不高,不过却可以比较 ...

  7. sql server将字符串转换为 uniqueidentifier 时失败

    sql server查询中出现 将字符串转换为 uniqueidentifier 时失败异常 原因为id设置为uniqueidentifier 字段,在where查询时需要做转换cast(id as ...

  8. Cassandra 学习二

    Cassandra的架构 Cassandra的设计目的是处理跨多个节点的大数据工作负载,而没有任何单点故障.Cassandra在其节点之间具有对等分布式系统,并且数据分布在集群中的所有节点之间. 1 ...

  9. C++11 auto和decltype推导规则

    VS2015下测试: decltype: class Foo {}; int &func_int_r(void) { int i = 0; return i; }; int && ...

  10. iOS类目、延展和协议

    类目:为已知的类增加新的方法:注意:类目里面只能写方法,不能写声明和属性,所以,类目不能作为接口来用 1.类目无法向已有类中添加实例变量.2.如果类目中的方法和已有类中的方法名称冲突时,类目中的方法优 ...