协议系列之UDP协议
上节说的TCP协议虽然提供了可靠的传输,但是也有一个缺点,发送速度慢。那么有没有一种协议能快速发送的呢?这节要讨论的就是UDP协议,它提供了更加快的发送速度,但也牺牲了可靠性,它是一种无连接的传输协议。比起TCP,UDP更像是我们用手机发送短信,只管发送出去,但不能保证对方收到,不会建立连接,也没有确认环节。
图2-2-4-1为UDP协议报文结构。比起TCP,UDP报文的结构相对简单,只有源端口、目的端口、报文长度、校验和四个字段。其中源端口跟校验和是可选的,由于UDP不用接收端回复确认信息,所以源端口不是必须的,如果不需要验证数据的准确性,校验和也是可以忽略的。报文长度单位是字节,最小长度为8字节。报文结构的简单也就决定了它只能简单的发送数据,发出后基本就没能力对其进行管理,同时也缺乏拥塞控制,它不像TCP能检测拥塞程度,进而调整发送数据包的大小。
图2-2-4-1 UDP协议报文格式
那么UDP一般适用哪些场景呢?虽说其是不可靠的传输协议,但UDP具有TCP望尘莫及的速度优势,同时UDP把安全和排序(UDP不能保证数据发送和接收的顺序,在网络非常拥挤的情况下,用UDP协议接收端接收到的数据顺序可能与发送端发送的顺序不同)功能交给了应用层来完成,系统开销很小,这些都是UDP的优势。所以UDP适用于一次只传少量数据、对可靠性要求不要的应用程序里。例如我们熟悉的QQ,经常会用消息框来骚扰我们,这里用的就是UDP协议,我们不一定能收到。
以上讨论了UDP协议的特点,那么简单的列出它跟TCP协议两者的对比。两者各有所长、各有所短,在实际运用中要根据不同通信环境要求来确定要使用哪种协议传输数据。
|
TCP协议 |
UDP协议 |
|
|
是否连接 |
面向连接 |
面向非连接 |
|
传输可靠性 |
可靠 |
不可靠 |
|
速度 |
慢 |
快 |
|
系统开销 |
大 |
小 |
|
是否保证数据顺序 |
是 |
否 |
|
应用场合 |
大量数据,可靠传输 |
少量数据,容许接收不到 |
|
是否全双工 |
是 |
否 |
|
能否检测拥塞程度 |
能 |
不能 |
跟IP协议不同,IP协议提供从机器到机器的点对点寻址方式,而TCP协议跟UDP协议则是提供端口的寻址,在用IP协议找到点后,就用这两个协议找相应的端口。它们可以将进程与端口绑定,当数据到来时发往对应的端口的进程的缓冲区里。根据端口段,TCP一般将端口分为三种:知名端口(1-1023)、临时端口(1024-5000)、预留端口(5001-65355)。知名端口固定分配给一些服务,例如21端口分给FTP,80端口分给HTTP。临时端口一般是应用程序在运行时使用的端口,如socket客户端建立连接时需要端口,会随机从临时端口分配一个。
喜欢研究java的同学可以交个朋友,下面是本人的微信号:
协议系列之UDP协议的更多相关文章
- 运输层协议--TCP及UDP协议
TCP及UDP协议 按照网络的五层分级结构来看,TCP及UDP位于运输层,故TCP及UDP是运输层协议.TCP协议--传输控制协议UDP协议--用户数据报协议 多路复用及多路分解 图多路复用及多路分解 ...
- Netty4.x中文教程系列(七)UDP协议
将近快一年时间没有更新Netty的博客.一方面原因是因为项目进度的问题.另外一方面是博主有一段时间去熟悉Unity3D引擎. 本章节主要记录博主自己Netty的UDP协议使用. 1. 构建UDP服务端 ...
- 协议系列之IP协议
1.协议 协议(protocol)的定义:为计算机网络中进行数据交换而建立的规则.标准或约定的集合.两个终端相互通信时双方达成的一种约定,规定了一套通信规则,双方通信必须遵守这些规则.这些规则规定了分 ...
- 网络编程协议(TCP和UDP协议,黏包问题)以及socketserver模块
网络编程协议 1.osi七层模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 2.套接字 socket 有两类,一种基于文件类型,一种基于网络类型 3.Tcp和udp协议 ...
- 网络编程协议(TCP和UDP协议,粘包问题)以及socketserver模块
网络编程协议 1.osi七层模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 2.套接字 socket 有两类,一种基于文件类型,一种基于网络类型 3.Tcp和udp协议 ...
- Python中的端口协议之基于UDP协议的通信传输
UDP协议: 1.python中基于udp协议的客户端与服务端通信简单过程实现 2.udp协议的一些特点(与tcp协议的比较) 3.利用socketserver模块实现udp传输协议的并 ...
- 协议系列之HTTP协议
什么是HTTP\HTTPS HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.HTTP协议用于从WWWserver传输超文本到本地浏览器的传输协议,它能使浏览 ...
- 协议系列之TCP协议
3.TCP协议 从上一节我们了解了什么是IP协议,以及IP协议的一些特性,利用IP协议传输都是单向的,不可靠的,无连接状态的.正是这些特性,于是便产生了TCP协议.TCP协议属于传输层,在IP协议网络 ...
- 网络基础 二 (TCP协议代码,UDP协议代码)
TCP 三次握手,四次断开 三次握手(必须先由客户端发起) 客户端:发送请求帧给服务器. 服务器:收到客户端的请求,并回复可以建立连接 客户端:与服务器建立连接 四次断开 (谁先发起都行,以客户端为 ...
随机推荐
- [HNOI2014]江南乐
Description 小A是一个名副其实的狂热的回合制游戏玩家.在获得了许多回合制游戏的世界级奖项之后,小A有一天突然想起了他小时候在江南玩过的一个回合制游戏. 游戏的规则是这样的,首先给定一 ...
- [APIO2016]
2016的题貌似是韩国棒子出的,好丧啊.... 看了题解还想了好久...... ------------------------------------------------- A.Boat 有n个 ...
- shell 报错:syntax error: unexpected end of file
有时执行脚本时会报错: [root@host1 shell]# sh -x test.sh + $'\r' : command not found test.: syntax error: unexp ...
- 关于导入excel问题
关于导入excel问题: 在VS中可以导入,部署在IIS上无法导入的原因: 1.可能部署IIS上发布的文件设置为只读,没有写入权限.解决方法为:设置程序发布的文件夹,添加写入权限,以及asp.net ...
- python3全栈开发-并发编程,多进程的基本操作
一 .multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程. ...
- javap -c命令详解
https://www.cnblogs.com/beautiful-code/p/6424977.html
- eclipse中安装freemarker插件及ftl使用freemarker编辑器
http://www.07net01.com/2015/08/895212.html eclipse中安装freemarker插件及ftl使用freemarker编辑器 在线安装的方法是:Help – ...
- 81. Search in Rotated Sorted Array II (中等)
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- 混合式应用开发之Cordova+vue(1)
一.Cordova创建应用 cordova create oneApp Cordova创建应用出错 Cordova安装时不能使用cnpm 应该使用npm,cnpm虽然快但是后期出的错绝对比这省下来的时 ...
- Python中切片的工作原理
切片时的索引是在两个字符之间.左边第一个字符的索引为 0,而长度为 n 的字符串其最后一个字符的右界索引为n. 例如: +---+---+---+---+---+---+ | P | y | t | ...