Http协议与TCP协议易混淆点(一)

来源:互联网 发布:大数据导论 pdf 编辑:程序博客网 时间:2024/06/06 04:36

Http协议与TCP协议

1.TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。
2.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。


  所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。如果是一个连接的话,服务器进程中就能保持住这个连接并且在内存中记住一些信息状态。而每次请求结束后,连接就关闭,相关的内容就释放了,所以记不住任何状态,成为无状态连接。

那么问题来了:每次创建新连接不耗费性能吗?
  从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性。也就是说,在打开一个网页之后,客户端与服务器之间的传输数据的TCP连接不马上关闭,客户端再次访问时会使用,但是Keep-Alive保持时间不是有限的,超时之后还是会断开,所以我们还把其看做是每次连接完成后就会关闭。后来,通过Session, Cookie等相关技术,也能保持一些用户的状态。但是还是每次都使用一个连接,依然是无状态连接。

为什么HTTP是无状态的短连接,而TCP是有状态的长连接?Http不是建立在TCP的基础上吗,为什么还能是短连接?
  Http就是在每次请求完成后就把TCP连接关了,所以是短连接。而我们直接通过Socket编程使用TCP协议的时候,因为我们自己可以通过代码区控制什么时候打开连接什么时候关闭连接,只要我们不通过代码把连接关闭,这个连接就会在客户端和服务端的进程中一直存在,相关状态数据会一直保存着

0 0