HTTP协议详解

转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx

Author :Jeffrey

引言

HTTP是1个属于应用层的面向对象的说道,由于其简捷、迅速的点子,适用于分布式超媒体音信系列。它于一玖八七年提出,经过几年的使用与提高,得到持续地全盘和壮大。目前在WWW中利用的是HTTP/一.0的第陆版,HTTP/一.一的规范化工作正在展开之中,而且HTTP-NG(Next
Generation of HTTP)的建议已经建议。
HTTP协议的显要特色可归纳如下:
壹.支撑客户/服务器格局。
2.粗略火速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每一种方式规定了客户与服务器联系的种类分化。由于HTTP协议不难,使得HTTP服务器的次第层面小,由此通讯速度非常快。
叁.心灵手巧:HTTP允许传输任意档次的数额对象。正在传输的花色由Content-Type加以标记。
四.无连接:无连接的含义是限量每趟接二连三只处理四个请求。服务器处理完客户的伏乞,并收到客户的回复后,即断开连接。选用那种措施能够省去传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理未有纪念能力。缺乏状态意味着一旦后续处理须要前面包车型地铁音讯,则它必须重传,这样恐怕造成每回一连传送的数据量增大。另1方面,在服务器不须求先前音讯时它的答应就较快。

1、HTTP协议详解之U宝马7系L篇

   
http(超文本传输协议)是1个基于请求与响应形式的、无状态的、应用层的说道,常基于TCP的连天情势,HTTP壹.一本子中付出壹种持续连接的编写制定,绝大部分的Web开发,都以创设在HTTP协议之上的Web应用。

HTTP UCRUISERL
(URubiconL是1种独特类型的UEscortI,包涵了用来查找某些财富的丰盛的音讯)的格式如下:
http://host\[":"port\]\[abs\_path\]
http表示要通过HTTP协议来稳定网络财富;host表示合法的Internet主机域名也许IP地址;port内定3个端口号,为空则使用缺省端口80;abs_path指定请求能源的USportageI;倘若U福睿斯L中绝非交给abs_path,那么当它当做请求U奥迪Q7I时,必须以“/”的款式提交,常常那个工作浏览器自动帮大家做到。
eg:
1、输入:www.guet.edu.cn
浏览器自动转换来:http://www.guet.edu.cn/
2、http:192.168.0.116:8080/index.jsp 

 

二、HTTP协议详解之请求篇

lehu娱乐手机平台网站,    http请求由三有个别组成,分别是:请求行、新闻报头、请求正文

1、请求行以三个办法符号开始,以空格分开,后面跟着请求的U猎豹CS6I和斟酌的版本,格式如下:Method
Request-U宝马X3I HTTP-Version CHummerH贰LF  
其中Method表示请求方法;Request-UXC60I是2个统壹财富标识符;HTTP-Version表示请求的HTTP协议版本;C昂CoraLF表示回车和换行(除了作为最后的CCRUISERLF外,不容许出现单独的C凯雷德或LF字符)。

恳请方法(全体办法全为题写)有各样,各类艺术的诠释如下:
GET     请求获取Request-U揽胜I所标识的财富
POST    在Request-U福睿斯I所标识的财富后附加新的数据
HEAD    请求获取由Request-UHighlanderI所标识的能源的响应音讯报头
PUT     请求服务器存款和储蓄1个财富,并用Request-U奇骏I作为其标识
DELETE  请求服务器删除Request-UCRUISERI所标识的财富
TRACE   请求服务器回送收到的请求消息,首要用以测试或确诊
CONNECT 保留今后选拔
OPTIONS 请求查询服务器的性质,只怕查询与资源相关的选择和须要
选拔举例:
GET方法:在浏览器的地方栏中输入网站的不二诀窍访问网页时,浏览器采纳GET方法向服务器获取财富,eg:GET
/form.html HTTP/壹.1 (CRubiconLF)

POST方法供给被呼吁服务器接受附在请求前边的数据,常用于提交表单。
eg:POST /reg.jsp HTTP/ (CRLF)
Accept:image/gif,image/x-xbit,… (CRLF)

HOST:www.guet.edu.cn (CRLF)
Content-Length:22 (CRLF)
Connection:Keep-Alive (CRLF)
Cache-Control:no-cache (CRLF)
(C中华VLF)         //该CCRUISERLF表示新闻报头已经竣事,在此之前为音讯报头
user=jeffrey&pwd=123四  //此行以下为付出的数据

