《分布式系统概念与设计》 HTTP:一个请求应答协议的例子
2017-03-29 21:43
260 查看
第一章中介绍了用于从客户端的浏览器向服务器端发送请求并接收应答的超文本传输协议。总的来说,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的结构。让接受者知道如何去处理数据。
。数据 如HTML网页的正文或者图片或者面板的类
。程序 运行在web 服务器的servlet,php,Python程序。
客户端请求指定一个包含web服务器的DNS主机名和在web服务器上选择端口的url和在该服务器上资源的标识符。
HTTP协议指定一个消息,这个消息包括请求应答交互,方法,参数和结果和把它们编码带消息中的规则,它支持一个固定的方法集合(GET,POST,PUT等)这些方法应用于服务器上的所有资源,他不像先前描述的那样,每个服务都有自己的操作集合。除此之外,针对web资源使用调用方法,该协议允许内容协商和密码式验证:
内容协商:客户端请求中包含说明他们能够接受的数据表示形式的信息(例如语言和媒体的类型),使服务器能选择出对于客户端最适合的数据表示形式。
认证:凭借和质询用于密码式验证,首先试图去访问受密码保护的区域时,服务器的应答包含了适用于资源的质询,第11章中解释了该质询,当客户端接收到质询,它令用户输入的用户名和密码,并提交与后续请求关联的凭据。
HTTP基于TCP实现,在该协议的最初版本中,每个客户/服务器交互都有以下步骤组成:
客户端请求连接,服务器在一个默认端口或者URL指定的端口接受连接
客户端向服务器端发送请求信息
服务器向客户端发送应答
连接断开
然而,对于每一个请求应答交互都建立断开连接的高昂代价,这会造成服务器超载以及引起太多的消息通过网络进行发送。注意,浏览器一般会向相同的服务器发送多个请求,在HTTP1.1中,使用持久连接来获取页面中的图片。在持久连接中,客户/服务器维持一系列的请求应答交互,可以在任何时候通过客户端或服务器端向另一个参与者发送指示来断开一个持久连接。如果服务器有一段时间处于空闲状态,那么该持久连接将会断开。在这种状况下,如果涉及的操作是幂等操作,那么浏览器会重新发送请求而无需用户干预。例如,下面描述的GET方法是幂等操作。当涉及的操作不是幂等操作时,浏览器应该询问用户下一步该做什么。
请求和应答以ASCII字符串的形式被编码进消息。但是资源被表示成字节序列的形式并可能被压缩,用外部数据表示正文的做法,直接和协议打交道的应用程序员在使用HTTP时就简单多了。在文本中,文本表示不会使消息长度增加太多。
数据实现的资源在参数和结果中具有类似MIME的结构。让接受者知道如何去处理数据。
相关文章推荐
- Enumeration遍历http请求参数的一个例子
- http协议包:请求包和应答包
- 利用TCPIP Monitor分析HTTP协议的请求应答机制
- HTTP协议:pipeline,一个包里有多个请求,一个包里有多个响应
- HttpWebRequest post请求的一个例子
- 《分布式系统概念与设计》--使用TCP流实现请求应答协议
- Http与HttpClient(已被废弃)通信的介绍,附带一个Http发送GET请求工具类的例子
- 原生JS发起http请求的一个例子,并且接收返回值
- HTTP协议请求消息与应答消息(get,post)抓包详解
- http协议包:请求包和应答包
- 一个HttpClient使用Windows认证请求WCF服务的例子
- HttpWebRequest post请求的一个例子
- Http与HttpClient(已被废弃)通信的介绍,附带一个Http发送GET请求工具类的例子
- Enumeration遍历http请求参数的一个例子
- 使用 acl_cpp 库中的 http_request 类实现一个 HTTP 客户端请求的例子
- HttpWebRequest post请求的一个例子
- Http 协议中的Range请求头例子
- 一个下载SVN源码+http协议的java实现
- Linux网络编程一步一步学-编写一个HTTP协议的目录浏览和文件下载服务器
- python http(通讯一个测试的例子Teraservertest)