IT基础漫谈: HTTP 实际上是一种单向连接。 Ming Cheng 从载人飞船谈到互联网, 我在回答问题的时候说了附在本文最后的一段话。 引起了一些网友的问题。 现在做些说明。 HTTP 实际上是一种单向连接。 就是只能是用户向服务器要求连接和要求数据 request, 当然包括上传数据. 而服务器不能主动连接用户和输送数据。 这种模式叫Pulling,服务器不能主动向用户 Pushing 数据。 每次用户向服务器要求完数据之后,用户和服务器的连接实际上就断开, 把资源让给其他用户。下一次再要求数据的时候再连接上. 我下面说的 "HTTP 连接是根据clients and server 数据传输的总体需求不断地连接和断开的," 就是基于这个意思在其总体现象上的描述。 这个Pulling模式在一些应用方面产生麻烦。 但是HTTP 是互联网的标准, 作为标准当然有其理由。 不是想改就能改的。 更不能象有些网友说的自己写一个标准。 后来有一种技术叫 Ajax, 表面上好象WEB 服务器可以主动更新用户页面的数据, 比如股票实时数据。 但其实是用户页面在后面在一定的间隔时间不断自动地连接WEB 服务器和拉下数据。 还有一些办法让用户抱紧 HUG WEB 服务器不放,但这有点流氓软件的味道了, 这里不做介绍。 IT 和高科技中有很多文化相关的概念。 protocol 就是其中之一。protocol一般翻译成协议。 也可以说是一种契约, 这反映了老美的契约和法律精神. 做什么咱们先定好规矩。 华人则擅长做一些技巧性的东西. 载人飞船的 protocol 就象一种契约, 我让你上天就必须有技术规定保证你能安全下来, 就是一种契约精神。 而不只是你准备好光荣牺牲。 We just cross our fingers. 所以我很欣赏和重视这个protocol的概念,也参加过一些国际标准和协议的制定,这些标准怎么来的和怎么制定的也很有意思, 这些故事以后有时间再谈。 "互联网目前的 infrastructure 和性质决定了它只能用HTTP, 尽管它基于TCP。 runs on top of TCP. 但是HTTP 连接是虚连接, 就是不象局域网一样可以有点对点的真实的和固定的连接。 HTTP 连接是根据clients and server 数据传输的总体需求不断地连接和断开的,不然一个服务器如何连接上如此大量的用户。 而且中间的路经也不是固定的。 这个数据包和下个数据包走的路经都可能不一样。 所以互联网通讯只能是 best effort. 保证不了数据不丢失和堵车。堵车时间一长数据也丢失了, 就是调节TCP的等待时间, 对 real time数据来说, 也没有意义。" |