HTTP协议简析

引言

HTTP是一个属于应用层的面向兑现的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它与1990年提出。目前使用的版本是HTTP/1.1版本。

HTTP协议

协议是指两台计算机之间进行通信必须共同遵守的规定或者规则。超文本传输协议是一种通信协议,它允许将超文本标记语言文档从web服务器传送到客户端的浏览器。

特点

  1. 支持客户端/服务器模式(C/S)。
  2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  3. 灵活:HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记。
  4. 无连接:无连接的含义是每次连接只能处理一个请求。服务器处理完客户的请求后,并受到客户的应答,即断开连接。
  5. 无状态:HTTP协议是无状态的。无状态是指协议对于事务处理没有记忆能力。本次的请求和上一次请求并没有关系,对于服务器来说,并不知道两次请求来自同一个客户端。

WEB浏览器、服务器、代理服务器

当我们输入网址之后,就能看到网页,原理是怎样的呢,简单的解析一下:

  1. 客户端与服务端通过http协议建立连接。
  2. 连接建立之后,发送request请求,请求格式为:URL,协议的版本号,客户机信息等内容。
  3. 服务器受到请求之后,作为响应,返回客户端的请求内容。
  4. 客户端浏览器收到服务的信息后,解析内容,显示在浏览器界面上。

请求过程如下面图片所示:

请求.png

我们的请求又可能不是通过客户端直接和服务端连接的,中间可能会加一个代理的服务器,客户端先和代理服务器连接,之后在和目标服务器连接,这样可以隐藏客户端的ip,这种方式在爬虫中比较常用,它可以提高访问的速度,突破封锁的限制,隐藏客户端的信息。请求过程如下图所示:

1.png

HTTP代理服务器
简单说,http代理服务器就是网络信息的中转站,代理服务器具有缓存的功能,有很大的存储空间。对于客户端来说,代理服务器相当于服务端,对于都服务端来说,代理服务器就是要一个客户端。

HTTP URL组成解析

URL描述的是网络上的资源,任何信息都可以通过URL找到它。http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。

格式如下:

http://www.test.com/search/yuluo?id=1234&name=zhangsan

  1. scheme 指定底层使用的协议(http ,https ,ftp)
  2. host 服务器的ip地址,域名 ,上例中的 www.test.con
  3. port 端口号 一般默认是80 可以不写 ,若是其他端口,如8080 必须要书写.
  4. path 访问的资源路径 /search/yuluo
  5. query-string 发送给http的数据 id=1234&name=zhangsan

HTTP消息结构

  • request-line 请求行:请求的种类,请求的路径,http协议版本
  • http header :http 头部信息
  • body : 发送给服务器的query信息

当时用Get方法的时候,body是空的

  1. Get:
  2. Host:
  3. Accept : 浏览器可以接受的媒体类型 / 任意类型
  4. Accept-Encoding: 申明自己接收的编码方法
  5. Accept-Language: 申明自己接收的语言
  6. Cache-Control:Response-Request遵循的缓存机制
  7. Cookie: 将cookie的值发送给服务器
  8. Referer:
  9. User-Agent:客户端使用的系统和浏览器的版本

Post 请求

  1. Post:
  2. Host:
  3. Accept:
  4. Accept-Encoding:
  5. Accept-Language:
  6. Cache-Control:
  7. Cookie:
  8. Referer:
  9. User-Agent:
  10. body :

Get和Post请求的区别

Get 一般用于获取/查询资源信息,请求参数携带在url中
Post 一般用于更新资源信息 ,url中无参数信息

请求方法

  • GET 请求获取Request-URI所标识的资源
  • POST 在Request-URI所标识的资源后附加新的数据
  • HEAD 请求获取由Request-URI所标识的资源的响应消息报头
  • PUT 请求服务器存储一个资源,并用Request-URI作为其标识
  • DELETE 请求服务器删除Request-URI所标识的资源
  • TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
  • CONNECT 保留将来使用
  • OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

常用状态码

  • 200 OK : 表明响应成功,所请求的资源发给浏览器
  • 302 found : 重定向,新的请求放在了Location中,浏览器从Location中提取连接欸,重新请求。
  • 400 Bad Request : 客户端的请求,不能被服务器所理解
  • 401 Unauthorized : 请求未经授权
  • 403 Forbidden : 服务器收到请求,拒绝提供服务
  • 404 Not Found : 找不到请求资源
  • 500 Internal Server Error : 服务器错误
  • 503 Server Unavailable 服务器当前不能处理请求

响应消息

客户端向服务器发送一个请求,服务器以一个状态行作为响应,响应的内容包括:消息协议的版本、成功或者错误的编码、实体元信息以及必要的实体内容。包括:

  • 状态行
  • 消息报头
  • 响应正文

响应报头

响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。

常用的响应报头

  • Location
    Location响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。
  • Server
    Server响应报头域包含了服务器用来处理请求的软件信息。与User-Agent请求报头域是相对应的。

HTTP无状态问题

  1. 通过Cookie 保存状态信息 。每次请求的时候携带cookie的信息,服务端就可以知道你来自同一个浏览器。
  2. 通过session 保存状态信息。session是一种服务器端的机制。

cookie和session的区别

  1. cookie状态保存在客户端,session状态保存在服务器端
  2. cookie是服务器端在客户端机上存储的一小段文本,并随每次请求一起发送到服务端
  3. session是针对每一个用户,变量值保存在服务器中
  4. 从安全角度讲,session的安全性更好一些


少年听雨歌楼上,红烛昏罗帐。  
壮年听雨客舟中,江阔云低,断雁叫西风。
感谢支持!
                                        ---起个名忒难

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 8,328评论 6 152
  • 一、HTTP简介 HTTP(Hyper Text Transfer Protocal:超文本传输协议),这个大家都...
    云淡风轻扬阅读 416评论 0 1
  • Http协议详解 标签(空格分隔): Linux 声明:本片文章非原创,内容来源于博客园作者MIN飞翔的HTTP协...
    Sivin阅读 5,201评论 3 82
  • 最近似乎陷入了迷茫期。工作,被领导责骂,学生成绩没有得到提升。感情,没有合适的人,好像每个人都很好,可是又都不想要...
    西瓜夏天summer阅读 129评论 0 0