概述
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. [转]HTMl中Meta标签详解以及meta property=og标签含义

    meta是用来在HTML文档中模拟HTTP协议的响应头报文.META标签是HTML语言HEAD区的一个辅助性标签,它位于HTML文档头部的<HEAD>标记和<TITLE>标记之 ...

  2. Installing Redis more properly

    Installing Redis more properly Running Redis from the command line is fine just to hack a bit with i ...

  3. java bean Format注解用法

    @NumberFormat(style=Style.NUMBER)    private int number; @DateTimeFormat(pattern="yyyy-MM-dd&qu ...

  4. AD的差分输入与单端输入

    AD的差分输入与单端输入 单端输入,输入信号均以共同的地线为基准.这种输入方法主要应用于输入信号电压较高(高于1V),信号源到模拟输入硬件的导线较短(低于15 ft,1ft=304.8mm),且所有的 ...

  5. Java-API:java.util.map

    ylbtech-Java-API:java.util.map compact1, compact2, compact3 java.util Interface Map<K,V> Type ...

  6. Java-API-POI-Excel:SXSSFWorkbook Documentation

    ylbtech-Java-API-POI-Excel:SXSSFWorkbook Documentation 1.返回顶部 1. org.apache.poi.xssf.streaming Class ...

  7. JAVA生成Word文档(经过测试)

    首先告诉大家这篇文章的原始出处:http://www.havenliu.com/java/514.html/comment-page-1#comment-756 我也是根据他所描述完成的,但是有一些地 ...

  8. Oracle RMAN 学习

    Oracle RMAN 学习:三思笔记 1 进入rman Rman--物理备份(结构/数据) 1 本地db Cmd set oracle_sid=orcl 1 rman target / Rman&g ...

  9. Spring学习五

    1: servlet生命周期:  Servlet加载    ->   实例化->   服务 ->  销毁 2:Servlet重要函数: init():在Servlet的生命周期中,仅 ...

  10. 基于人脸识别+IMDB-WIFI+Caffe的性别识别

    本文用记录基于Caffe的人脸性别识别过程.基于imdb-wiki模型做finetune,imdb-wiki数据集合模型可从这里下载:https://data.vision.ee.ethz.ch/cv ...