Sockets UDP有多安全?
我正在考虑是否使用TCP或UDP进行一些非常简单的通信。以下是基本细节:Sockets UDP有多安全?,sockets,networking,tcp,udp,Sockets,Networking,Tcp,Udp,我正在考虑是否使用TCP或UDP进行一些非常简单的通信。以下是基本细节: 所有消息都可以放在一个1500字节的数据包中(因此排序与此无关) 这些消息的接收者将被来自许多不同来源的数据包轰炸。TCP可以处理拥塞,但是来自数十个或数百个源的UDP数据包同时到达同一端口会互相损坏吗 丢失/损坏的邮件不是什么大问题。只要他们仍然是少数,并且被正确地认定为无效,他们就可以被忽略 数据包以波的形式到达,在几秒钟内每秒几次,然后在几分之一秒内到达数万次。网络应该能够处理这些峰值中的带宽 请记住,顺序无关紧
- 所有消息都可以放在一个1500字节的数据包中(因此排序与此无关)
- 这些消息的接收者将被来自许多不同来源的数据包轰炸。TCP可以处理拥塞,但是来自数十个或数百个源的UDP数据包同时到达同一端口会互相损坏吗
- 丢失/损坏的邮件不是什么大问题。只要他们仍然是少数,并且被正确地认定为无效,他们就可以被忽略
- 数据包以波的形式到达,在几秒钟内每秒几次,然后在几分之一秒内到达数万次。网络应该能够处理这些峰值中的带宽
在您所述的条件下,假设它们是正确的,则不适用。我不是专家,但听起来您需要使用UDP。UDP具有较少的开销(意味着更小的包大小),非常适合快速交付;数据包可能会丢失,但听起来似乎不会有问题。消息的顺序无关紧要,任何单个消息都可以放入1500字节的数据包中。接受的有效负载占了所有可以填充到UDP中的额外头,我几乎不打算使用这些头。否则,消息有效负载低于1472字节。此外,删除和忽略之间似乎没有实际区别,只是校验和检查和删除允许硬件和操作系统优化,而将校验和计算和忽略移动到应用层将导致性能轻微下降。同样重要的是,丢弃的数据包必须占绝大多数。报头不是有效负载的一部分“绝大多数”在术语上是矛盾的,“必须”似乎与“没什么大不了的”相矛盾。UDP将在任何时候丢弃数据包,无论出于何种原因,它都认为这是足够的,包括但不限于路由器队列溢出、接收缓冲区溢出等等。我的意思是,只要有80%以上的节点通过,丢弃的数据包就不是问题,并且丢弃的数据包的分布是相对随机的,即不是每次丢弃数据包的相同节点。显然,头不是有效负载的一部分,但我的意思是,更多的头意味着可能的有效负载更小。很抱歉给你带来了困惑。