浅析HTTP协议
HTTP协议是什么
HTPP协议是一种网际层协议,HTTP协议是无状态的,HTTP协议对用户是透明的。
每一次HTTP请求都是一次事务,一个HTTP事务是由一条请求命令和一个响应结果组成的,HTTP通信的最基本单位是HTTP报文。
形象通俗的概念理解HTTP协议
其实我觉得HTTP请求就好像去商店(服务器)买东西(请求资源)一样,比如说我拿钱去商店,然后说要买瓶矿泉水,然后商店老板收钱之后把我的矿泉水交到我手里,这就是完成了一次交易,也就是一次HTTP事务。而买东西需要钱就是一个约定,也就是HTTP协议.
理想状态就是拿钱买东西,但是这个过程往往不会永远都那么顺利,总会有各种各样的意外情况。
1.马上放假了,为了准备我的冬眠计划,于是我准备储存一下要过冬的粮食,于是到到商店买了泡面五连包(?_?),给了十块钱,这是时候商店老板很尴尬的说了一句,HTTP 100 continue,不好意思,还差两块五-_-||,没办法,只能再掏出两块五拉,这个时候商店老板很高兴的说了一句HTTP 200 OK,拿好你的东西慢走啊!
2.最近商店决定装修了,门口贴出了一张告示(HTTP 302 Move temporarily),商店装修,临时移动到隔壁了,请到隔壁买东西,那没办法,东西还得买,过冬粮食不能少啊,结果没过两天,商店又贴出告示,(HTTP 301 Moved Permanently),装修花费的时间太长拉,以后就到隔壁买东西吧,好吧,以后就只到隔壁买拉(@_@)
3.商店推出了新的活动,有特价的机械炫酷版键鼠,我看着很心动,于是准备买下来,但是商店老板说:(HTTP 401 Unauthorized ),这是会员专属商品,得办会员卡才能买,好吧~为了买到我心爱的机械键鼠,办卡就办卡吧
刚好这个时候,隔壁的张三同学来了,这个人心眼比较坏,拿着一张20元的假币去买饮料,不巧的是商店老板慧眼如炬,直接就发现了,然后告诉他(HTTP 403 Forbidden),我们这不收假币(-_-||)
过了一段时间之后,我总感觉自己的电脑很慢,于是我琢磨着要换个好一点的CPU,不要太好的就用core i7 6700的cpu吧,然后我兴致勃勃的跑到商店,结果迎来一盆冷水:你要买的这个东西,暂时还没有货(HTTP 404 not found),好吧,等你们进货了记得告诉我(-_-||)
4.最近流感很严重,我准备到商店买感冒药(ps:万能的商店啊,什么都能买,就像机器猫的口袋一样),但是很不凑巧,商店老板也感冒了,门口特出了告示:(HTTP 500 Internal Server Error),老板生病了,暂不提供服务(-_-||),老板知道这件事情之后,他觉得这样会损失很多生意,于是招了个伙计(网关),然后老板只要收钱就行了,跑腿的事就让伙计去干,正巧我今天刚好下班回家,准备买点八宝粥回去吃,结果新来的伙计还没开始上班,老板只能无奈的说(502 bad gateway),伙计还没来,我感冒还没好,你过一个小时再来吧,过了一个小时,伙计来了,老板让他去仓库里拿那个银鹭的桂圆莲子八宝粥,伙计刚好第一天上班,找了半天没找着,我饿的实在不行了,老板只能很无奈的告诉我(HTTP 504 gateway timeout),新来的伙计不懂业务,你今天还是别吃这个了,弄点泡面吃吧(-_-|| 老板的都知道我爱吃泡面了)
因为店里什么都卖,所以店里的客户越来越多了,老板的精力有限,没有办法记得过来那么多熟人,起初为了让老板能够记住我这个吃泡面的常客,于是我告诉他,我住在你后面那栋楼(IP地址记忆),但是我转念一想,后面那栋楼可能不止我一个人啊,万一我要是搬家了呢,老板岂不是记不住我了-_-||,于是我用了一种比较笨的办法,把我的名字和住址贴到我的衣服上(胖url方式),这样老板每次一看纸条就能知道我是谁了。但是感受到无数人异样的眼光之后,我觉得有必要和商店老板商量一下了,就采用办会员卡(session)的形式来记住那些常客吧,让他们登记一下姓名和电话之后,给他们发一张卡(sessionid),然后每次来只要刷一下卡,就能立刻认出是谁拉。老板听了我的仔细分析之后,觉得这个方法非常好,于是就采用了这种方式来记住客户。后来每次买东西,我只要从口袋(cookie)里掏出我的会员卡刷一下,老板就能立刻知道我是谁了(老板比较健忘,我买了那么多泡面,都记不住我-_-||)
理想是好的,但是老板发现,并不是所有的人都有口袋(客户端禁用cookie),就比如说我楼下的小花,每天都是穿裙子,根本没有口袋啊,那就只能拿在手里拉(把session放在隐藏域表单),或者是挂在自己的脖子上(sessionid放在url中),这样老板就能记住拉,但是直接暴露在别人的视线下,太不安全拉,毕竟财不外漏嘛,虽然放在口袋里,也有被人顺走的情况(cookie劫持),但比放手上要好点吧,果不其然,隔壁的张三同学就使坏,把小花的会员卡(sessionid)给顺手牵羊了,然后直接拿着会员卡去买东西了(跨站请求伪造csrf),但是老板记性不好,只要有卡就行,至于拿卡的是不是本人,那他就管不着了。老板记性很差,这也是没有办法的事情,只能提醒一下各位,请保管好自己的会员卡,老板只认卡不认人(-_-||)
虽然老板记性不是很好,但是为人踏实敬业,随着他的努力,客户越来越多了,这个时候一家店就忙不过来了,于是老板决定开分店(服务器集群,负载均衡),但是分店开起来之后,我发现我在这里办的会员卡在那边分店居然不能使用,这我就不能忍了,为什么都是你开的店,这边的会员卡那边不能用呢(?_?),于是我只能跟老板说,既然都是会员,那么这个会员卡必须是两边都能刷的(seesion共享),不然客户肯定不满意对吧,老板听了我分析之后,决定专门设立一处管理会员卡的地方(session服务器),这样买完东西直接到专门刷卡的地方去就好了。采用了这样的方法之后,办卡的人就越来越多了,为了方便大家刷卡,只能多搞几个会员卡卡管理处了(session集群),这样的话差不多就没有什么大问题了。不过分店开了,会员卡也管理好了,但是这个货物渠道出了点问题,买东西的人太多,一个仓库的货物已经不够用了啊,只能多搞几个仓库拉(分库),水果就专门放水果仓库,蔬菜就专门蔬菜的仓库,零食就弄零食仓库拉,但是水果里面,西瓜进的太多了,没有办法,西瓜多搞点空地放吧(分表),这样管理就差不多了。
看到商场越来越大,我觉得很欣慰。恰好又是要过冬的时候了,该储备粮食拉,我拿着会员卡说买个五连包,但是零食卖的太快了,商店的柜台上(缓存)没有了,然后老板让伙计(网关)去仓库拿一些过来,伙计按照老板的吩咐来到了仓库,发现仓库正在进货(表级锁定),不让取货物,这个可把我等坏了,我不就买了泡面么,居然等了几个小时,时间再长一点,我都要饿死了(?_?),这样很明显是不对的吧,我只能再次的给老板建议拉,你这个进货和拿货应该分开来弄(读写分离),弄一个仓库专门进货,另一个仓库专门拿货比较好(主从配置),然后让这个拿货的仓库安排一个专门的工作人员,把新进的货物运到这个仓库来就好了啊,这样就不会存在让客户等好长时间了。健忘的老板果断的采用了这一建议,看着我买泡面的地方,一步步的成长到这个高度,我感觉非常的欣慰,我决定了,以后吃泡面就认准这家店了,其他地方哪都不去(@_@)
浅析HTTP协议的更多相关文章
- [转] 浅析HTTP协议
浅析HTTP协议 来源:http://www.cnblogs.com/gpcuster/archive/2009/05/25/1488749.html HTTP协议是什么? 简单来说,就是一个基于应用 ...
- 从TCP三次握手说起–浅析TCP协议中的疑难杂症(2)
版权声明:本文由黄日成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/108 来源:腾云阁 https://www.qclo ...
- 浅析UPnP协议
摘要:文章介绍了UPnP结构规范和开发流程,指出:UP nP协议使所有联网的设备实现互联,设备工作不需要传统的驱动程序,便可以实现设备间的 相互控制. 关键词:UPnP协议:开发流程:电子技术:工作 ...
- 浅析——SCTP协议(转)
SCTP处于SCTP用户应用层与IP网络层之间,它运用“关联”(association)这个术语定义交换信息的两个对等SCTP用户间的协议状态 .SCTP也是面向连接的,但在概念上,SCTP“关联”比 ...
- 浅析ARP协议及ARP攻击
一. ARP数据包结构 (1)硬件类型:指明发送方想知道的硬件接口类型,以太网的值为1:(2)协议类型:指明发送方提供的高层协议类型:它的值为 0x0800 即表示 IP地址.(3)硬件地址长度和协议 ...
- 浅析HTTP协议的请求报文和响应报文
1.HTTP协议与报文简介 HTTP(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器和万维网服务器之间互相通信的规则. 而客户端与服务端通信时 ...
- 从TCP三次握手说起--浅析TCP协议中的疑难杂症(1)
版权声明:本文由黄日成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/73 来源:腾云阁 https://www.qclou ...
- 浅析HTTP协议get请求与post请求
一.HTTP简介 1. HTTP协议:(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器和万维网服务器之间互相通信的规则(报文格式). 2.报文: ...
- 浅析TCP协议---转载
https://cloud.tencent.com/developer/article/1150971 前言 说到TCP协议,相信大家都比较熟悉了,对于TCP协议总能说个一二三来,但是TCP协议又是一 ...
随机推荐
- 理解web缓存 浏览器缓存
为了: 控制缓存 遇到的现象: 1.开发的时候,浏览器会缓存你的文件,使得你的改动是无效的! 开发过程中:我们是不希望有缓存的. 但正是发布以后,我们是希望页面能够在浏览器缓存,这样用户的体验就会提高 ...
- CURL
基本语法: function curl($url){ $ch=curl_init(); //初始化 curl_setopt($ch, CURLOPT_URL, $url); //核心 curl_se ...
- delphi 默认值
只有全局变量才可以赋初值 i:integer=0;
- Java多线程卖票例子
package com.test; public class SaleTickets implements Runnable { private int ticketCount = 10;// 总的票 ...
- BZOJ 3809: Gty的二逼妹子序列
3809: Gty的二逼妹子序列 Time Limit: 80 Sec Memory Limit: 28 MBSubmit: 1387 Solved: 400[Submit][Status][Di ...
- VOC2007检测任务的评估标准
VOC2007数据集使用mAP值作为检测算法检测结果的性能评估得分.mAP意思是mean Average Precision,Precision是指精度,Average Precision是指11个等 ...
- WPF面试准备
1.wpf中有两类模板,控件模板controltemplate和datatemplate都派生自Frameworktemplate. 总共有三大模板 ControlTemplate,ItemsPane ...
- gis数据格式转换(数据导入)ConvertFeaCls
本文主要对数据导入等里 常用的不同格式数据创建.转换等 进行代码示例.主要用到IFeatureDataConverter.ConvertFeatureClass方法. 代码如下,难度不大,只是个技巧问 ...
- 阿里巴巴分布式服务框架dubbo学习笔记
Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的 ...
- FireFox每次访问页面时检查最新版本
FireFox每次访问页面时检查最新版本 浏览器都有自己的缓存机制,作为开发人员,每次js的修改都要清空缓存,显然很不方便.而firefox并没有提供ie那样的设置. 下面的方法就可以非常方便的设置f ...