UDP新手自学笔记(附带简单wireshark抓包)

1.UDP协议概述

UDP是User Datagram Protocol(用户数据协议)

该协议工作在OSI模型中的第四层(传输层),处于IP协议的上一层。

传输层的功能就是建立“端口到端口”的通信(wkl:所有传输层的作用都是这个!)

2.什么是UDP协议

UDP用来支撑那些需要在计算机之间传输数据的网络应用,包括网络视频会议系统在内的众多客户/服务器模式的网络应用。

UDP协议的主要工作就是将网络数据流量压缩成数据包的形式。(wkl:UDP对于数据是有压缩的!!!)

一个经典的数据包就是一个二进制数据的传输单位。(wkl:数据包就是二进制的数据的传输单位,说的真好!)

每一个数据包的前8字节用来包含包头信息,剩余字节则用来包含具体的传输数据。

3.UDP协议的特点

UDP使用底层的互联网协议来传送报文,同IP一样提供不可靠的无连接传输服务。

它也不提供报文到达确认、排序及流量控制等功能。下面详细介绍UDP协议的特点,如下所示:

1.UDP是一个无连接的协议

传输数据之前,源端口和目标端口不能建立连接。

当它想传输时,就简单地抓取来自应用程序的数据,并尽可能快的把它扔到网络上。(wkl:不管能不能扔的准,先进快扔出去再说!)

在发送端,UDP传输数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽限制。

在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。(wkl:顺序不对怎么办?)

 2.由于传输数据不建立连接,因此也就不需要维护连接状态。所以,一台服务器可同时向多个客户机传输相同的消息。

(wkl:这也是UDP之所以数据传输比较快的一个原因)

 3.UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。

(wkl:开销小,原因在于包头比较小)

  4.吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端口和目标端口主机性能的限制。

(wkl:UDP已经尽可能地把所有可能影响他提升传输速度的因素都解决了,现在唯一能限制他的就是应用生成数据的速度了!)

   5.UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表。

(wkl:也是一种节省资源的办法,节省资源,提升速度的最快的办法就是啥也不要,就直奔主题!)

   6.UDP是面向报文的。发送方的UDP对应用程序传输下来的报文,添加首部后就向下传送给IP层。既不拆分,也不合并,而是保留这些报文的边界。因此,应用程序需要选择合适的报文大小。

(wkl:UDP真是能少干点,就少干点呀!)


UDP的应用

虽然UDP是一个不可靠的协议,但它是分发信息的一个理想协议。

例如,在屏幕上报告股票市场,在屏幕上显示航天信息等等。

UDP也用在路由信息协议RIP(Routing InformationProtocol)中修改路由表。

在这些应用场合下,如果有一个消息丢失,几秒之后另一个新的消息就会替换它。

(wkl:也就在这种信息冗余比较大的情景下,UDP是比较合适的了,信息冗余,或者说更新速度快,弥补了信息丢失带来的问题)

UDP广泛用在多媒体应用中

例如,Progressive Networks公司开发的RealAudio软件,它是在因特网上把预先录制的或者现场音乐实时传送给客户机的一种软件。

该软件使用的RealAudio  audio-on-demand protocol协议就是运行在UDP之上的协议。

大多数因特网电话软件产品也都运行在UDP之上,如QQ聊天、视频、网络电话、迅雷等。

(wkl:不知道迅雷下载用的是不是UDP,如果是的话出现下载不完整就不奇怪了,毕竟用的是UDP。。。。。)


UDP数据包格式:包头(8字节=4*16)+数据(其余字节)


UDP新手自学笔记(附带简单wireshark抓包)_第1张图片

第一个字节是源端口

第二个字节是目的端口

第三个字节是是数据报的长度(wkl:包括头部吗?)

第四个字节是完整性校验和(校验内容包括头部+Data)

DATA里面包括应用层的协议头以及用户发出的真正数据

接下来,我来具体抓一下包

这个是我的电脑的IPV4地址

接下来我打开wireshark


选择我的无线网卡

开始抓包

一下子出来了一堆包,因为今天学习的是UDP,所以我就找一个UDP数据包

UDP新手自学笔记(附带简单wireshark抓包)_第2张图片

点开一个UDP数据包之后是这样的!


UDP新手自学笔记(附带简单wireshark抓包)_第3张图片

UDP数据包分成了5部分

Frame是帧信息

Ethernet是以太网信息,有源MAC与目的MAC

Internet是因特网信息,有源IP与目的IP

User Datagram Protocal是用户数据报协议,也就是UDP协议,里面有源端口号和目的端口号

Data里面则是真正的传输数据

至于每一个部分里面的具体字段,第一次学习,暂时没有具体了解,后续遇到再学习

你可能感兴趣的:(UDP新手自学笔记(附带简单wireshark抓包))