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则可能
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则可能
相关文章推荐
- TCP和UDP区别
- TCP和UDP的区别
- TCP与UDP在socket中传输通信的区别
- TCP和UDP的区别
- TCP和UDP的区别
- TCP、UDP、Socket区别
- TCP与UDP区别
- TCP/IP通信与UDP通信的区别
- TCP与UDP区别小结
- Socket与TcpListener、TcpClient、UdpClient 的区别及联系
- TCP与UDP的区别
- UDP和TCP的区别(详细)
- tcp udp的区别
- TCP、UDP、RTP(RTCP)异同与区别
- TCP和UDP的区别
- TCP和UDP的区别
- TCP与UDP区别---转
- TCP和UDP的区别
- HTTP、TCP、UDP、Socket的区别
- TCP和UDP的优缺点及区别