HEAD方法与GET方法大概是相同的,对于HEAD请求的答复部分来说,它的HTTP尾部中带有的新闻与通过GET请求所得到的音信是同壹的。利用那个点子,不必传输整个能源内容,就能够赢得Request-U中华VI所标识的财富的音讯。该方法常用于测试超链接的实惠,是或不是能够访问,以及近日是否更新。
二、请求报头后述
3、请求正文(略) 

 

叁、HTTP协议详解之响应篇

    在接到和释疑请求新闻后,服务器重临2个HTTP响应音讯。

HTTP响应也是由多个部分组成,分别是:状态行、新闻报头、响应正文
1、状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
在那之中,HTTP-Version表示服务器HTTP协议的本子;Status-Code表示服务器发回的响应状态代码;Reason-粉爱奥尼亚沙滩se表示情状代码的公文描述。
状态代码有肆人数字组合,第二个数字定义了响应的门类,且有多样可能取值:
一xx:提示新闻–表示请求已选择,继续处理
二xx:成功–表示请求已被成功接收、通晓、接受
叁xx:重定向–要形成请求必须开始展览更进一步的操作
四xx:客户端错误–请求有语法错误或请求不可能落到实处
五xx:服务器端错误–服务器未能贯彻合法的央求
普遍意况代码、状态描述、说明:
200 OK      //客户端请求成功
400 Bad Request  //客户端请求有语法错误,不能够棉被和衣服务器所精晓
40一 Unauthorized
//请求未经授权,这么些情形代码必须和WWW-Authenticate报头域一起使用 
40三 Forbidden  //服务器收到请求,然则拒绝提供劳动
404 Not Found  //请求能源不存在,eg:输入了不当的U库罗德L
500 Internal Server Error //服务器发生不可预期的一无可取
50三 Server Unavailable 
//服务器当前不能够处理客户端的伏乞,一段时间后可能苏醒平日
eg:HTTP/1.1 200 OK (CRLF)

2、响应报头后述

三、响应正文正是服务器再次来到的能源的剧情 

肆、HTTP协议详解之新闻报头篇

   
HTTP音信由客户端到服务器的请求和服务器到客户端的响应组成。请求新闻和响应新闻都以由初阶行(对于请求新闻,先导行就是伸手行,对于响应音讯,先河行正是场地行),新闻报头(可选),空行(唯有CPAJEROLF的行),新闻正文(可选)组成。

HTTP音信报头包涵常见报头、请求报头、响应报头、实体报头。
每2个报头域都是由名字+“:”+空格+值
组成,消息报头域的名字是大小写非亲非故的。

1、普通报头
在日常报头中,有少数报头域用于全数的伸手和响应音讯,但并不用于被传输的实业,只用于传输的新闻。
eg:
Cache-Control  
用于钦点缓存指令,缓存指令是单向的(响应中出现的缓存指令在哀告中未必会出现),且是单独的(三个音讯的缓存指令不会影响另一个音信处理的缓存机制),HTTP1.0采取的切近的报头域为Pragma。
伸手时的缓存指令包罗:no-cache(用于提醒请求或响应音信无法缓存)、no-store、max-age、max-stale、min-fresh、only-if-cached;
响应时的缓存指令包蕴:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage.
eg:为了提示IE浏览器(客户端)不要缓存页面,服务器端的JSP程序能够编写如下:response.sehHeader(“Cache-Control”,”no-cache”);
//response.setHeader(“Pragma”,”no-cache”);功用相当于上述代码,日常两者//合用
那句代码将在出殡和埋葬的响应音信中设置普通报头域:Cache-Control:no-cache

Date普通报头域表示音信发出的日子和岁月

Connection普通报头域允许发送钦定连接的选项。例如钦定连接是连接,或许钦点“close”选项,公告服务器,在响应实现后,关闭连接

