网络通信协议(3)UDP协议

前言

运输层的两个著名的协议:TCP、UDP协议
各有各的优点与缺点
前面了解了TCP协议:面向连接、可靠、基于字节流的双工传输层通信协议,优点在于可靠
那UDP的优点就在于实时性上
这里通过对比TCP、UDP协议来了解UDP协议

目录

  1. UDP协议
  2. TCP与UDP的区别
    2.1. 数据发送方式的差异
    2.2. 数据有序性的差异
    2.3. 可靠性的差异
  3. UDP使用场景
  4. 总结

UDP协议

UDP (User Datagram Protocol), 中文名是用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息快速传送服务

UDP协议的特点

  1. 无连接

传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上

  1. 不可靠

不建立连接,得到IP地址就把数据报传过去,自然安全性不强(当然有自定义的可靠的UDP协议:RakNet)

  1. 快速传输

无连接、不可靠从好的方面看就是速度快,实时性强
建立连接的时间省去了,出错处理的时间省去了,速度自然提高

TCP与UDP的区别

TCP协议有名的:三次握手、四次挥手、慢启动、重传
三次握手建立连接,慢启动、重传保证数据可靠,四次挥手终止连接
所以说TCP协议是面向连接的、可靠的、有序的传输层协议

UDP协议是面向数据报的、不可靠的、无序的传输协议

TCP与UDP协议的区别:

  1. 数据发送方式的差异
  2. 数据有序性的差异
  3. 可靠性的差异

数据发送方式的差异

  1. TCP

TCP协议数据传输是建立在两个设备已连接的基础上
既然建立了连接,那想传多少数据就传多少(当然数据包大了要切片 )
以太网数据帧1522字节(MTU最大传输单元),标头22字节,IP标头20字节,TCP标头20字节,即仅有1460字节可供数据段使用

  1. UDP

UDP协议不需要连接,是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层

UDP协议本身,UDP协议中有16位的UDP报文长度,那么UDP报文长度不能超过2^16=65536,UDP标头8字节,IP标头20字节,也就最终长度65507 字节,但是因为UDP协议的不可靠性,需要控制UDP数据报不要分帧发送,即可用1472字节存放数据,UDP的数据大小尽量在这个范围内

在Internet 下 MTU(最大传输单元) 的值为 576 字节,所以在 internet 下使用 UDP 协议,每个数据报最大的字节数为: 576 - 20 - 8 = 548字节

数据有序性的差异

  1. TCP

TCP协议的重传机制:当缺失某个包,接收端会向发送端保持发送该ACK,其他的包缓存,也就可以保持数据包的有序性

  1. UDP

UDP是不可靠的,发送端发送的包接收是可能是乱序的

可靠性的差异

  1. TCP

TCP协议为了实现可靠性,有许多机制:慢启动,超时重传、错误重传、TCP 的流量控制、阻塞控制、拥塞避免算法、快速恢复算法

  1. UDP

UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作

当然UDP协议也有校验值,但检测到错误时,UDP不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息

UDP使用场景

优势

UDP协议不属于连接型协议,因而具有资源消耗小,处理速度快的优点(UDP协议以其简单、传输快的优势,在越来越多场景下取代了TCP,TCP协议在操作系统内核中,不便更改)

网络环境变好,网络传输的延迟、稳定性也随之改善,UDP的丢包率低于5%,如果再使用应用层重传,能够完全确保传输的可靠性

使用场景

对实时性要求高:实时会议,实时视频,现在的ICQ、QQ使用的就是UDP协议

多点通信:TCP需要连接,在多点通信下实现麻烦;而UDP无连接传输成本低、速度快

自定义UDP:Enet、RakNet等自定义UDP协议自定义重传策略,能够把丢包产生的延迟降到最低

总结

  1. UDP协议是一个面向数据报、无连接、不可靠、快速传输的传输层协议
  2. UDP的特点即在与无连接、不可靠、快速传输,这些特点造就了它的优点及缺点
  3. UDP协议适用于对实时性要求高、多点通信的场景,随着网络环境的发展,UDP协议的可靠性也在增加,而且也可以通过自定义UDP协议实现自定义重传机制
发布了95 篇原创文章 · 获赞 25 · 访问量 4203

猜你喜欢

转载自blog.csdn.net/key_768/article/details/104497446