HTTP

HTTP,HyperText Transfer Protocol(超文本传输协议),严谨的译名是(超文本转移协议)。

http协议通俗来讲就是我们在浏览器中浏览web网页这一过程所遵循的规范,正是有了这个规范,我们可以共享文件,我们可以看到页面上的图片、文档等信息。

一、网络模型

为了理解http,我们先来回顾一下网络通信参考模型,这里仅为简单说明,以TCP/IP四层模型为例,由上而下分为:应用层,传输层,网络层,链路层。其中每一层都要遵守特定的规则才能完成通信,这些规则都被称为协议。

1、应用层:向用户提供应用服务,FTP、DNS、HTTP都处于该层。

2、传输层:提供通信双方的数据传输,这里有两个不同的协议,TCP(面向连接 可靠)和UDP(无连接 不可靠)。

3、网络层:主要完成路由的功能,也可以进行网络互连,遵循IP协议。

4、链路层(or网络接口层):连接网络的硬件部分,设备、传输媒介等,也即网络的物理可见部分。

以http为例的网络通信如下图所示:

http通信模型

发送端由上而下,接收端由下及上。

TCP协议负责把大块数据分割成报文段,并将这些数据包进行可靠的传输和管理。为了准确传送数据,使用了三次握手策略(three-way handshaking)。

IP协议一个重要的作用是路由选择,即如何在计算机、路由器等各种网络设备中选择合适的线路传输数据。

另外,传输数据我们肯定要知道接受端是谁,即它在网络中的IP地址和MAC地址,这里涉及到另外两个协议:DNS和ARP(Address Resolution Protocol)。它们分别提供域名到IP地址以及IP地址到MAC地址的映射。

这里简单提到了http通信中涉及到的网络模型和协议,有兴趣的小伙伴可以查阅计算机网络相关书籍深入了解。

二、HTTP通信

1)HTTP协议用于客户端和服务器端的通信,是一种请求/响应模型。客户端发送请求,服务器接受请求并响应,是一种简单的通信协议。接下来一起来看看http请求的过程。

HTTP请求过程

2)http请求方法:

HTTP协议中共定义了八种方法或者叫“动作”get,post,put, options,head,delete,trace,connect,来表明对Request-URI指定的资源的不同操作方式,具体介绍如下:

1、OPTIONS

返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送“*”的请求来测试服务器的功能性

2、HEAD

向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。

3、GET

向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url

4、POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form

5、PUT

向指定资源位置上传其最新内容

6、DELETE

请求服务器删除Request-URL所标识的资源

7、TRACE

回显服务器收到的请求,主要用于测试或诊断

8、CONNECT

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

注意:

1、方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。

2、HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。

下面重点来看Get请求和post请求

get请求

一般来讲get请求是用来信息获取的,它只会获取资源,并不会对资源进行更改,不会影响资源的状态。

get请求一般是以查询字符串的形式附在URL里,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。因此,存在一定的安全隐患

get提交的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。(这一点相信很多人都一直以为是2k的限制,其实并不是啊)

post请求

根据HTTP规范,POST表示可能修改变服务器上的资源的请求。

Post是将表单中的数据放在form的数据体中,表单中的参数值对是通过request body发送给服务器,Post的所有操作对用户来说都是不可见的。

理论上POST没有限制,可传较大量的数据

二者区别

1. get提交,数据放在url里面,所以数据是在浏览器可见的,不安全,而post提交是放在请求头中,用户不可见,所以比较安全;

2. 请求数据的大小,get有一定限制,而post可发送的数据没有限制

3. get一般用来请求数据,不会对数据进行更改,而post用于发送数据,会对数据进行修改


3)HTTP是一种十分简单却应用广泛的网络协议。它有以下显著特点:

1、HTTP是一种无状态协议。即一次请求对应一次响应,并不能保存之前发送的请求或响应。然而却无法满足我们的持续登录状态,为此引入Cookie技术了。客户端保存Cookie信息,下一次请求会携带cookie使服务器端能够识别登录状态。

2、HTTP的持久连接。在HTTP初始版本中,每一次HTTP通信对应一次新的TCP连接,这显然不能满足现在的需求。如果一个页面中有很多图片,每接收完一个图片就要断开TCP连接,则会大大延长页面加载时间和服务器负载。于是HTTP新版本中引入了“持久连接”,只要任意一端未请求断开,则会一直保持TCP连接状态。

三、响应状态码

当浏览器向服务器端发送请求,服务器为了描述请求结果,需借助状态码标示成功或失败信息。

状态码一般由3位数字和原因短语构成。数字第一位指定响应类别,有以下5种:

状态码分类

下面主要介绍我们经常遇到的几种状态码:

1、200 OK

表示请求发送至服务器端,而且被正确处理了。

2、304 Not Modified

表示客户端发送附带条件的请求时,服务器端资源未改变,可直接使用客户端未过期的缓存。

3、400 Bad Request

表示请求中存在错误,需要修改请求再次发送。

4、403 Forbidden

表示服务器拒绝了请求资源的访问,可能是访问权限出现了问题。

5、404 Not found

表示服务器上找不到请求的资源。

6、405 Method not allowed

表示该请求的方法被禁用或不支持,需要换一种方法再次请求。

7、500 Internal Server Error

表示服务器内部发生错误,无法完成请求。

8、503 Service Unavailable

目前无法使用服务器,无法处理请求(由于超载或进行停机维护)

版权印为您的作品印上版权59156334

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

推荐阅读更多精彩内容

  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 8,325评论 6 152
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • Http协议详解 标签(空格分隔): Linux 声明:本片文章非原创,内容来源于博客园作者MIN飞翔的HTTP协...
    Sivin阅读 5,197评论 3 82
  • HTTP概述 超文本传输协议(HTTP,HyperText Transfer Protocol) 是互联网上应用最...
    曹渊说创业阅读 3,831评论 2 61
  • 深入浅出HTTP协议(WEB开发和面试必备) 1.基础概念篇 a.简介 HTTP是Hyper Text Trans...
    半世韶华忆阑珊阅读 1,210评论 0 7