TCP协议与HTTP协议的区别
TCP
按层次分,TCP处于传输层,提供可靠的字节流服务。
字节流服务(Byte Stream Service):为了方便运输,将大块数据分割成报文段(segment)为单位的数据包进行管理。可靠的传输服务是指能够把数据准确可靠地传给对方。
TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达给对方。
确认数据能够到达目标
为了准确无误地将数据送到到目的地,TCP采用了三次握手(three-way handshaking)策略。用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP的标志(flag)---SYN(synchronize)和ACK(acknowledgement)。
发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达准确信息。最后,发送端再回传一个带ACK标志的数据包,代表握手结束。
若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。
除了上述三次握手,TCP协议还有其他手段来保证通信的可靠性。
HTTP
HTTP协议用于客户端和服务端之间的通信。HTTP协议能够明确区分哪端是客户端,哪端是服务端。
HTTP协议规定,请求从客户端发出,最后服务端响应应该请求并返回。换句话说,肯定先从客户端开始建立通信,服务端在没有接收到请求之前是不会发送响应的。
HTTP是不保存状态的协议,即无状态协议。也就是说HTTP协议对于发送过的请求或响应都不做持久化处理。每当有新的请求发送时,就会有新的响应产生。
二者区别:
http协议是应用层协议,主要是解决如何包装数据。而tcp协议是传输层协议,主要解决数据如何在网络中传输。
通俗点说,http的任务是与服务器交换信息,它不管怎么连到服务器和保证数据正确的事情。而tcp的任务是保证连接的可靠,它只管连接,它不管连接后要传什么数据。
http协议是建立在tcp之上的,http是无状态的短链接,而tcp是有状态的长链接。