协议 | TCP | UDP |
---|---|---|
连接性 | 面向连接 (Connection oriented) | 无连接 (Connection less) |
双工性 | 全双工(1:1) | n:m |
可靠性 | 可靠(重传机制) | 不可靠 (丢包后数据丢失) |
有序性 | 有序(通过SYN排序) | 无序 |
有界性 | 无, 有粘包情况 | 有消息边界, 无粘包 |
拥塞控制 | 有 | 无 |
传输速度 | 慢 | 快 |
量级 | 低 | 高 |
头部大小 | 20~60个字节 | 8个字节 |
UDP socket 支持 n 对 m 的连接状态, 在官方文档中有写到在 dgram.createSocket(options[, callback]) 中的 option 可 以指定 reuseAddr 即 SO_REUSEADDR 标志. 通过 SO_REUSEADDR 可以简单的实现 n 对 m 的多播特性 (不过仅在支持多播的 系统上才有)。