二、请求报头
伸手报头允许客户端向劳动器端传递请求的叠加消息以及客户端本身的音信。
常用的请求报头
Accept
Accept请求报头域用于钦点客户端接受什么项指标新闻。eg:Accept:image/gif,注解客户端希望接受GIF图象格式的能源;Accept:text/html,注脚客户端希望接受html文本。
Accept-Charset
Accept-Charset请求报头域用于内定客户端接受的字符集。eg:Accept-Charset:iso-8859-1,gb2312.假若在伏乞音讯中绝非设置那几个域,缺省是别的字符集都足以接受。
Accept-Encoding
Accept-Encoding请求报头域类似于Accept,但是它是用于内定可承受的情节编码。eg:Accept-Encoding:gzip.deflate.若是请求新闻中绝非安装那个域服务器假设客户端对各个内容编码都能够承受。
Accept-Language
Accept-Language请求报头域类似于Accept,不过它是用来钦命1种自然语言。eg:Accept-Language:zh-cn.借使请求音信中绝非设置这些报头域,服务器假诺客户端对各个语言都得以接受。
Authorization
Authorization请求报头域首要用于注明客户端有权查看有个别能源。当浏览器访问多个页面时,倘若接收服务器的响应代码为40一(未授权),能够发送四个富含Authorization请求报头域的请求,须求服务器对其展开认证。
Host(发送请求时,该报头域是不可缺少的)
Host请求报头域首要用来钦赐被呼吁能源的Internet主机和端口号,它1般从HTTP
UWranglerL中领到出来的,eg:
大家在浏览器中输入:http://www.guet.edu.cn/index.html
浏览器发送的呼吁音讯中,就会蕴藏Host请求报头域,如下:
Host:www.guet.edu.cn
这边使用缺省端口号80,若钦定了端口号,则改为:Host:www.guet.edu.cn:钦定端口号
User-Agent
咱俩上网登6论坛的时候,往往会看到某个迎接音信,当中列出了您的操作系统的称号和本子,你所运用的浏览器的称呼和版本,那往往让无数人觉得很神奇,实际上,服务器应用程序便是从User-Agent那些请求报头域中赢获得这个新闻。User-Agent请求报头域允许客户端将它的操作系统、浏览器和别的性质告诉服务器。但是,这些报头域不是不能缺少的,固然大家相依为命编辑叁个浏览器,不行使User-Agent请求报头域,那么服务器端就不能得知大家的音信了。
恳请报头举例:
GET /form.html HTTP/1.1 (CRLF)
Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/*
(CRLF)
Accept-Language:zh-cn (CRLF)
Accept-Encoding:gzip,deflate (CRLF)
If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF)
If-None-Match:W/”80b1a4c018f3c41:8317″ (CRLF)
User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF)
Host:www.guet.edu.cn (CRLF)
Connection:Keep-Alive (CRLF)
(CRLF)

3、响应报头
1呼百应报头允许服务器传递不可能放在状态行中的增大响应消息,以及有关服务器的消息和对Request-UHummerH二I所标识的财富开展下一步访问的音讯。
常用的响应报头
Location
Location响应报头域用于重定向接受者到三个新的地点。Location响应报头域常用在转换域名的时候。
Server
Server响应报头域包蕴了服务器用来处理请求的软件消息。与User-Agent请求报头域是相呼应的。上边是
Server响应报头域的贰个例证:
Server:Apache-Coyote/1.1
WWW-Authenticate
WWW-Authenticate响应报头域必须被含有在40壹(未授权的)响应信息中,客户端收到401响应音信时候,并发送Authorization报头域请求服务器对其开始展览求证时,服务端响应报头就包涵该报头域。
eg:WWW-Authenticate:Basic realm=”Basic Auth Test!” 
//能够见见服务器对请求财富使用的是骨干注解机制。

四、实体报头
恳请和响应新闻都得以传递多个实体。一个实体由实体报头域和实业正文组成,但并不是说实体报头域和实体正文要在1块发送,可以只发送实体报头域。实体报头定义了有关实体正文(eg:有无实体正文)和呼吁所标识的资源的元音信。
常用的实业报头
Content-Encoding
Content-Encoding实体报头域被当作媒体类型的修饰符,它的值提示了早已被运用到实体正文的增大内容的编码,因此要博取Content-Type报头域中所引用的媒体类型,必须利用相应的解码机制。Content-Encoding那样用于记录文档的压缩方法,eg:Content-Encoding:gzip
Content-Language
Content-Language实体报头域描述了能源所用的自然语言。未有安装该域则以为实体内容将提须求全体的言语阅读
者。eg:Content-Language:da
Content-Length
Content-Length实体报头域用于指明实体正文的长短,以字节格局存款和储蓄的10进制数字来表示。
Content-Type
Content-Type实体报头域用语指明发送给接收者的实业正文的传播媒介类型。eg:
Content-Type:text/html;charset=ISO-8859-1
Content-Type:text/html;charset=GB2312
Last-Modified
Last-Modified实体报头域用于提醒财富的终极修改日期和时间。
Expires
Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在1段时间以往更新缓存中(再次走访曾走访过的页面时,直接从缓存中加载,缩小响应时间和减低服务器负荷)的页面,我们可以使用Expires实体报头域钦赐页面过期的时刻。eg:Expires:Thu,一五Sep 2006 16:二三:12 阿奇霉素T
HTTP一.一的客户端和缓存必须将别的违法的日子格式(包涵0)看作已经过期。eg:为了让浏览器不要缓存页面,大家也得以应用Expires实体报头域,设置为0,jsp中等射程序如下:response.setDateHeader(“Expires”,”0″);

 

五、利用telnet观望http协议的简报进度

    实验目标及原理:
   
利用MS的telnet工具,通过手动输入http请求消息的方法,向服务器发出请求,服务器收到、解释和承受请求后,会回去贰个响应,该响应会在telnet窗口上出示出来,从而从感觉上强化对http协议的报纸发表进程的认识。

    实验步骤:

1、打开telnet
1.1 打开telnet
运行–>cmd–>telnet

1.二 打开telnet回显著效果率
set localecho

贰、连接服务器并发送请求
2.1 open www.guet.edu.cn 80 
//注意端口号不可能大约

    HEAD /index.asp HTTP/1.0
    Host:www.guet.edu.cn
    
   /*咱俩得以变换请求方法,请求临安电子主页内容,输入消息如下*/
    open www.guet.edu.cn 80 
   
    GET /index.asp HTTP/一.0  //请求能源的情节
    Host:www.guet.edu.cn  

