首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

稿件4:HTTP/1.1 Connections (RFC 2616)

2012-11-26 
文章4:HTTP/1.1 Connections (RFC 2616)欢迎转载,转载请注明出处http://blog.csdn.net/yankai0219/article

文章4:HTTP/1.1 Connections (RFC 2616)
欢迎转载,转载请注明出处http://blog.csdn.net/yankai0219/article/details/8208810chap8 Connection主要是两部分内容 长连接(persistent connection)与消息传送的必要条件(message transmission requirement).8.1 长连接8.1.1目的长连接的目的:在长连接之前都是短连接,一次连接一次请求,多次TCP连接用于获取每一个URL,从而增加了HTTP服务器负担并引起网络阻塞。在短时间内客户端发起对同一个服务器的多次请求,就会造成性能下降。为了解决这一问题,从而出现长连接。     长连接的优点:1)节约CPU时间和内存 2)降低网络阻塞。都是通过减少开启和关闭连接的次数,达到这两个优点的。8.1.2所有操作     http/1.1默认所有的连接都是长连接(persistent connection)。     长连接提供了一种机制,用于客户端和服务器之间可以通过信号来通知TCP连接的关闭。这种信号在使用Connection头部字段时,一旦被通知关闭,那么客户端就不能再在那个连接上发送任何请求。这个头部字段的使用方式Connection:closed。     8.1.2.1 Negotiation(协商)          对于HTTP/1.1的服务器,如果不指定Connection:closed头部字段,那么所有的连接都是长连接。如果服务器在发送响应时想终止连接,那么就需要指定Connection:close头部域。          对于HTTP/1.1的客户端,它希望连接一直是打开的,但是真正起决定作用的是:来自服务器的响应是否包含Connection:closed头部字段。在客户端不想保持长连接时,可以指定请求的Connection:closed字段。          不管是客户端还是服务器,只要指定了Connection:closed头部字段,那么这个请求就是这个连接中的最后一个请求。
          如果没有明确指示,那么对于HTTP版本低于1.1客户端和服务器,都不能假设能够建立长连接。     8.1.2.2Pipelining

8.1.3 代理服务器     代理服务器能够准确实现Connection头部字段的属性。     代理服务器不能再HTTP/1.0的客户端建立HTTP/1.1的连接。8.1.4 实用性考虑(practical consideration)
          


8.2 Message Transmission Requirement 消息传送必要条件     8.2.1 长连接与流控制          HTTP/1.1通过长连接与使用TCP的流控制机制 来解决暂时的过载,而不是中止连接同时希望客户端重传。后者技术会加重网络阻塞。     8.2.2 Monitoring Connections for Error Status Message               8.2.3 Use of the 100 (Continue) Status          状态码100(Continue)的目的是:在客户端发送请求体之前,允许发送带有请求体的请求消息的客户端,来判断服务器是否愿意接收这个请求。          HTTP/1.1客户端必要条件:               如果客户端在发送请求体之前,等待状态码为100的响应,那么在发送请求的时候需要包含 expectation  =  "100-continue"头部字段。               如果客户端不用于发送请求体,那么就不能包含expectation  =  "100-continue"头部字段。          HTTP/1.1服务器必要条件:               对于接收到包含expectation  =  "100-continue"头部字段的请求,服务器会做出两种动作:1)响应状态码100 并继续从输入流中读数据 2)响应一个fianl status code 417(Expectation Failed)。在发送状态码100的响应之前,服务器不会等待请求体。如果响应的是final statud code,那么服务器就会关闭连接或者读取并舍弃余下的请求。                如果请求体中不包含    expectation  =  "100-continue"头部字段,服务器不会发送状态码为100的响应。               如果origin server收到的请求不包括expectation  =  "100-continue"的头部字段,但是该请求包含请求体,那么服务器在从transport connection读取全部请求体之前会发送一个final status code,但是在读取全部请求体或者客户端关闭连接之前,服务器不会关闭这个transport connection。          HTTP/1.1代理必要条件:     8.2.4 如果服务器突然关闭,客户端的行为               
小结:我在读完这部分内容以后,有很多地方还是不是很懂。个人觉得有三个地方需要特别注意和记住:     1)长连接与短连接     2)expectation字段     3)100状态码

热点排行