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