2.2 open www.sina.com.cn 80 
//在指令提醒标志下直接输入telnet www.sina.com.cn 80
    HEAD /index.asp HTTP/1.0
    Host:www.sina.com.cn
 

三 实验结果:

3.壹 请求消息二.一到手的响应是:

HTTP/1.壹 200 OK                                             
//请求成功
Server: Microsoft-IIS/5.0                                   
//web服务器
Date: Thu,08 Mar 200707:17:51 GMT
Connection: Keep-Alive                                 
Content-Length: 23330
Content-Type: text/html
Expries: Thu,08 Mar 2007 07:16:51 GMT
Set-Cookie: ASPSESSIONIDQAQBQQQB=BEJCDGKADEDJKLKKAJEOIMMH; path=/
Cache-control: private

//能源内容大致

三.2 请求音信贰.贰收获的响应是:

HTTP/1.0 40肆 Not Found       //请求战败
Date: Thu, 08 Mar 2007 07:50:50 GMT
Server: Apache/2.0.54 <Unix>
Last-Modified: Thu, 30 Nov 2006 11:35:41 GMT
ETag: “6277a-415-e7c76980”
Accept-Ranges: bytes
X-Powered-By: mod_xlayout_jh/0.0.1vhs.markII.remix
Vary: Accept-Encoding
Content-Type: text/html
X-Cache: MISS from zjm152-78.sina.com.cn
Via: 1.0 zjm152-78.sina.com.cn:80<squid/2.6.STABLES-20061207>
X-Cache: MISS from th-143.sina.com.cn
Connection: close

错过了跟主机的再而三

按任意键继续…

四 .注意事项:一、出现输入错误,则请求不会马到成功。
          二、报头域不分大小写。
         
三、越来越深一步领悟HTTP协议,能够查阅TiguanFC261六,在http://www.letf.org/rfc上找到该文件。
          肆、开发后台程序必须驾驭http协议

六、HTTP协议相关技能填补

    1、基础:
   
高层协商有:文件传输协议FTP、电子邮件传输协议SMTP、域名种类服务DNS、网络情报传输协议NNTP和HTTP协议等
中介由三种:代理(Proxy)、网关(Gateway)和通道(Tunnel),1个代理依照U福特ExplorerI的断然格式来经受请求,重写全体或局地新闻,通过
UEvoqueI的标识把已格式化过的伸手发送到服务器。网关是1个接受代理,作为壹些别的服务器的上层,并且只要非得的话,能够把请求翻译给下层的服务器协议。三个坦途作为不转移音信的八个接二连三之间的中继点。当报导需求经过2当中介(例如:防火墙等)或然是中介不能够辨识新闻的始末时,通道平日被选用。
    
代理(Proxy):一当中档程序,它能够充当叁个服务器,也足以充当一个客户机,为任何客户机建立请求。请求是由此或然的翻译在里头或通过传递到别的的
服务器中。二个代理在发送请求音讯以前,必须表明并且只要可能重写它。代理日常作为通过防火墙的客户机端的派别,代理仍是能够当做3个扶持应用来通过磋商处
理未有被用户代理完结的央浼。
网关(Gateway):2个看成别的服务器中间媒介的服务器。与代理区别的是,网关接受请求就好象对被呼吁的财富来说它正是源服务器;发出请求的客户机并未发现到它在同网关打交道。
网关日常作为通过防火墙的服务器端的派别,网关还足以视作贰个合计翻译器以便存取那几个存款和储蓄在非HTTP系统中的能源。
   
