《分布式系统概念与设计》 HTTP:一个请求应答协议的例子

第一章中介绍了用于从客户端的浏览器向服务器端发送请求并接收应答的超文本传输协议。总的来说,web服务器有两种不同的实现管理资源的方法:

。数据 如HTML网页的正文或者图片或者面板的类

。程序 运行在web 服务器的servlet,php,Python程序。

客户端请求指定一个包含web服务器的DNS主机名和在web服务器上选择端口的url和在该服务器上资源的标识符。

              HTTP协议指定一个消息,这个消息包括请求应答交互,方法,参数和结果和把它们编码带消息中的规则,它支持一个固定的方法集合(GET,POST,PUT等)这些方法应用于服务器上的所有资源,他不像先前描述的那样,每个服务都有自己的操作集合。除此之外,针对web资源使用调用方法,该协议允许内容协商和密码式验证:

内容协商:客户端请求中包含说明他们能够接受的数据表示形式的信息(例如语言和媒体的类型),使服务器能选择出对于客户端最适合的数据表示形式。

                认证:凭借和质询用于密码式验证,首先试图去访问受密码保护的区域时,服务器的应答包含了适用于资源的质询,第11章中解释了该质询,当客户端接收到质询,它令用户输入的用户名和密码,并提交与后续请求关联的凭据。

HTTP基于TCP实现,在该协议的最初版本中,每个客户/服务器交互都有以下步骤组成:

客户端请求连接,服务器在一个默认端口或者URL指定的端口接受连接

客户端向服务器端发送请求信息

服务器向客户端发送应答

连接断开

然而,对于每一个请求应答交互都建立断开连接的高昂代价,这会造成服务器超载以及引起太多的消息通过网络进行发送。注意,浏览器一般会向相同的服务器发送多个请求,在HTTP1.1中,使用持久连接来获取页面中的图片。在持久连接中,客户/服务器维持一系列的请求应答交互,可以在任何时候通过客户端或服务器端向另一个参与者发送指示来断开一个持久连接。如果服务器有一段时间处于空闲状态,那么该持久连接将会断开。在这种状况下,如果涉及的操作是幂等操作,那么浏览器会重新发送请求而无需用户干预。例如,下面描述的GET方法是幂等操作。当涉及的操作不是幂等操作时,浏览器应该询问用户下一步该做什么。

请求和应答以ASCII字符串的形式被编码进消息。但是资源被表示成字节序列的形式并可能被压缩,用外部数据表示正文的做法,直接和协议打交道的应用程序员在使用HTTP时就简单多了。在文本中,文本表示不会使消息长度增加太多。

数据实现的资源在参数和结果中具有类似MIME的结构。让接受者知道如何去处理数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值