一起学习HTTP协议

Home / 博客 / 一起学习HTTP协议

网络出现后,带给人们生活上的改变是,我们可以随时随地在www网络浏览器网页上获取想要的信息。由于www内容丰富,浏览方便,也已经成为互联网重要要的服务。

那么超文本传输协议HTTP(Hypertext transfer protocol),是一种从www服务器传输超文本到本地浏览器的传送协议。简单地说,HTTP协议就是用户通过浏览器访问Web服务器的方式,并具备B/S(Browser/Server )结构。

今天就来与大家分享一下HTTP协议的学习。

  • 在TCP/IP协议栈中的位置

HTTP协议承载于TCP协议之上,是一个应用层协议。有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示:

HTTP1

  • HTTP的请求响应模型

HTTP2

HTTP协议永远都是客户端发起请求,服务器回送响应。HTTP协议是一个无状态的协议,不会记得“上一个请求是什么”。

  • 协议流程

HTTP3

一次HTTP操作称为一个事务,其工作过程可分为四步:

1)建立连接。只要单击某个超级链接,HTTP的工作开始。

2)客户端发送请求。请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

3)服务器响应。其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

4)连接断开。当服务器的响应信息显示到客户端的浏览器上,一次HTTP操作结束

那么,先来看一下建立连接的过程:

  • 建立连接

HTTP/1.0 每次请求都需要建立新的TCP连接,连接不能复用。HTTP/1.1 新的请求可以在上次请求建立的TCP连接之上发送,连接可以复用。

请求消息格式

请求消息格式如下所示:

请求行 通用信息头|请求头|实体头 CRLF(回车换行) 实体内容

其中“请求行”为:请求行 = 方法 [空格] 请求URI [空格] 版本号 [回车换行]

HTTP4

请求方法

HTTP的请求方法常用如下几种:

1、GET:对服务器资源的简单请求,从服务器上获取数据。

2、POST:向服务器传送数据,主要是向服务器提交表单数据,尤其是大批量的数据。

3、HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头。

那么,相对应的响应过程也与连接过程类似:

  • HTTP响应

响应消息格式

HTTP响应消息的格式如下所示:

状态行 通用信息头|响应头|实体头 CRLF 实体内容

其中:状态行 = 版本号 [空格] 状态码 [空格] 原因 [回车换行]

HTTP5

 

HTTP的状态响应码

200段是成功,300段需要对请求做进一步的处理,400段表示客户端请求错误,500段是服务器的错误。

① 客户方错误

100  继续:表示已收到请求的第一部分,正在等待其余部分。

101  交换协议:请求者已要求服务器切换协议,服务器已确认并准备切换。

② 成功

200  OK:表示服务器提供了请求的网页。

201  已创建:请求成功并且服务器创建了新的资源。

202  接收:表示服务器提供了请求的网页。

203  非认证信息:服务器已成功处理了请求,但返回的信息可能来自另一来源。

204  无内容:服务器成功处理了请求,但没有返回任何内容。

205  重置内容:服务器没有返回任何内容。此响应要求请求者重置文档视图。

206  部分内容:服务器成功处理了部分 GET 请求。

③ 重定向

300  多路选择:服务器可根据请求者选择一项操作,或提供操作列表供请求者选择。

301  永久转移:请求的网页已永久移动到新位置。

302  暂时转移:服务器目前从不同位置的网页响应请求,但申请人应当继续使用原有位置来响应以后的请求。

303  参见其它:请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。

304  未修改:自从上次请求后,请求的网页未修改过。

305  使用代理:请求者只能使用代理访问请求的网页。

307  临时重定向:服务器目前从不同位置的网页响应请求,但请求者应当继续使用原有位置来响应以后的请求。

④ 客户方错误

400  错误请求:服务器不理解请求的语法。

401  未认证:此页要求授权。

402  需要付费。

403  禁止:服务器拒绝请求。

404  未找到:服务器找不到请求的网页。

405  方法不允许:禁用请求中指定的方法。

406  不接受:无法使用请求的内容特性响应请求的网页。

407  需要代理认证:此状态码与 401 类似,但指定请求者必须授权使用代理。

408  请求超时:服务器等候请求时发生超时。

409  冲突:服务器在完成请求时发生冲突。

410  已删除:请求的资源永久删除后,服务器返回此响应。

411  需要长度:服务器不接受不含有效内容长度标头字段的请求。

412  条件失败:服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。

413  请求实体太大:服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。

414  请求URI太长:请求的 URI(通常为网址)过长,服务器无法处理。

415  不支持媒体类型:请求的格式不受请求页面的支持。

416  请求范围不符合:如果页面无法提供请求的范围,则服务器会返回此状态码。

417  未满足期望值:服务器未满足”期望”请求标头字段的要求。

⑤ 服务器错误

500  服务器内部错误:服务器遇到错误,无法完成请求。

501  未实现:服务器不具备完成请求的功能。

502  网关失败:服务器作为网关或代理,从上游服务器收到无效响应。

503  服务不可用:服务器目前无法使用(由于超载或停机维护)。

504  网关超时:服务器作为网关或代理,但是没有及时从上游服务器收到请求。

505  HTTP版本不支持:服务器不支持请求中所用的 HTTP 协议版本。

  • 通过HTTP协议搭建局域网CS模型

下面以WIN7为例通过HTTP协议搭建局域网客户端-服务器模型,让客户端去访问同一网段内的服务器,服务器已通过HTML语言制作简单的网页供客户端访问。

(1)打开控制面板——程序——程序和功能,点击左边的“打开或关闭windows功能”。

HTTP6

 

(2) 再选择其中的“Internet信息服务”,主要是“Web管理工具”、“万维网服务”FTP服务器。

HTTP7

 

(3)点击确定,等待安装。待安装完成后,再依次打开 控制面板——系统和安全——管理工具(或按Win+R键在运行窗口中输入“inetmgr”),发现有一个“Internet 信息服务(IIS)管理器”(如果以前没装IIS就没有这个工具)。打开它,依次找到“网站”,默认是有一个Default WebSite 站点的。

HTTP8

 

(4)接下来启动网站。点击Default Web Site,窗口右边有一个“启动”,点击它启动网站(有时网站默认是开启的,就不用了)。然后打开浏览器,在地址栏输入 localhost ,回车。这个时候如果出现如下的界面就表明成功了。

HTTP9

 

(5)当web服务器搭建成功后,我们下一步所要做的就是把我们开发的网站安装到Web服务器的目录中。一般情况下,当Web服务器安装完成后,会创建路径“%系统根目录%inetpub/wwwroot”,将我们开发的网站COPY到该路径下。即可实现本地访问该网站。

HTTP10

 

(6)设置防火墙,让局域网当其它计算机也能访问本地网站资源。具体方法:打开控制面板,选择“系统和安全”,点击“允许程序通过Windows防火墙”,在弹出的对话框中勾选“万维网服务HTTP”右侧的两个复选框,最后点击确定退出。

HTTP11

 

(7)在局域网中其它计算机上,打开浏览器,输入”http://web服务器的IP地址/”按回车键,就可以访问服务器上的资源”。 经过以上步骤的设置,局域网中的其它用户就可以通过浏览器访问你所共享的web资源了!

HTTP12

 

 

感谢阅读!

更多内容与我们交流:

WIZnet中文官方网站:http://www.iwiznet.cn

WIZnet企业官方微博:http://weibo.com/wiznet2012