HTTP协议SSL协议HTTPS协议
⽂章⽬录
1、HTTP协议
1.1、HTTP 简介
HTTP协议是Hyper Text Transfer Protocol(超⽂本传输协议)的缩写,是⽤于从万维⽹(WWW:World Wide Web )服务器传输超⽂本到本地浏览器的传送协议。
HTTP是⼀个基于TCP/IP通信协议来传递数据(HTML ⽂件, 图⽚⽂件, 查询结果等)
HTTP ⼯作原理
HTTP协议⼯作于客户端-服务端架构之上。浏览器作为HTTP客户端通过URL向HTTP服务端(即WEB服务器)发送所有请求Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等
Web服务器根据接收到的请求后,向客户端发送响应信息
HTTP默认端⼝号为80,也可以改为8080或者其他端⼝
HTTP注意事项:
HTTP是⽆连接的 :⽆连接的含义是限制每次连接只处理⼀个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采⽤这种⽅式可以节省传输时间
HTTP是媒体独⽴的 :这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使⽤适合的MIME-type内容类型
HTTP是⽆状态的 :HTTP协议是⽆状态协议。⽆状态是指协议对于事务处理没有记忆能⼒。缺少状态意味着如果后续处理需要前⾯的信息,则它必须重传,这样可能导致每次连接传送的数据量增⼤。另⼀⽅⾯,在服务器不需要先前信息时它的应答就较快
以下图表展⽰了HTTP协议通信流程:
1.2、HTTP 消息结构
HTTP是基于客户端/服务端(C/S)的架构模型,通过⼀个可靠的链接来交换信息,是⼀个⽆状态的请求/响应协议。
⼀个HTTP"客户端"是⼀个应⽤程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送⼀个或多个HTTP请求的⽬的。
⼀个HTTP"服务器"同样也是⼀个应⽤程序(通常是⼀个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。
HTTP使⽤统⼀资源标识符(Uniform Resource Identifiers, URI)来传输数据和建⽴连接
⼀旦建⽴连接后,数据消息就通过类似Internet邮件所使⽤的格式[RFC5322]和多⽤途Internet邮件扩展(MIME)[RFC2045]来传送。
客户端请求消息
客户端发送⼀个HTTP请求到服务器的请求消息包括以下格式:请求⾏(request line)、请求头部(header)、空⾏和请求数据四个部分组成
下图给出了请求报⽂的⼀般格式
服务器响应消息
HTTP响应也由四个部分组成,分别是:状态⾏、消息报头、空⾏和响应正⽂。
实例
下⾯实例是⼀典型的使⽤GET来传递数据的实例:
客户端请求:
GET / HTTP/1.1User-Agent: curl/7.16.3
libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3Host:
服务端响应:
HTTP/1.1200 OKDate: Mon,27 Jul 200912:28:53
GMTServer: ApacheLast-Modified: Wed,22 Jul 2009
19:15:56 GMTETag:"34aa387-d-1568eb00"Accept-
Ranges: bytesContent-Length: 51Vary: Accept-
EncodingContent-Type: text/plain
输出结果:
Hello World! My payload includes a trailing CRLF.
1.3、HTTP 请求⽅法
ssl协议全称根据HTTP标准,HTTP请求可以使⽤多种请求⽅法
HTTP1.0定义了三种请求⽅法: GET, POST 和 HEAD⽅法。
HTTP1.1新增了五种请求⽅法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT ⽅法。
1.4、HTTP 响应头信息
HTTP请求头提供了关于请求,响应或者其他的发送实体的信息
应答头说明
Allow服务器⽀持哪些请求⽅法(如GET、POST等)
Content-Encoding ⽂档的编码(Encode)⽅法。只有在解码之后才可以得到Content-Type头指定的内容类型。利⽤gzip压 缩⽂档能够显著地减少HTML⽂档的下载时间。Java的GZIPOutputStream可以很⽅便地进⾏gzip压缩,但只有Unix上的 Netscape和Windows上的IE 4、IE 5才⽀持它。因此,Servlet应该通过查看Accept-Encoding头(即Header(“Accept- Encoding”))检查浏览器是否⽀持gzip,为⽀持gzip的浏览器返回经gzip压缩的HTML页⾯,为其他浏览器返回普通页⾯。
Content-Length 表⽰内容长度。只有当浏览器使⽤持久HTTP连接时才需要这个数据。如果你想要利⽤持久连接的优势,可以把输出⽂档写⼊ByteArrayOutputStram,完成后查看其⼤⼩,然后把该值放⼊Content-Length头,最后通过
byteArrayStream.OutputStream()发送内容。
Date当前的GMT时间。你可以⽤setDateHeader来设置这个头以避免转换时间格式的⿇烦Expires应该在什么时候认为⽂档已经过期,从⽽不再缓存它?
Last-Modified ⽂档的最后改动时间。客户可以通过If-Modified-Since请求头提供⼀个⽇期,该请求将被视为⼀个条件 GET,只有改动时间迟于指定时间的⽂档才会返回,否则返回⼀个304(Not Modified)状态。Last-Modified也可⽤setDateHeader⽅法来设置。
Location 表⽰客户应当到哪⾥去提取⽂档。Location通常不是直接设置的,⽽是通过HttpServletResponse的sendRedirect⽅法,该⽅法同时设
置状态代码为302。
Refresh
表⽰浏览器应该在多少时间之后刷新⽂档,以秒计。除了刷新当前⽂档之外,你还可以通过setHeader(“Refresh”, “5;
URL=host/path”)让浏览器读取指定的页⾯。注 意这种功能通常是通过设置HTML页⾯HEAD区的<META HTTP-EQUIV=“Refresh” CONTENT=“5;URL=host/path">实现,这是因为,⾃动刷新或重定向对于那些不能使⽤CGI或Servlet 的 HTML编写者⼗分重要。但是,对于Servlet来说,直接设置R
efresh头更加⽅便。注意Refresh的意义是"N秒之后刷 新本页⾯或访问指定页⾯”,⽽不是"每隔N秒刷新本页⾯或访问指定页⾯"。因此,连续刷新要求每次都发送⼀个Refresh头,⽽发送204状态代码则可 以阻⽌浏览器继续刷新,不管是使⽤Refresh头还是<META HTTP-EQUIV=“Refresh” …>。注意Refresh头不属于HTTP 1.1正式规范
的⼀部分,⽽是⼀个扩展,但Netscape和IE都⽀持它。
Server服务器名字。Servlet⼀般不设置这个值,⽽是由Web服务器⾃⼰设置
Set-Cookie 设置和页⾯关联的Cookie。Servlet不应使⽤response.setHeader(“Set-Cookie”, …),⽽是应使⽤HttpServletResponse提供的专
⽤⽅法addCookie。参见下⽂有关Cookie设置的讨论。
WWW-Authenticate
客户应该在Authorization头中提供什么类型的授权信息?在包含401(Unauthorized)状态⾏的 应答中这个头是必需的。例如,response.setHeader(“WWW-Authenticate”, “BASIC realm=\“executives\””)。注意Servlet⼀般不进⾏这⽅⾯的处
理,⽽是让Web服务器的专门机制来控制受密码保护页⾯的访问(例如.htaccess)应答头说明
1.5、HTTP 状态码
当浏览者访问⼀个⽹页时,浏览者的浏览器会向⽹页所在服务器发出请求。当浏览器接收并显⽰⽹页前,此⽹页所在的服务器会返回⼀个包含HTTP状态码的信息头(server header)⽤以响应浏览器的请求。
HTTP状态码的英⽂为HTTP Status Code。
下⾯是常见的HTTP状态码:
200 - 请求成功
301 - 资源(⽹页等)被永久转移到其它URL
404 - 请求的资源(⽹页等)不存在
500 - 内部服务器错误
HTTP状态码分类
HTTP状态码由三个⼗进制数字组成,第⼀个⼗进制数字定义了状态码的类型,后两个数字没有分类的
作⽤。HTTP状态码共分为5种类型
1.6、HTTP协议的优点与缺点
HTTP协议的优点
效率⾼
限制每个连接只有⼀个请求的⽆连接状态,在服务器处理完客户的请求,并收到客户的反应,即断开,
通过这种⽅式可以节省传输时间
简单快速
当服务器客户端请求服务时,只需传送请求⽅法和路径。请求⽅法常⽤的GET,HEAD,POST。每种⽅法规定了客户端与服务器联系的是不同的类型。因为简单的 HTTP 协议,通信速度很快
灵活
HTTP 允许任何类型的数据对象的传输,输⼊被传输的内容类型进⾏标记
⽆状态
HTTP 协议是⽆状态的协议,没有⼀个国家是没有协议的事务处理和存储能⼒。如果该状态是指由于缺乏必要前述信息的后续处理中,它必须被重传,这可能导致在数据传输增加了每个连接。另⼀⽅⾯,当不需要在服务器上的快速响应的先验信息
HTTP协议的缺点
有被窃听的风险,HTTP通信使⽤明⽂,传输过程中没有任何的保证措施,可能会被窃听
在传输过程中,不验证通信⽅的⾝份,这中间就有可能被遭遇伪装
HTTP只是对报⽂进⾏了解析,并没有对其进⾏完整的校验,所以⽆法验证报⽂的完整性,可能被遭篡改
2、SSL
2.1、SSL简介
SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为⽹络通信提供安全及数据完整性的⼀种安全协议。TLS与SSL在传输层与应⽤层之间对⽹络连接进⾏加密
2.2、SSL提供服务
认证⽤户和服务器,确保数据发送到正确的客户机和服务器
加密数据以防⽌数据中途被窃取
维护数据的完整性,确保数据在传输过程中不被改变
2.3、SSL的体系结构
SSL的体系结构中包含两个协议⼦层
底层是SSL记录协议层(SSL Record Protocol Layer)
⾼层是SSL握⼿协议层(SSL HandShake Protocol Layer)
SSL的协议栈如图所⽰,其中阴影部分即SSL协议
SSL记录协议层的作⽤是为⾼层协议提供基本的安全服务
SSL记录协议针对HTTP协议进⾏了特别的设计,使得超⽂本的传输协议HTTP能够在SSL运⾏
记录封装各种⾼层协议,具体实施压缩解压缩、加密解密、计算和校验MAC等与安全有关的操作

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。