二、简单的Http

2.1  Http的通信

Http是用于客户端和服务器之间的通信。

Http协议规定,请求从客户端发出,最好服务端响应请求,并返回。也就是说,肯定是先从客户端开始建立通信的,服务端在没有接收到请求之前不会发送响应。

        

       2.2请求报文的构成

        


  

       Http/1.1表示服务器对应的Http版本

       200OK 表示请求的处理结构的状态码和原因短语

       DATE表示创建响应的日期时间,是首部字段内的一个属性

       Content-Length用于描述HTTP消息实体的传输长度

       Content-Type用于定义以什么格式加载数据或者以什么格式处理将要加载的数据

      

       响应报文基本由协议版本、状态码、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。

Http是一种无状态的协议,也就是说http不具备保存之前发送过或响应的功能。

使用Http协议,每当有新的请求发送时,就会产生对应的新响应。这是为了更快地处理大量事务,确保协议的可伸缩性。

 

2.3告知服务器意图的Http方法

       GET:获取资源

       Get方法用来请求访问已被URI识别的资源,指定的资源经过服务器端解析后返回响应内容。

       Post:传输实体主体

       Put:传输文件

       Head:获得报文首部,head方法和get方法一样,只是不返回报文主体部分。用于确认URL的有效性及资源更新的日期时间。

       Delete:删除文件

       Options:询问服务器支持的查询方法。

       Trace:追踪路径,trace方法是让web服务器将之前的请求通信步骤,返回给客户端的方法。客户端通过trace方法可以查询发送出去的请求是怎样被加工修改的。

       Connect:要求用隧道协议连接代理,connect方法要求在代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容加密后经网络隧道传输。

    

 

2.4 持久连接节省通信量

       Http协议的初始版本汇总,每进行一次通信就要断开。随着Http的普及,当一个Html页面包含了很多图片或者文件的资源连接时,便重复的建立与断开通信,导致通信量的开销。

    

为了解决这个问题,Http/1.1想出持久连接的方法。主要任意一端没有明确提出断开连接,则保持tcp连接状态。

持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。

 

2.5 管线化

持久连接使得多数请求以管线化方式发送成为可能。从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。

由于Http是无状态协议,它不对之前的发生过得请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。

不可否认,无状态协议当然也有它的优点。由于不必保存状态,自然可减少服务器及内存的销毁。

但是,如果登录的web页面无法进行状态管理,那么每次访问的时候都要登录,用户会感觉很麻烦。如果让服务器管理所有的客户端状态则有会成为服务器的负担。

于是就出现了cookie技术,cookie通过在请求和响应的报文中写入cookie信息来控制客户端的状态。Cookie会根据从服务器端发送响应的报文内一个叫做set-cookie的首部字段信息。通知客户端保存cookie。当下次客户端再往该服务器发送请求时,客户端会在请求中加入cookie信息。服务器接收到客户端发送过来的cookie后,会去对比服务器上的记录,最后得到之前的状态。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值