浅谈HTTP协议

Http超文本传输协议

Http是应用层协议,是一个基于请求/响应模式的,无状态的协议。

Http使用的是可靠的基于连接的数据传输协议TCP协议。

HTTP1.1版本中,给出了一个“持续连接”的机制,并将其作为HTTP1.1中建立连接的缺省行为。通过这种连接,客户端可以连续发送多个请求,而不用等待每个响应的到来。

 

一、浏览器与服务器通信的过程:

 

二、资源

平时上网所看到的大多数是Web资源。这些资源都寄存在Web服务器上。当我们访问所需资源时,Web服务器会给我们提供。资源包括静态资源(文档、静态页面、音频等)、需要生产内容的软件程序。

1、媒体类型

在众多web资源中,它们有不同的数据类型。HTTP会给每种要通过web传输的资源对象定义一个MIME类型的标签。MIME类型是一种文本标记。表示一种主要的对象类型和一个特定的子类型。中间由一条斜杠来分割。

常见的MIME类型(通用型):

超文本标记语言文本 .html text/html

xml文档 .xml text/xml

XHTML文档 .xhtml application/xhtml+xml

普通文本 .txt text/plain

AVI文件 .avi video/x-msvideo

GZIP文件 .gz application/x-gzip

TAR文件 .tar application/x-tar

任意的二进制数据 application/octet-stream

2、URI

每一个web服务器资源都有一个名字,这个名字叫“资源标识符”。URI有两种形式:URL、URN

 

URL:统一资源定位符,也成为网页地址。

URL的格式由下列三部分组成:

第一部分是协议(或称为服务方式);

第二部分是存有该资源的主机IP地址(有时也包括端口号);

第三部分是主机资源的具体地址。如目录和文件名等。

第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。

现在几乎所有的URI都是URL。

格式:

–http://host[: port] [abs_path]

–其中http表示要通过HTTP协议来定位网络资源。

–Host表示合法的Internet主机域名或IP地址(以点分

十进制格式表示)

–Port用于指定一个端口号,拥有被请求资源的服务器

主机监听该端口的TCP连接。如果port是空,则使用缺

省的端口80。

–abs_path指定请求资源的URI(UniformResource

Identifier,统一资源标识符),如果URL中没有给出

abs_path,那么当它作为请求URI时,必须以“/”的形

式给出。通常这个工作浏览器就帮我们完成了

 

URN:统一资源名称。唯一标识一个实体的标识符。但是不能给出实体的位置。系统可以先在本地寻找一个实体,在它试着在Web上找到该实体之前。它也允许Web位置改变,然而这个实体却还是能够被找到。URN 可以提供一种机制,用于查找和检索定义特定命名空间的架构文件。尽管普通的 URL 可以提供类似的功能,但是在这方面,URN 更加强大并且更容易管理,因为 URN 可以引用多个 URL。与 URL不同,URN 与地址无关。URN 和 URL 都属于 URI。URN在web中主要应用是下拉菜单的制作。使用URN时下拉菜单的易扩展性将会得到很大的提高。

 

三、事务

一个HTTP事务是有一个web客户端的请求和得到一个web服务器端响应组成的。这种通信是通过一种叫作“http报文”的数据块进行传输的。

1、方法

每一种请求HTTP请求报文都包含一种方法。这个方法指示了服务器要执行什么动作(获取页面、运行网关程序、删除文件等)。

 

四种常见的HTTP方法:

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

2)get向特定的资源发出请求。【注意:get方法不应被用于产生“副作用”的操作中,例如在webapp中,其中一个原因是get可能会被网络蜘蛛等随意访问。】

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

4)put向指定资源位置上传其最新内容。

5)delete请求服务器删除Request-URI所标识的资源。

 

2、状态码

每一个HTTP响应报文都会带回一个响应状态码。也就是反应此次请求的结果状态。反应请求是否成功,或者要执行其他动作。常见的状态码有200,404,505等。

 

3、Web页面中可以包含多个对象

应用程序完成一项任务时通常会发布多个HTTP 事务。比如,Web 浏览器会发布一系列HTTP 事务来获取并显示一个包含了丰富图片的Web 页面。浏览器会执行一个事务来获取描述页面布局的HTML“框架”,然后发布另外的HTTP事务来获取每个嵌入式图片、图像面板、Java小程序等。

 

四、报文

客户端通过发送HTTP请求向服务器请求对资源的访问。

HTTP请求由三部分组成,分别是:请求行,消息报头,请求正文

 

请求行:以一个方法符号开头,后面跟着请求URI和协议的版本,以CRLF作为结尾。请求行以空格分隔。除了作为结尾的CRLF外,不允许出现单独的CR或LF字符,格式如下:Method Request-URI HTTP-Version CRLF。例如:GET/test.html HTTP/1.1 (CRLF)

 

与HTTP请求类似,HTTP响应也是由三个部分组成,分别是:状态行,消息报头,响应正文

 

状态行:由协议版本,数字形式的状态代码,相应的状态描述组成,各元素之间以空格分隔,除了结尾的CRLF(回车换行)序列外,不允许出现CR或LF字符。格式如下:HTTP-Version Status-CodeReason-Phrase CRLF

 

状态代码:由三位数字组成,表示请求是否被理解或被满足,状态描述给出了关于状态代码的简短文本描述。

 

状态代码的第一个数字定义了响应的类别,后面两个数字没有具体的分类。第一个数字有五种可能的取值:

–1xx:指示信息—表示请求已接收,继续处理

–2xx:成功—表示请求已经被成功接收,理解,接受

–3xx:重定向—要完成请求必须进行更进一步的操作

–4xx:客户端错误—请求有语法错误或请求无法实现

–5xx:服务器端错误—服务器未能实现合法的请求

 

状态代码

状态描述

说明

200

OK

客户端请求成功

400

Bad Request

由于客户端请求有语法错误,不能被服务器所理解

401

Unauthorized

请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403

Forbidden

服务器收到请求,但是拒绝提供服务,服务器通常会在响应正文中给出不提供服务的原因

404

Not Found

请求的资源不存在,例如:输入了错误的URL

500

Internal

Server Error

服务器发生不可预期的错误,导致无法完成客户的请求

503

Service

Unavailable

服务器当前不能够处理客户端的请求,在一段时间之后,服务可能会恢复正常


ps:以上参考自圣思园张龙老师的教学视频。

另外可以参考http://blog.csdn.net/csh624366188/article/details/8568621

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值