通道(Tunnel):是当做八个延续中继的中介程序。1旦激活,通道便被认为不属于HTTP通信,就算通道或许是被一个HTTP请求开端化的。当被中继
的连日两端关闭时,通道便未有。当一个黑社会(Portal)必须存在或中介(Intermediary)无法解释中继的电视发表时通道被平日应用。

2、协议分析的优势—HTTP分析器检验互联网攻击
以模块化的法门对高层磋商进行分析处理,将是未来侵略检查实验的可行性。
HTTP及其代理的常用端口80、312八和8080在network部分用port标签实行了明确

三、HTTP协议Content Lenth限制漏洞造成拒绝服务攻击
选用POST方法时,能够安装ContentLenth来定义必要传送的数量长度,例如ContentLenth:99999999玖,在传递完结前,内部存款和储蓄器不会自由,攻击者能够利用那一个毛病,两次三番向WEB服务器发送垃圾数据直至WEB服务器内部存款和储蓄器耗尽。那种攻击方法基本不会留给痕迹。
http://www.cnpaf.net/Class/HTTP/0532918532667330.html

四、利用HTTP协议的特征开始展览拒绝服务攻击的有个别盘算
劳动器端忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的平常化请求(毕竟客户端的例行请求比率至极之小),此时从常规客户的角度看来,服务器失去响应,那种情形咱们誉为:服务器端受到了SYNFlood攻击(SYN受涝攻击)。
而Smurf、TearDrop等是选择ICMP报文来Flood和IP碎片攻击的。本文用“不奇怪连接”的艺术来爆发拒绝服务攻击。
1九端口在早期已经有人用来做Chargen攻击了,即Chargen_Denial_of_Service,可是!他们用的主意是在两台Chargen
服务器之间产生UDP连接,让服务器处理过多消息而DOWN掉,那么,干掉1台WEB服务器的条件就务须有贰个:壹.有Chargen服务二.有HTTP
服务
艺术:攻击者伪造源IP给N台Chargen发送连接请求(Connect),Chargen接收到连年后就会回到每秒72字节的字符流(实际上根据互连网实情,那么些速度越来越快)给服务器。

5、Http指纹识别技术
  
Http指纹识其他原理差不离上也是千篇1律的:记录区别服务器对Http协议执行中的微小不相同进行识别.Http指纹识别比TCP/IP堆栈指纹识别复杂许
多,理由是定制Http服务器的安插文件、扩张插件或机件使得更改Http的响应信息变的很简单,那样使得识别变的不方便;然则定制TCP/IP堆栈的行事
要求对骨干层举办改动,所以就便于识别.
     
要让服务器重回差异的Banner音讯的装置是相当粗略的,象Apache那样的盛开源代码的Http服务器,用户能够在源代码里修改Banner音信,然
后重起Http服务就卓有功能了;对于从未驾驭源代码的Http服务器比如微软的IIS或许是Netscape,能够在寄放Banner新闻的Dll文件中期维修改,相关的小说有议论的,那里不再赘言,当然如此的改动的意义照旧不错的.其它一种模糊Banner新闻的方法是选取插件。
常用测试请求:
一:HEAD/Http/一.0发送为主的Http请求
贰:DELETE/Http/一.0出殡和埋葬那多少个不被允许的乞求,比如Delete请求
三:GET/Http/三.0发送多个不法版本的Http协议请求
肆:GET/JUNK/一.0出殡和埋葬1个不科学原则的Http协议请求
Http指纹识别工具Httprint,它经过应用总结学原理,组合模糊的逻辑学技术,能很实惠的规定Http服务器的类型.它能够被用来收集和剖析分化Http服务器产生的签字。

6、其余:为了增强用户采纳浏览器时的性质,现代浏览器还扶助并发的拜访方式,浏览四个网页时同时建立多少个一连,以便捷获得1个网页上的五个图标,那样能更敏捷完毕全套网页的传输。
HTTP一.1中提供了那种持续连接的办法,而下一代HTTP协议:HTTP-NG更平添了关于会话控制、丰盛的剧情协商等方法的支撑,来提供
更加高成效的连日。

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图