HTTP

基本概念

HTTP即超文本传输协议Hyper Text Transfer Protocol),请求响应模式(request/response)

应用层协议;客户端服务器模型;无状态协议

版本:RFC 1945 定义 HTTP 1.0 ; RFC 2616 定义了 HTTP 1.1

资源定位:URL(uniform resource locator)、URI (Universal Resource Identifier)。[二者区别:URL只表示一个资源,URI可表示一个域,也可表示一个资源,URL又是URI的子集]

详解

HTTP 是一个基于请求与响应模式的、无状态的、应用层的协议。HTTP有两类报文:请求报文响应报文

请求报文(request)

4部分:请求行、消息报头(普通报头、请求报头、响应报头、实体报头)、空行、请求正文(请求数据)
这里写图片描述
这里写图片描述

1、请求行:格式:Method Request-URI HTTP-Version CRLF 。请求方法有:GET,POST,HEAD,PUT,DELETE,TRACE等。
2、请求报头:允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。主要字段:

  1. Accept:请求报头域用于指定客户端接受哪些类型的信息。eg:Accept:image/gif,表明客户端希望接受GIF图象格式的资源;Accept:text/html,表明客户端希望接受html文本。
  2. Accept-Charset:请求报头域用于指定客户端接受的字符集。eg:Accept-Charset:iso-8859-1,gb2312.
  3. Accept-Encoding:请求报头域类似于Accept,但是它是用于指定可接受的内容编码。eg:Accept-Encoding:gzip.
  4. Accept-Language:用于指定一种自然语言。eg:Accept-Language:zh-cn.如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。
  5. Connection:普通报头域允许发送指定连接的选项。如Connection:keep-alive
  6. Cache-Control : 用于指定缓存指令,缓存指令是单向的。请求时的缓存指令包括:no-cache(用于指示请求或响应消息不能缓存)、no-store、max-age、max-stale、min-fresh、only-if-cached;
  7. Host:请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的,发送请求时,该报头域是必需的
  8. User-Agent:提供操作系统、浏览器和其它属性信息,服务器可获取。该报头域非必需
    这里写图片描述

3、空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器后面不再有请求头。
4、请求数据:请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

响应报文(response)

3部分:状态行、消息报头(普通报头、请求报头、响应报头、实体报头)、响应正文

1、状态行:格式:HTTP-Version Status-Code Reason-Phrase CRLF。其中状态码:

1xx指示信息–表示请求已接收,继续处理2xx成功–表示请求已被成功接收、理解、接受;3xx:重定向–要完成请求必须进行更进一步的操作;4xx:客户端错误–请求有语法错误或请求无法实现;5xx:服务器端错误–服务器未能实现合法的请求;(eg:HTTP/1.1 200 OK (CRLF))

100 客户必须继续发出请求;
101 客户要求服务器根据请求转换HTTP协议版本
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务不可用是的一种状态。服务器当前不能处理客户端的请求,一段时间后可能恢复正常
504 Gateway Time-out (网关超时)。作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。

2、响应报头:Location响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。Server响应报头域包含了服务器用来处理请求的软件信息。与User-Agent请求报头域是相对应的。WWW-Authenticate响应报头域必须被包含在401(未授权的)响应消息中,客户端收到401响应消息时候,并发送Authorization报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。

这里写图片描述

  • 实体报头:请求和响应消息都可以传送一个实体,由实体报头域和实体正文组成。实体报头字段:Content-Encoding(实体报头域被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容的编码);Content-LanguageContent-LengthLast-ModifiedExpires(响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页面,我们可以使用Expires实体报头域指定页面过期的时间;为了让浏览器不缓存页面,我们也可以利用Expires实体报头域,设置为0:response.setDateHeader(“Expires”,”0”);

HTTPS

HTTPS:Hypertext Transfer Protocol over Secure Socket Layer,基于SSL的HTTP协议,提供身份验证加密通信方法。

步骤:

  1. 客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
  2. Web服务器收到客户端请求后,将网站的证书信息证书中包含公钥)传送一份给客户端
  3. 客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级
  4. 户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站
  5. Web服务器利用自己的私钥解密出会话密钥。
  6. Web服务器利用会话密钥加密与客户端之间的通信。
    这里写图片描述

HTTP/1.0与HTTP/1.1

  1. 建立连接:HTTP/1.0每次请求都需要建立新的TCP连接,连接不能复用。HTTP/1.1新的请求可以再上次请求建立的TCP连接之上发送,可复用。提高了效率。
  2. Host域:HTTP/1.1在request消息头里多了一个Host域。
  3. 日期时间戳
  4. 状态响应码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值