UDP设计简单,因为在UDP的头部信息里,只有端口号、包长度和校验码等少量信息,总共就8Byte。
小巧的头部给它带来了一些优点:
由于UDP协议头长度还不到TCP头的一半,所以在同样大小的包里,UDP包携带的净数据比TCP包多一些;
由于UDP没有Seq号和Ack等概念,无法维持一个连接,所以省去了建立连接的负担。这个优势在DNS查询中体现的淋漓尽致。
UDP不像TCP一样在乎双方的MTU大小。它拿到应用层的数据之后,直接打上UDP头就交给下一层了。在这种情况下,发送方的网络层负责分片,接收方接收到分片后再组装起来,这个过程会消耗资源,降低性能。
UDP没有重传机制,所以丢包由应用层来处理。试想一下,在高性能环境中,一个写操作需要数十个包来完成,UDP的劣势就体现出来了。
分片机制存在弱点,会成为黑客的攻击目标。
网友评论