TCP和UDP基本区别
- TCP面向连接,UDP无连接
TCP需要通过三次握手,UDP指明对端通信地址即可 - TCP可靠,UDP不可靠
TCP通过校验和,超时重传,确认机制来保证可靠性,UDP无序性 - TCP是字节流,UDP是数据报的形式
UDP边界性保证发几个包,收几个包 - TCP有拥塞控制机制,UDP没有拥塞控制机制
- TCP首部开销是比UDP首部开销大的
- TCP一般用于可靠性的连接,UDP一般用于实时性的连接
- TCP只能是一对一通信,UDP是一对一,一对多,多对一交互通信.
UDP应用场景
- 一般用于媒体,游戏通信
- 可以提供一对多通信
- 以数据包形式发送消息
- 对安全性没有特殊要求
UDP
- UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。UDP将部分控制转移到应用程序去处理,自己却只提供作为传输层协议的最基本功能。UDP可靠性需要在应用层上进行设计。
TCP
- TCP充分实现了数据传输时各种控制功能,可以进行丢包的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。
编程区别:
- tcp -> socket() -> setsockopt() 设置属性 -> bind() 绑定ip和端口->listen() -> accept() -> send() 和recv() ,关闭网络连接
-udp -> socket() -> setsockopt() -> bind() -> recvfrom()->关闭网络连接