OSI七层网络模型
| 协议层 | 功能 | TCP/IP协议簇 |
|---|---|---|
| 应用层 | 文件传输,电子邮件,文件服务,虚拟终端 | TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet |
| 表示层 | 数据格式化,代码转换,数据加密 | 没有协议 |
| 会话层 | 解除或建立与别的节点的联系 | 没有协议 |
| 传输层 | 提供端对端的接口 | TCP,UDP(RTP或一些自定义的协议) |
| 网络层 | 为数据包选择路由 | IP,ICMP,RIP,OSPF,BGP,IGMP |
| 数据链路层 | 传输有地址的帧以及错误检测功能 | SLIP,CSLIP,PPP,ARP,RARP,MTU |
| 物理层 | 以二进制数据形式在物理媒体上传输数据 | ISO2110,IEEE802等 |

协议结构
- UDP协议数据包的最大size是64K
- UDP header由四个字段组成,每个字段占用2个字节。这四个字段具体包括源端口号、目标端口号、数据报长度和校验值。

- UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。
- 数据报的长度是指包括报头和数据部分在内的总的字节数。因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。数据报的最大长度根据操作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为65535字节。不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。
- UDP协议中的校验值,也是可以用来验证数据的正确性的。和TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的。
UDP应用范围
- TFTP(Trivial File Transfer Protocol,简单文件传输协议)只能提供一些简单、开销不大的传输服务。常用端口69
- SNMP简单网络管理协议,常用端口161,162
- RIP(Routing Information Protocol路由信息协议)常用端口520
- DNS使用53端口提供域名解析服务(也有用TCP的)
与TCP/RTP的对比
- User Datagram Protocol(UDP,用户数据包协议)的传输不是面向连接的,不是可靠的。通常被用来与TCP做比较。
- 与TCP相比,UDP的优点是连接建立时间很短,协议相对简单,数据传输速度较快,可以支持组播。缺点是丢包时无法自动重传,数据传输顺序及可靠性都无法保证。
- TCP建立连接以后,传输数据的大小不受限制,双方可以按照一定的格式传输大量的数据,而UDP最大为64K。
- 与RTP相比,UDP的实时性略差一些。【原理待补充】
| 协议名称 | 复杂性 | 连接建立时间 | 可靠性 | 是否保证数据包收发顺序 | 实时性 | 适用范围 | 支持组播 |
|---|---|---|---|---|---|---|---|
| RTP/RTCP | 低 | 少 | 低 | 否 | 是 | 实时音视频传输 | 支持 |
| TCP | 高 | 多 | 高 | 是 | 否 | 数据和控制信令传输 | 不支持 |
| UDP | 低 | 少 | 低 | 否 | 否 | 否 | 音视频媒体传输 |