概述
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. npm init node 通过指令创建一个package.json文件及npm安装package.json

    描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的 ...

  2. demo1 spark streaming 接收 kafka 数据java代码WordCount示例

    1. 首先启动zookeeper windows上的安装见zk 02之 Windows安装和使用zookeeper 启动后见: 2. 启动kafka windows的安装kafka见Windows上搭 ...

  3. Celery-4.1 用户指南: Extensions and Bootsteps (扩展和Bootsteps)

    自定义消息消费者 你可能想要嵌入自定义的 Kombu 消费者来手动处理你的消息. 为了达到这个目的,celery 提供了一个 ConsumerStep bootstep 类,你只需要定义 get_co ...

  4. 第十三章 Spring框架的设计理念与设计模式分析(待续)

    Spring的骨骼架构 核心组件详解 Spring中AOP的特性详解 设计模式解析之代理模式 设计模式解析之策略模式

  5. java执行linux命令的工具类

    package com.starfast.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ja ...

  6. java判断姓是否合格 百家姓

    package util; import java.lang.reflect.Array; public class FirstName { public static boolean ClearNa ...

  7. 今天出现编码出现了No suitable driver found for jdbc

    出现这样的情况,一般有四种原因: 一:连接URL格式出现了问题(Connection conn=DriverManager.getConnection("jdbc:mysql://local ...

  8. JS获取页面URL信息

    下面我们举例一个URL,然后获得它的各个组成部分: http://i.cnblogs.com/EditPosts.aspx?opt=1 window.location.href (设置或获取整个 UR ...

  9. 为SSRS配置SMTP服务器身份验证

    此处设置外邮地址却无法填写邮箱密码 一.安装SMTP服务 1.在服务管理器中单击“功能” 2.单击“添加功能”打开“添加功能向导”对话框 3.在“选择功能”页上选择“SMTP服务器”并选择“添加必须的 ...

  10. day35-hibernate映射 04-Hibernate的一级缓存:一级缓存的存在

    数据源:文件和数据库.从内存中获取,不用去数据库发送SQL语句查询了.缓存技术是hibernate的一个优化的手段.Session结束了,一级缓存就没了,就销毁了.SeesionFactory没了,二 ...