说明
只确保发送消息,其他处理都由上层应用来完成。
UDP是一种面向无连接的用户数据报服务(user data protocol),不需要和服务器也能交互,只需要知道ip和监听端口,不需要链接没有目的的socket,只是将数据报投递出去,不管接收方是否成功接收到,因此是一种不可靠的传输,可能会造成数据丢包,但由于这些特征,传输效率要优于TCP。例如QQ传输
概述
- 传输层协议
1、位于应用层之下、为不同设备上的应用提供逻辑通讯的功能。进程之间使用该逻辑彼此发送报文、而不需要考虑物理层的差异。
2、网络层只负责主机与主机之间的传输、而传输层则将网络层(IP协议)接收/发送的数据、正确定向到相应的应用层。
- UDP协议为应用程序提供不可靠的无连接的服务。
UDP协议数据包可能会出现丢包、失序等、且不处理重发。这一点和IP协议一样、所以需要使用UDP协议的程序自己处理重发、顺序重组等。
但这种模式相比可靠的传输服务、效率更高、没有拥塞控制、首部更简洁、对应用负担也更小。 - 常见的应用
流式多媒体、DNS等。
套接字
1、从网络向某进程传递数据、或者从进程向网络传递数据的门户。
2、传输层和应用进程通过套接字来传递数据。
3、主机上的套接字可以有很多个、每个套接字都有唯一的标识符。
a) 应用层通过传输层进行数据通信时、传输层会遇到同时为多个应用程序进程提供并发服务的问题。
b) 多个TCP连接或多个应用程序进程可能需要 通过同一个TCP协议端口传输数据。
c) 为了区别不同的应用程序进程和连接、许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口、区分不同应用程序进程间的网络通信和连接。
- 参数
1、通信的目的IP地址
2、使用的传输 层协议(TCP或UDP)
3、使用的端口号(像房间号一样对应到每一个程序)。
Socket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输 层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
工作原理
报文到达目标主机时、传输层会检查报文中的目的端口号、并且发送到相应含有套接字的软件中。报文端的数据将通过套接字进入到应用层对应的进程。
多路复用
同时给多目标发送数据。不同的进程有不同的套接字、从不同的软件中收集数据、再给每一个数据块加上头部、生成报文交给网络层发送。
多路分解
同时接收到多来源发送的数据。将报文段中的数据交付到正确的套接字(将报文定向到正确的进程)。
UDP工作流程
- 接收方主机
程序A需要申请一个UDP端口号、例如P。 - 发送方主机
应用程序准备好数据后、会交给UDP协议进行数据封装、目标端口号字段置位P后交给IP协议在此封装发送。 - 接收方主机
IP协议发现协议字段为17、就将IP数据包的数据区交给UDP协议处理。UDP协议发现端口号为P、就将UDP数据包的数据区放置在端口P的队列中。程序A从该队列中将数据依次取出进行处理。
网友评论