TCP与UDP都是端对端的通信传输协议。
区别是TCP是基于连接的,UDP是基于非连接的。简单的说就好像你给女朋友写信,写完信后邮寄出去至于女朋友是否收到信息,你不关心(UDP协议就像是这个过程,数据通过网卡发出后就不关心后续数据的传输了);过了段时间女友生气了,说你不关心她,然后你就开始给他打电话解释。打电话时候呢是先双方建立通信,才会说话。TCP就像是打电话一样。
TCP建立连接是通过三次握手4次握手的方式实现,这也是为了建立可靠的数据传输通道,那具体什么事三次握手四次握手呢?
如下图,当客户端要建立连接时,会先给服务端发送一个SYN数据包,询问是否可以建立连接,如果可以建立连接,则给客户端发送一个带有ACK的数据包,回复客户端可以建立连接,客户端收到可以创建连接的消息后,再给服务端发送一个SYN数据包,完成连接的建立
当客户端要与服务端端开连接时,需要经过四次握手,以保证等数据完全被接受完后才断开连接
第一次握手:客户端向服务端发送一个FIN数据包,请求断开连接,客户端进度等待1状态,表示没有数据传输了
第二次握手:服务端向客户端发送ack数据做出应答,回复可以断开连接,客户端接受到请求后,进入等待2状态
第三次握手:服务端向客户端发送FIN数据包,请求断开连接
第四次握手:客户端接受到服务端的数据包后,做出应答,发送一个带ACK的数据包,服务端接受到这个答复后,直接断开连接。客户端等待2msl(2min)如果没有收到服务端的返回,认为已经断开连接,客户端自行断开连接
鉴于以上的机制,TCP与UDP主要有以下的区别:
1、传输速度上UDP比TCP要慢
2、安全性上TCP比UDP要高些
3、是否是连接方面,TCP面向连接,UDP面向非连接