问题描述
- 为何TCP发包就不存在丢包和乱序? 而UDP发包就有,难道就只有Tcp有重传机制,udp就没有?
-
如果说tcp有自动重排机制,那么udp如果乱序了,怎么处理?如果有具体算法最好了~,对这块概念很模糊……
解决方案
个人理解
tcp 在建立连接时有三次握手的过程,这样就保证的连接的有效性。发包时发包完成也有反馈(对方接收完成有标记),所以tcp不存在丢包乱序的问题
UDP,建立连接并没有三次握手的过程,而且发送数据只是负责发送,不会有发送成功的反馈
解决方案二:
TCP发包
解决方案三:
tcp 协议头有 seq 和 ack_seq 用来保证 tcp包的时序, 如果出现缺少其中一块, 会进行重传, 而 udp没有seq 和 ack_seq 来保证, 所以没有
解决方案四:
那UDP乱序怎么处理,有没有什么经典的算法什么的?
解决方案五:
因为UDP只负责发,它不管对方有没有收到。乱序的话,你可以对包设置编号啊
解决方案六:
主要就是自己定义包的协议格式,用一个ID等来编码,然后自己组包的时候,按照这些顺序等逻辑再恢复
时间: 2024-09-05 17:21:33