HTTP的无状态和转发的的理解

来源:互联网 发布:用户数据挖掘 编辑:程序博客网 时间:2024/05/07 16:49

 

    IP是无状态的,它只负责将一个IP包发送到指定的IP地址上去。它不会考虑这个包与前面已经发送的包和后面的包的联系。(可能是重发包、可能是不连续包,它不管)。

   TCP是有状态的,它通过包头中的一些控制字段(序列编码等)来表明各个包之间的关系(前后关系,重包与否等等)。所以,通过这个协议你可以做到一个可靠的传输。

    那么TCP是面向连接的协议是什么意思呢?其实这里的面向连接其实就是“三次握手”。三次握手,首先可以保证对方的存在,其次握手的所交换的内容是为将来进行有状态的传输做准备。

    UDP是无状态的,它仅仅是在IP上加了Port,其他的事情什么也不干。这样它不可能做到可靠的传输,同样也不需要连接。

    HTTP是无状态的,它的底层协议是由状态的TCP,但是HTTP的一次完整协议动作,里面是使用有状态的TCP协议来完成的。而每次协议动作之间没有任何关系。例如:第7次请求HTTP协议包,并不知道,这个包是为了什么?它或许是因为上次没有请求成功而重传,或许是上次的后续请求,或许是其他的,这些HTTP自身都不知道。

    www应用,但是很多时候,www应用是需要HTTP动作之间是有关联的,那就是使应用有状态。这样才能提供给用户最好的用户体验。

   http的无状态和转发是不是冲突了?
         http的无状态是指:协议对于事务处理没有记忆能力。而转发是java程序做的事儿,是从一个web组件转到另一个web组件,是javaEE内部,组件与组件的联         通。也就是说,你发送一次HTTP请求的话,由于无状态性,发送成功就关闭请求了,但是,只要java接收到了这个请求,我可以再次传递给其他组件,因为此时球在java手中,我可以随便传球。
0 0
原创粉丝点击