1. 面向无连接、不可靠的UDP协议:
1) UDP和TCP都位于OSI的传输层,但是和TCP相比有很大的不同;
2) UDP不可靠:
i. 是面向无连接的,而TCP是面向连接的(通信时建立虚拟连路,确认连接后才进行通信),而UDP直接发送和接受数据,不先建立连接;
ii. UDP只能保证两端的socket发送和接收数据,不管对方状态就直接发送,当然也不管数据在路程中是否丢失出错等,肯定也不确认对方是否接收到了正确的数据;
3) UDP的优点:
i. 无连接、无差错控制,因此通信效率非常高(TCP在建立连接和差错控制方面开销极大);
ii. 因此UDP适用于一些实时性很强的场景中,特别是网络对战游戏(PVP等)、视频通话、网络直播等;
2. UDP是一种数据报通信:
1) UDP在底层负责将数据流封装成一个个数据报发送出去(发送端)、将数据报一个个拆开组成数据流接受(接收端);
2) 数据报的特点就是短平快,每个数据报的大小有限制(不能超过64KB),这不同于TCP,TCP对传输数据的大小无限制,因此数据报可大大增加通信效率;
3) UDP不使用C/S模型:UDP的socket类似于码头,而UDP数据报则类似于集装箱,码头只负责将集装箱送出去和接受,因此UDP没有客户端和服务器端一说;
4) Java使用DatagramSocket来代表UDP协议的socket,可以看见就要数据报Socket;用DatagramPacket来代表UDP数据报,模型分的非常清晰,即码头和集装箱的关系;