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协议的更多相关文章

  1. [转] 浅析HTTP协议

    浅析HTTP协议 来源:http://www.cnblogs.com/gpcuster/archive/2009/05/25/1488749.html HTTP协议是什么? 简单来说,就是一个基于应用 ...

  2. 从TCP三次握手说起–浅析TCP协议中的疑难杂症(2)

    版权声明:本文由黄日成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/108 来源:腾云阁 https://www.qclo ...

  3. 浅析UPnP协议

    摘要:文章介绍了UPnP结构规范和开发流程,指出:UP nP协议使所有联网的设备实现互联,设备工作不需要传统的驱动程序,便可以实现设备间的 相互控制. 关键词:UPnP协议:开发流程:电子技术:工作 ...

  4. 浅析——SCTP协议(转)

    SCTP处于SCTP用户应用层与IP网络层之间,它运用“关联”(association)这个术语定义交换信息的两个对等SCTP用户间的协议状态 .SCTP也是面向连接的,但在概念上,SCTP“关联”比 ...

  5. 浅析ARP协议及ARP攻击

    一. ARP数据包结构 (1)硬件类型:指明发送方想知道的硬件接口类型,以太网的值为1:(2)协议类型:指明发送方提供的高层协议类型:它的值为 0x0800 即表示 IP地址.(3)硬件地址长度和协议 ...

  6. 浅析HTTP协议的请求报文和响应报文

    1.HTTP协议与报文简介  HTTP(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器和万维网服务器之间互相通信的规则. 而客户端与服务端通信时 ...

  7. 从TCP三次握手说起--浅析TCP协议中的疑难杂症(1)

    版权声明:本文由黄日成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/73 来源:腾云阁 https://www.qclou ...

  8. 浅析HTTP协议get请求与post请求

    一.HTTP简介 1. HTTP协议:(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器和万维网服务器之间互相通信的规则(报文格式). 2.报文: ...

  9. 浅析TCP协议---转载

    https://cloud.tencent.com/developer/article/1150971 前言 说到TCP协议,相信大家都比较熟悉了,对于TCP协议总能说个一二三来,但是TCP协议又是一 ...

随机推荐

  1. iOS常用 --- NSDictionary 与 NSMutableDictionary

    一.NSDictionary 字典的两种创建方法 NSDictionary *dic1 =[[NSDictionary alloc]init]; 2 // 或: 3 NSDictionary *dic ...

  2. XUtils框架之初步探索

    Xutils分为四大模块. BitmapUtils  DBUtils ViewUtils HttpUtils

  3. jQuery插件 -- Cookie插件jquery.cookie.js(转)

    Cookie是网站设计者放置在客户端的小文本文件.Cookie能为用户提供很多的使得,例如购物网站存储用户曾经浏览过的产品列表,或者门户网站记住用户喜欢选择浏览哪类新闻. 在用户允许的情况下,还可以存 ...

  4. BZOJ 2462: [BeiJing2011]矩阵模板

    2462: [BeiJing2011]矩阵模板 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 915  Solved: 432[Submit][Stat ...

  5. 【Codeforces715C&716E】Digit Tree 数学 + 点分治

    C. Digit Tree time limit per test:3 seconds memory limit per test:256 megabytes input:standard input ...

  6. 【Beta】七天屠蛟记

    团队名字: 一不小心就火了 屠龙天团少年们: 031402504 陈逸超 (组长) 031402505 陈少铭 031402511 黄家俊 031402515 翁祖航 031402516 黄瑞钰 03 ...

  7. myBatis foreach详解【转】

    MyBatis的foreach语句详解 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有 item,index,collection,ope ...

  8. yii2 composer安装

    安装Yii2 1.安装composer 在命令行输入 curl-sS https://getcomposer.org/installer | php mv composer.phar /usr/loc ...

  9. 面试题目——《CC150》智力题

    面试题6.1:有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸.给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次. 思路:第1瓶取1颗,第2瓶取2颗....最 ...

  10. SDK 支付

    充值:用什么买什么 MSDK: Q点:百科 http://baike.baidu.com/link?url=Dw8ySUIvv6AAprULG_wnI7Mst61gG4bO2qzfpfi1j9xx6c ...