文档章节

二、简单的HTTP协议

娇娇jojo
 娇娇jojo
发布于 2017/09/07 17:50
字数 838
阅读 68
收藏 0

二、简单的HTTP协议

这部分主要针对HTTP协议(主要针对HTTP/1.1)结构进行讲解,包括HTTP是在什么之间进行通信,靠什么通信,以及HTTP支持的方法;
还有HTTP的进化史,曾经的弊端,现在是怎么进行进化和蜕变的。

1、通信

(1)HTTP协议用于客户端和服务端之间的通信

应用HTTP协议时,必定是一端担任客户端角色,另一端担任服务端角色。

(2)通过请求和响应的交互达到通信

请求必定由客户端发出,而服务端回复响应。

请求报文

GET /index.html HTTP/1.1
Host: hackr.jp

对上面的内容进行解析请求报文的构成:

响应报文

HTTP/1.1 200 OK
Date: Tue 10 Jul 2017 06:50:15 GMT
Content-Length:362
Content-Type: text/html

<html>
......

对上面的内容进行解析响应报文的构成:

(2)HTTP方法

HTTP方法用于客户端给服务器下达命令。

下表是HTTP/1.0和HTTP/1.1支持的方法:

方法 说明 支持的HTTP协议版本
GET 获取资源 1.0、1.1
POST 传输实体主体 1.0、1.1
PUT 传输文件 1.0、1.1
HEAD 获取报文首部 1.0、1.1
DELETE 删除文件 1.0、1.1
OPTIONS 询问支持的方法 1.1
TRACE 追踪路径 1.1
CONNECT 要求用隧道协议连接代理 1.1
LINK 建立和资源之间的联系 1.0
UNLINK 断开连接关系 1.0

 

2、进化史

(1)无状态 VS Cookie

我们知道,HTTP是无状态协议,也就是HTTP协议自身不具备保存之前发送过的请求或响应的功能。

HTTP无状态的特点,有利有弊。

  • 优点就是速度快,能够快速处理大量事物;
  • 缺点就是随着web的不断发展,无状态会导致业务处理变得棘手。比如说用户登录到一家购物网站,如果无状态,会导致用户跳转到该站的其他页面后,无法继续保持登录状态。

所以为了实现期望的保存状态功能,引入Cookie技术。

下图展示了没有cookie和有了cookie之后的请求:

我们可以看一下请求报文和响应报文有cookie和没cookie的区别:

(1)没有cookie的请求报文

GET /index.html HTTP/1.1
Host: hackr.jp

(2)有cookie的响应报文

HTTP/1.1 200 OK
Date: Tue 10 Jul 2017 06:50:15 GMT
Server: Apache
<Set-Cookie:sid=134780956002374590924; path=/; expires=Wed,=>10 Jul 2017 06:50:15 GMT>
Content-Type: text/plain; charset=UTF-8

(3)有cookie的请求报文

GET /index.html HTTP/1.1
Host: hackr.jp
Cookie: sid=134780956002374590924

 

(2)非持久连接VS 持久连接

在http1.0中,一个request,一个response,一个周期就结束了。

在http1.1中,有了keep-alive,可以发送多个Request,接收多个Response(但一个request还是对应一个response),也就是持久连接。

(1)持久连接

一个request,一个response,但只要任意一端没有明确提出断开,就保持连接。

(2)管线化

发送多个Request,接收多个Response。

请求数越多,时间差就越明显。

© 著作权归作者所有

共有 人打赏支持
上一篇: 图解HTTP
娇娇jojo
粉丝 180
博文 59
码字总数 64429
作品 0
海淀
私信 提问
两款已经卖了十年的USB模块产品秘密是什么?

两款已经卖了十年的USB模块产品秘密是什么? 答案是:专业、易用。 所谓“专业”是指完全封装了USB协议; 所谓“易用”就是用户不需要了解协议。 这两款达泰品牌USB产品是: 一、串口U盘模块...

dataie456000
2014/12/01
0
0
计算机网络基础(五)——传输层和应用层

一、传输层 传输层的作用 传输层提供端到端的连接(IP层提供点到点的连接),为应用层的数据的传输进行保驾护航。 传输层的协议 --TCP(Transmission Control Protocol) 传输控制协议。该协议...

神奇的小哈
2017/11/20
0
0
直播云之 HLS 协议详解 及其 优化技术解析

一、HLS 概述 HLS (HTTP Live Streaming), 是由 Apple 公司实现的基于 HTTP 的媒体流传输协议。他跟 DASH 协议的原理非常类似,通过将整条流切割成一个小的可以通过 HTTP 下载的媒体文件,...

又拍云
2017/03/27
234
2
TCP、HTTP协议以及SOCKET编程

一、TCP 协议 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层...

什么都不懂的小石
04/22
0
0
用ssl加密apache服务器来建立连接加密网站

ssl介绍: SSL(Secure Sockets Layer,SSL)是一种安全协议,在网景公司(Netscape)推出首版Web浏览器的同时提出,目的是为网络通信提供安全及数据完整性保障,SSL在传输层中对网络通信进行...

fighting-cluber
2014/03/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
14
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
9
0
my.ini

1

architect刘源源
今天
10
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
今天
11
0
寻找数学的广度——《这才是数学》读书笔记2700字

寻找数学的广度——《这才是数学》读书笔记2700字: 文|程哲。数学学习方式之广:国内外数学教育方面的专家,进行了很多种不同的数学学习方式尝试,如数学绘本、数学游戏、数学实验、数学步道...

原创小博客
今天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部