所在的层级不同
HTTP是处在应用层
TCP处在传输层
性质不同
HTTP是一个请求、响应协议,TCP是一个面向连接、可靠的、基于字节流的传输层协议。
完成的事情不同
HTTP是为了完成与服务器的信息交流,它不管怎么连接到服务器和保证数据正确的事情。
TCP是为了保证数据的可靠性传输,即它只管正确地连接,连接后发送什么数据他不管。
keepalive状态的不同
HTTP的keepalive是为了保持TCP连接,增强复用性和减少建立断开连接的开销。
举个例子,服务器接收到客户端的一个请求后,响应后保持一段时间的TCP连接,不断开。如果同一个客户端再次向此服务器发送http请求,则可以复用此TCP连接,并充值timeout时间计数器,在接下来一段时间内还可以继续复用。
TCP的keepalive是TCP的保活机制,它是为了解决 在双方长时间都没通讯时,如何得知对方还活着的问题,如何得知这个TCP连接是否还是健康且具有通讯能力的问题。
开启保活功能的一方会向另一方发送一个保活探测报文,如果正常工作则重置保活计时器,不正常则断开。