协议系列之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客户端建立连接时需要端口,会随机从临时端口分配一个。

==========广告时间==========

鄙人的新书《Tomcat内核设计剖析》已经在京东预售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

=========================

时间: 2024-11-05 14:50:53

协议系列之UDP协议的相关文章

协议系列之IP协议

1.协议 协议(protocol)的定义:为计算机网络中进行数据交换而建立的规则.标准或约定的集合.两个终端相互通信时双方达成的一种约定,规定了一套通信规则,双方通信必须遵守这些规则.这些规则规定了分组报文的交换方式.报文的结构.报文每部分所代表的意思(例如从n位到m位表示目的地址),以及规定了怎样解析次协议的报文.举个例子,我们打开浏览器后,输入http://www.baidu.com,此时即是使用了HTTP协议进行通信,HTTP协议的设定就是为了约束规范浏览器跟服务器双方的通信.浏览器发送的

协议系列之HTTP协议

什么是HTTP\HTTPS HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.HTTP协议用于从WWW服务器传输超文本到本地浏览器的传输协议,它能使浏览器更加高效,使网络传输减少,保证计算机正确快速地传输超文本文档.现在我们普遍使用的版本是HTTP1.1. HTTP是一个应用层协议,它由请求和响应组成,是一个标准的B/S模型:它也是一个无连接的协议,这里无连接指的是每次连接只处理一个请求,服务器处理完客户端请求后便断开连接:同时,它也是一个无状态的协议,

协议系列之TCP协议

3.TCP协议 从上一节我们了解了什么是IP协议,以及IP协议的一些特性,利用IP协议传输都是单向的,不可靠的,无连接状态的.正是这些特性,于是便产生了TCP协议.TCP协议属于传输层,在IP协议网络层之上,竟然IP协议不可靠,那就必须要在其上多一个TCP协议以实现传输的可靠性.就像我们寄出一封信,如果对方不回信,不通过别的渠道告诉你,你永远都无法保证这封信能准确送到对方手上.同样,TCP协议采取了类似的措施来保证数据包的准确送达,它规定接收端发送一个确认数据包回来. 严格地说,TCP协议提供了

协议森林07 傀儡 (UDP协议)

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载.   我们已经讲解了物理层.连接层和网络层.最开始的连接层协议种类繁多(Ethernet.Wifi.ARP等等).到了网络层,我们只剩下一个IP协议(IPv4和IPv6是替代关系).进入到传输层(transport layer),协议的种类又开始繁多起来(比如TCP.UDP.SCTP等).这就好像下面的大树,根部(连接层)分叉很多,然后统一到一个树干(网络层),到了树冠(传输层)部分又开始开始分叉

udp协议的数据接收与发送的代码

我想基于lwIP协议中的UDP协议,用单片机做一个服务器,接受电脑的指令然后返回数据.以下是我的代码 /**************************************************** *函数功能:初始化udp,选定通信端口,建立连接机制 ****************************************************/ void Udp_Api_init(void) {   err_t err;   struct udp_pcb *UDPpcb;

udp java-JAVA UDP协议下怎么样才能突破局域网内的双向通信啊?求高人务必指导下。。。。

问题描述 JAVA UDP协议下怎么样才能突破局域网内的双向通信啊?求高人务必指导下.... 本人是个接触JAVA2个月的菜鸟,最近在研究UDP广域网的通信,实现的过程也就是常说的双向通信:客户端(局域网内)先发数据给远方的服务器(服务器是公网IP,映射了个端口),服务器能收到,但是服务器不能回发数据给客户端...对于这方面的问题,在网上找了很多资料,全是局域网内的,网上说什么UDP打洞啊,穿透啊等等的,说实话有点晕,直到有一天在网上一个论坛看到同样类似的帖子,主人说根本就不需要什么UDP打洞这

实例-UDP协议为何是11教材说17

问题描述 UDP协议为何是11教材说17 根据前面所介绍的方法,下面给出一个具体的实例进行分析:7E21 45 00 001D 47F3 0000 80 11 B0F6 0A4A30E0 D350336C 03E8 03F2 0009 55 1B61 A5DE 7E 7E21为PPP包头,4表示旧版本号5表示首部长度,00表示服务类型,001D表示包的All长度47F3表示16位的标识,0000表示3位的标志+13位的片偏移,80表示TTL,11表示协议(11表示UDP协议,TCP为06),B0

网络协议基础知识 SMTP协议和UDP协议

SMTP协议的命令和应答 从前面的通讯模型可以看出SMTP协议在发送SMTP和接收SMTP之间的会话是靠发送SMTP的SMTP命令和接收SMTP反馈的应答来完成的.在通讯链路建立后,发送SMTP发送MAIL命令指令邮件发送者,若接收SMTP此时可以接收邮件则作出OK的应答,然后发送SMTP继续发出RCPT命令以确认邮件是否收到,如果接收到就作出OK的应答,否则就发出拒绝接收应答,但这并不会对整个邮件操作造成影响.双方如此反复多次,直至邮件处理完毕.SMTP协议共包含10个SMTP命令,列表如下:

网络协议基础知识:SMTP协议和UDP协议

SMTP协议的命令和应答 从前面的通讯模型可以看出SMTP协议在发送SMTP和接收SMTP之间的会话是靠发送SMTP的SMTP命令和接收SMTP反馈的应答来完成的.在通讯链路建立后,发送SMTP发送MAIL命令指令邮件发送者,若接收SMTP此时可以接收邮件则作出OK的应答,然后发送SMTP继续发出RCPT命令以确认邮件是否收到,如果接收到就作出OK的应答,否则就发出拒绝接收应答,但这并不会对整个邮件操作造成影响.双方如此反复多次,直至邮件处理完毕.SMTP协议共包含10个SMTP命令,列表如下: