标签:http协议
HTTP 协议
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。是一种详细规定了浏览器和万维网
(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。HTTP
是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。
在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容。TCP/IP协议是分层的,从底层至应用层分别
为:物理层、链路层、网络层、传输层和应用层,如下图所示:
从应用层至物理层,数据是一层层封装,封装的方式一般都是在原有数据的前面加一个数据控制头,数据封
装格式如下:
HTTP 是一种请求/响应式的协议。一个客户机与服务器建立连接后,发送一个请求给服务器;服务器接到请
求后,给予相应的响应信息。HTTP 的第一版本 HTTP/0.9是一种简单的用于网络间原始数据传输的协议;
HTTP/1.0由 RFC 1945 定义 ,在原 HTTP/0.9 的基础上,有了进一步的改进,允许消息以类 MIME 信息格式
存在,包括请求/响应范式中的已传输数据和修饰符等方面的信息;HTTP/1.1(RFC2616) 的要求更加严格以确保
服务的可靠性,增强了在HTTP/1.0 没有充分考虑到分层代理服务器、高速缓冲存储器、持久连接需求或虚拟主
机等方面的效能;安全增强版的 HTTP (即S-HTTP或HTTPS),则是HTTP协议与安全套接口层(SSL)的结合,
使HTTP的协议数据在传输过程中更加安全。
HTTP协议的主要特点可概括如下:
1、支持客户/服务器模式。支持基本认证和安全认证。
2、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、
POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序
规模小,因而通信速度很快。
3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4、HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客
户的应答后,即断开连接。采用这种方式可以节省传输时间。HTTP 1.1使用持续连接:不必为每个
web对象创建一个新的连接,一个连接可以传送多个对象。
5、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果
后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
HTTP协议是无状态的和Connection: keep-alive的区别:
无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另一方 面讲,打开
一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。HTTP
是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP
协议(无连接)。从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打
开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器
上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以
在不同的服务器软件(如Apache)中设定这个时间。
工作流程
一次HTTP操作称为一个事务,其工作过程可分为四步:1)首先客户机与服务器需要建立连接。只要
单击某个超级链接,HTTP的工作开始。2)建立连接后,客户机发送一个请求给服务器,请求方式的格式
为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内
容。3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个
成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。4)客户端接收服务器所
返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。如果在以上过程中的某一
步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP
自己完成的,用户只要用鼠标点击,等待信息显示就可以了。
三.HTTP协议结构
http报文是由一行一行的简单字符串组成的。HTTP报文都是纯文本,不是二进制代码。客户端连上服务器 后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如
下内容:一个请求行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体
内容之间要用空行隔开。每行都以一个由两个字符组成的终止序列作为结束,其中包括一个回车符(ASCII码
13)和一个换行符(ASCII码10)这个终止序列可以写作CRLF。如下所示:
这个方法告诉服务器应该执行的操作
这个请求url描述了要对哪个资源执行这个方法
http版本号用来告诉服务器客户端使用的是那种HTTP
请求行中的GET称之为请求方式,请求方式有:
POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用的有:POST、GET 不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表
现在数据传递上,客户 端通过这两种方式都可以带一些数据给服务器:如请求方式为GET方式,则可以在
请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:
GET /mail/1.html?name=abc&password=xyz HTTP/1.1GET方式的特点:在URL地址后附带的参数是
有限制的,其数据容量不能超过1K。如请求方式为POST方式,则可以在请求的实体内容中向服务器发送
数据,例如:
POST /servlet/ParamsServlet HTTP/1.1
Host:
Content-Type: application/x-www-form-urlencoded
Content-Length: 28
name=abc&password=xyz
Post方式的特点:传送的数据量无限制。
常用的请求消息头:
五.HTTP响应报文
一个HTTP响应代表服务器向客户端回送的数据,它包括:
一个状态行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的, 消息头和实体内容之间
要用空行隔开。
状态行
格式: HTTP版本号 状态码 原因叙述<CRLF>
举例:HTTP/1.1 200 OK
状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:
比如,让浏览器去访问另一个地址:实现重定向
1.http响应——响应行
包含了一个http版本、状态码以及描述该状态码的文本形式短语。
常用的响应头
1.通用消息头
2.请求消息头
3.响应消息头
常见的MIME类型
超文本标记语言文本 .html,.html text/html
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
本文出自 “德泽无忧” 博客,谢绝转载!
标签:http协议
原文地址:http://dezewuyou.blog.51cto.com/2628602/1812256