TCP与UDP都是在三层传输层的协议,具体有什么区别呢?
一、TCP是面向连接,而UDP是面向无连接
面向连接就是互通之前,会先建立连接(3次握手4次挥手),维护连接状态,保证客户端与服务端连接可靠性,确保数据无参错、不丢失、不重复、按序到达。而UDP与ip协议一样并没有任何可靠性保障,数据发出去就出去了,就算丢失了也不会管,对于 UPD来说,信息发出去了,也就算是完成任务了。
二、TCP是面向字节流,而UDP是基于数据报
tcp发送时是一个流,会按应用层数据的实际情况拆分或者合并再发送(过多时拆分、太少时就累积够长的字节),而UDP是按报文,不管应用层给多少数据,一次就发出去了,没有拆分或累积的这种情况
三、TCP有拥塞控制的,UDP并没有
当TCP发现网络环境不好了,会按需调整发送数据的节奏(太快了?是否慢一点),而UDP不会,应用层传了数据过来就会发,管它有多拥堵。
四、TCP数据包结构复杂,UDP数据包结构简单
tcp因为要保证可靠性,所以有很多标识,而UDP就很简单几个标识(来源/目标端口、数据长度、检验和)