您的位置:首页 > 理论基础 > 计算机网络

tcp 同 udp的区别

2014-01-13 22:17 253 查看
1. udp package 的最大值为64k;tcp没有限制

2. udp 的单个package,要么整体到达(包括组装),要么传递错误(一次sendto只能对应一个recvfrom);tcp需要考虑可能一次只有部分包到达(需要放入while中保证数据全部获取)

3. udp 连续发送的多个包可能达到的顺序不同;tcp因为是stream,不存在这个问题

4. udp server端只需要bind后就可以接受数据; tcp server端逻辑则不同,它包括两个socket,passitive
socket和active socket,passitive socket只负责监听端口,一个passitive socket 可以生成多个active socket,active socket才会有具体的数据流动,每条数据通过(local_ip, local_port, remote_ip, remote_port)来确定传输到哪个active socket中

5. connect()
API, UDP 并没有实际和server端交互,它仅仅是建议默认连接,并过滤来至其它socketname的数据;而tcp会与server端进行握手操作

6. udp
的sent和receive都是原子操作,要么成功,要么失败;tcp则不同,关于sent,如果outgoing buffer富裕,则整体发送,返回数据的长度,如果buffer繁忙,则会block住进程,如果buffer只有有限空间,这会发送部分数据,返回这部分数据的长度。关于receive,如果没有数据达到,进程会block住,如果buffer中有充足的数据,则会提供recv需要的数目,如果buffer中的数据量小于query的,也会立即返回部分的数据

 

7. udp
不会存在把network buffer填满的情况出现,因为udp packet会自动丢掉;而tcp则可能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: