TCP与UDP都是在三层传输层的协议,具体有什么区别呢?

一、TCP是面向连接,而UDP是面向无连接

面向连接就是互通之前,会先建立连接(3次握手4次挥手),维护连接状态,保证客户端与服务端连接可靠性,确保数据无参错、不丢失、不重复、按序到达。而UDP与ip协议一样并没有任何可靠性保障,数据发出去就出去了,就算丢失了也不会管,对于 UPD来说,信息发出去了,也就算是完成任务了。

二、TCP是面向字节流,而UDP是基于数据报

tcp发送时是一个流,会按应用层数据的实际情况拆分或者合并再发送(过多时拆分、太少时就累积够长的字节),而UDP是按报文,不管应用层给多少数据,一次就发出去了,没有拆分或累积的这种情况

三、TCP有拥塞控制的,UDP并没有

当TCP发现网络环境不好了,会按需调整发送数据的节奏(太快了?是否慢一点),而UDP不会,应用层传了数据过来就会发,管它有多拥堵。

四、TCP数据包结构复杂,UDP数据包结构简单

tcp因为要保证可靠性,所以有很多标识,而UDP就很简单几个标识(来源/目标端口、数据长度、检验和)

tcp数据包结构
udp数据包结构