文档章节

二、简单的HTTP协议

娇娇jojojo
 娇娇jojojo
发布于 2017/09/07 17:50
字数 838
阅读 66
收藏 0
点赞 1
评论 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。

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

© 著作权归作者所有

共有 人打赏支持
娇娇jojojo
粉丝 166
博文 57
码字总数 59148
作品 0
海淀
两款已经卖了十年的USB模块产品秘密是什么?

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

dataie456000 ⋅ 2014/12/01 ⋅ 0

计算机网络基础(五)——传输层和应用层

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

神奇的小哈 ⋅ 2017/11/20 ⋅ 0

TCP、HTTP协议以及SOCKET编程

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

什么都不懂的小石 ⋅ 04/22 ⋅ 0

直播云之 HLS 协议详解 及其 优化技术解析

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

又拍云 ⋅ 2017/03/27 ⋅ 2

用ssl加密apache服务器来建立连接加密网站

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

fighting-cluber ⋅ 2014/03/06 ⋅ 0

workerman 测试实例

简单的开发实例 实例一、使用HTTP协议对外提供Web服务 创建http_test.php文件 <?php use WorkermanWorker; requireonce './Workerman/Autoloader.php'; // 创建一个Worker监听2345端口,使用...

bengozhong ⋅ 2015/08/13 ⋅ 0

Node.js与Golang使用感受与小结【一】

Node.js与Golang使用感受与小结 目录 一、互联网的基石TCP/IP协议 二、HTTP服务器编写与编程语言无关 三、构建HTTP服务器需要掌握的知识点 四、HTTP协议基础 五、Node.js简介 六、是前端选择...

念念之间 ⋅ 2013/05/22 ⋅ 8

hessian 在PHP中的使用

今天听同事说hessian也可以以http的方式和其他的语言交换数据,一直用soap,看来是孤陋寡闻了。 一、hessian是什么? 看到这个单词我还不知道怎么读,音标是[hes]读黑森。 Hessian是一个轻量...

疯狂的流浪 ⋅ 2010/12/10 ⋅ 0

实现一个 Java 版的 Redis (1)----百行代码解析Redis 协议.

最近看了 Redis 的代码,感觉还是挺简单的.有冲动想用其它语言实现(抄)一个.原来想用 Python 实现来着.后来想想试试 Netty.原因有二 第一:Java 的NIO 和Netty 的 EventLoop 配合起来和 Redis ...

wynwyy ⋅ 2016/10/20 ⋅ 5

retrofit,okhttp

Android RxJava+Retrofit2+RxBinding RxJava+Retrofit2+RxBinding 笔记 MVP + Rxjava + Retrofit 构建项目 2015 年最值得 Android 程序猿去学习的就是 RxJava 了,关于 RxJava 就不再多描述了......

掘金官方 ⋅ 01/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

linux 安装docker

通过以下命令下载安装docker wget -qO- https://get.docker.com | sh 执行以上命令后输出以下内容说明安装成功,注意红框中的内容,docker安装成功后默认只有root能使用,红框中给出的提示是...

haoyuehong ⋅ 20分钟前 ⋅ 0

482. License Key Formatting - LeetCode

Question 482. License Key Formatting Solution 思路:字符串转化为char数组,从后遍历,如果是大写字母就转化为小写字母,如果是-就忽略,如果遍历了k个字符(排除-)就追加一个-。 Java实现...

yysue ⋅ 38分钟前 ⋅ 0

聊聊spring cloud gateway的LoadBalancerClientFilter

序 本文主要研究一下spring cloud gateway的LoadBalancerClientFilter GatewayLoadBalancerClientAutoConfiguration spring-cloud-gateway-core-2.0.0.RELEASE-sources.jar!/org/springfram......

go4it ⋅ 今天 ⋅ 0

详解:Nginx反代实现Kibana登录认证功能

Kibana 5.5 版后,已不支持认证功能,也就是说,直接打开页面就能管理,想想都不安全,不过官方提供了 X-Pack 认证,但有时间限制。毕竟X-Pack是商业版。 下面我将操作如何使用Nginx反向代理...

问题终结者 ⋅ 今天 ⋅ 0

002、nginx配置虚拟主机

一、nginx配置虚拟主机可分为三种方式,分别为: 1、基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站 2、基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站...

北岩 ⋅ 今天 ⋅ 0

shell脚本之死循环写法

最近在学习写shell脚本,在练习if while等流程控制时,突然它们的死循环写法是怎么样的?经过百度与亲测记录如下: for死循环 #! /bin/bashfor ((;;));do date sleep 1d...

hensemlee ⋅ 今天 ⋅ 0

苹果的ARKit2.0有多可怕,看了就知道

序言 ARKit主要由三部分组成: 跟踪(Tracking) 跟踪是ARKit的核心组件之一,其提供了设备在物理世界中的位置与方向信息,并对物体进行跟踪,如人脸。 2.场景理解(Scene Understanding) 场...

_小迷糊 ⋅ 今天 ⋅ 0

5.1 vim介绍 5.2 vim移动光标 5.3 ,5.4vim一般模式下移动光标,复制粘贴

vim命令 vim是vi的一个升级版;vim可以显示文字的颜色 安装vim这一个包vim-enhanced 如果不知道安装包,可以使用 命令下面命令来查看vim命令是那个包安装的。 [root@linux-128 ~]# yum prov...

Linux_老吴 ⋅ 今天 ⋅ 0

vim一般模式

vim 是什么 vim是什么 ? 在之前接触Linux,编辑网卡配置文件的时候我们用过了vi ,vim简单说就是vi的升级版,它跟vi一样是Linux系统中的一个文本编辑工具。 如果系统中没有vim ,需要安装一...

李超小牛子 ⋅ 今天 ⋅ 0

docker实战

构建企业级Docker虚拟化平台实战 重点剖析虚拟化和云计算概念; 分析Docker虚拟化的概念和原理; 从0开始实战Docker虚拟化平台; 基于Docker构建Nginx WEB服务器和CentOS虚拟机; 基于开源监...

寰宇01 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部