简单的了解HTTP协议

HTTP概念

  • HTTP协议用于客户端与服务端之间的通信(应用HTTP协议,必定有一端是客户端,另一端是服务器端)

  • 通过请求和响应的交换达成通信(必须由客户端发起通信,服务器端在没有接收到请求之前不会发送响应)

发送报文的结构:
 //包含了请求方法、请求资源路径、HTTP协议版本
 GET(POST) /mini.png HTTP/1.1  
 //请求首部字段
 Host:120.25.226.186:32812     客户端想访问的服务器主机地址
 User-Agent:Mozilla/5.0        客户端的类型,客户端的软件环境
 Accept:text/html              客户端所能接收的数据类型
 Accept-Language:zh-cn        客户端的语言环境
 Accept-Encoding:gzip         客户端支持的数据压缩格式 

 //内容实体
 name=user&ag=12
 响应报文的结构:
 //包含了HTTP协议版本、状态码、状态码的原因说明
 HTTP/1.1 200 ok       
 //响应首部字段        
 Server:Apache-Coyote/1.1      服务器类型
 Content-Type:image/jpeg       返回数据的类型
 Content-Length:56811          返回数据的长度
 Date:Mon,23,Jun 2014 12:54:52 GMT 响应的时间

 //主体
 data....
  • HTTP是不保存状态的协议(协议本身不会保留之前一切的请求或响应)

  • 请求URI定位资源

  • 发起HTTP请求的方法

    • GET:获取资源
      客户端—-GET(访问某个资源)—–>服务器

    • POST:发给服务器的参数全部放在请求体中
      客户端—-POST(上传某个信息)—–>服务器

    • PUT:传输文件(PUT自身不带验证机制,任何人都可以传,不安全)
      客户端—-PUT(上传一个文件)—–>服务器

    • HEAD:获得报文首部(不返回主体部分,只返回响应的首部)
      客户端—-HEAD(把那个相关信息告诉我)—–>服务器

    • DELETE:删除文件(与PUT相反,不安全)
      客户端—-HEAD(把那个文件删除)—–>服务器

    • OPTIONS:询问支持的方法(查询对请求URI指定资源支持的方法)
      客户端—-OPTIONS(这个资源支持哪些方法访问)—–>服务器

  • 持久连接节省通信量(建立1次TCP连接后可进行多次请求和响应)

    • 持久性连接的特点:只要任意一端没有明确提出断开,则保持TCP的连接
    • 管线化方式:所谓的管线化方式是指同时并行发送多个请求,而不需要一个接一个地等待响应
  • 使用Cookie的状态管理

    • Cookie技术通过在请求和响应报文中写入cookie信息来控制客户端的状态
    • Cookie会根据从服务器端发送的响应报文内的一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie,当下次客户端再次请求时,客户端会自动在请求的报文中加入Cookie值发送出去
    • 服务器端发现客户端发来的Cookie时,会去检查是哪一个客户端发送的请求,对比服务器上的记录,最后得到之前的状态信息
1)请求报文(没有Cookie)信息的状态
 GET /mini.png HTTP/1.1  
 Host:120.25.226.186:32812
 *首部字段内没有Cookie的相关信息

(2)响应报文(服务器端生成Cookie信息)
 HTTP/1.1 200 ok       
 Date:Mon,23,Jun 2018 12:54:52 GMT 
 Server:Apache
 <Set-Cookie:sid=123123123; path=/;expires=Wed,=>Jun 2018 12:54:52 GMT>
 Content-Type:image/jpeg      

(3)请求报文(自动发送保存着的Cookie信息)
 GET /mini.png HTTP/1.1  
 Host:120.25.226.186:32812
 Cookie:sid=123123123

HTTP返回结果的状态码

状态码类别原因短语备注
200成功状态码OK
204成功状态码NO Content请求成功但是没有资源可返回
206成功状态码Partial Content对资源某一部分的请求
301重定向状态码Moved Permanently资源的URI不对
302重定向状态码Found临时重定向
303重定向状态码See Other资源存在多个URI,应使用GET方法请求
304重定向状态码Not Modified资源已找到,但未符合条件
307重定向状态码Temporary Redirect临时重定向
400客户端错误Bad Request请求报文中语法不对
401客户端错误Unauthorized该请求需要HTTP认证
403客户端错误Forbidden不能访问该资源
404客户端错误Not Found服务器上没有该资源
500服务器错误Internal Server Error服务器内部资源不对
503服务器错误Service Unavailable服务器超负荷或停机维护

与HTTP协作的web服务器

  • 虚拟主机:是指在网络服务器上分出一定的磁盘空间,用户可以租用此部分空间,以供用户放置站点及应用组件,提供必要的数据存放和传输功能。
  • 通信数据转发

    • 代理:是一种有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给其他服务器,同时也接受其他服务器返回的响应转发给客户端

      • 代理不会改变请求的URI,会直接发送给持有资源的服务器(源服务器)
      • 代理服务器转发时,需要附加Via首部字段来标记经过的主机信息
        这里写图片描述
      • 缓存代理(常说的镜像):代理服务器转发响应时,缓存代理会预先将资源的副本保存在代理服务器上,当代理服务器再次收到相同资源的请求时,代理服务器可直接将之前缓存的资源作为响应返回
      • 透明代理:转发请求会响应时,不对body做任何加工的代理类型叫透明代理,对报文内容做加工的代理叫非透明代理
    • 网关:转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,他就像自己拥有资源的服务器一样对请求进行处理

      • 网关能使通信新路上的服务器提供非HTTP协议服务
        这里写图片描述
      • 利用网关能够提高通信安全性,可以在客户端与网关之间的通信线路上加密以确保连接安全(比如网关可以关联数据库)
    • 隧道:在相隔甚远的客户端和服务器之间进行中转,并保持双方通信连接的应用程序

      • 隧道可按要求建立一条与其他服务器通信的线路,可以使用SSL等加密手进行通信,隧道的目的就是确保客户端能与服务器进行安全的通信
      • 隧道本身不对HTTP做任何解析,保持原样中转给服务器
        这里写图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值