您的位置:首页 > 理论基础 > 计算机网络

http协议总结

2013-03-21 20:18 169 查看

声明:以写内容很多取自某培训机构课件,感觉不错,加以整理与大家分享也方便日后自己复习

引言: 

 有没有想过,为什么你在浏览器中填入一串地址,然后ENTER就能打开一个网页,为什么不是别的网页。服务器怎么知道用户请求的是哪个网页。答案就是HTTP协议。

  HTTP协议是一种基于TCP/IP的应用层协议,掌握HTTP协议对于web开发是非常重要的,笔者最近总结了一下与大家分享也为自己以后方便复习。客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式。

HTTP协议版本

  有:1.0,1.1两个版本。在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源,之后就会断开链接。HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。请看下图:


图1

HTTP请求

  客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:一个请求行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。如下图所示:


图2

注:上图是通过一个IE插件实现的httpWatch,可自行搜索下载。

请求行用于描述客户端的请求方式、请求的资源名称,以及使用的HTTP协议版本号;

消息头用于描述客户端请求哪台主机,以及客户端的一些环境信息等。如上图所示,我们是通过post方式,使用的HTTP版本号是http1.1,主机是:localhost,即本地主机。实体信息:test。

常用请求消息头

Accept: text/html,image/* 说明浏览器接受的数据类型

Accept-Charset: ISO-8859-1 说明浏览器使用的字符编码

Accept-Encoding: gzip,compress 说明浏览器支持的压缩格式

Accept-Language: en-us,zh-cn 说明浏览器的语言环境

Host: www.it315.org:80 说明浏览器要访问的主机名

If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT 文件的修改事件,用于做缓存

Referer: http://www.it315.org/index.jsp 说明请求来自哪里,防盗链 (做实验)

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) 说明浏览器内核

Cookie 向服务器发送Cookie

Connection: close/Keep-Alive 说明连接状态

Date: Tue, 11 Jul 2000 18:23:51 GMT 客户端计算机时间

实体内容(消息体)

浏览器向服务器发送的数据,例如上传的文件、提交的表单等

1)HTTP请求方式

  POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT。但常用的只有post,get。其它几种方式基本都用不到,这两种方式也有很大的区别以及不同的适用场景。

a)get方式

  通过get方式提交的数据会在浏览器地址栏里有显示,会在请求的URL地址后以?的形式带上交给服务器的这些数据,多个数据之间以&进行分隔。在URL地址后附带的参数是有限制的,其数据容量不能超过1K。默认情况下浏览器向服务器提交的数据都是此种方式。正因为这样get方式只适合提交一些数据量小的对安全性要求不高的数据。例如上传文件,用户登录等都不能通过此种方式。

b)post方式

  与get方式相比post方式没有对提交数据的大小限制,而且所提交的数据也不会在浏览器地址栏中显示。这些数据会放在http请求中的实体信息中,如:图2中的user=test。

为了比较这两种方式,我写了一个web测试项目,在此工程中有一个1.html。关键代码如下:

<body>
<form method="post" action="/1.html">
<input type="text" name="user" /> <input type="submit" value="submit" />
</form>
</body>


body中有一个表单,通过form的method指定表单的提交方式分别为post,get。运行情况如下:

get方式:



post方式:



请大家注意观察上面两幅图的地址栏与httpwatch中的请求头,实体信息行。

http响应消息

http响应消息的内容包括: 一个状态行(类比 http请求信息的”请求行”)、若干消息头、以及实体内容 ,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。

状态行用于描述服务器对请求的处理结果。

消息头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据

实体内容代表服务器向客户端回送的数据



http常用响应头

Location: http://www.it315.org/index.jsp 通知浏览器去访问另一个资源

Server:apache tomcat 说明服务器

Content-Encoding: gzip 通知浏览器数据的压缩格式

Content-Length: 80 通知浏览器发送数据的长度

Content-Language: zh-cn 通知浏览器语言环境

Content-Type: text/html; charset=GB2312 通知浏览器文件的格式和编码

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 告诉浏览器文件的修改时间

Refresh: 1;url=http://www.it315.org 通知浏览器自动刷新

Content-Disposition: attachment; filename=aaa.zip 通知浏览器以下载的方式打开资源

Set-Cookie:SS=Q0=5Lb_nQ; path=/search 发cookie

Expires: -1//3种禁止缓存的头字段

Cache-Control: no-cache

Pragma: no-cache

Connection: close/Keep-Alive 连接状态

Date: Tue, 11 Jul 2000 18:23:51 GMT 系统时间

  就写到这吧,以前都是看别人写博客,自己写了才发现写博客也挺考验人的毅力的。坚持。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: