不二如是 发表于 2020-2-8 10:07:50

05 - 把数据包送达应用程序的UDP

本帖最后由 不二如是 于 2020-2-8 10:13 编辑

上一讲介绍完 IP,本讲来说说 UDP 。

IP 是非常底层的协议,只负责把数据包传送到对方电脑。

但是对方电脑并不知道把数据包交给哪个程序,是交给浏览器还是交给苍老师?

因此,需要基于 IP 之上开发能和应用打交道的协议,最常见的是就是 UDP (User Datagram Protocol,用户数据包协议) 。

UDP 中一个最重要的信息是端口号,端口号其实就是一个数字,每个想访问网络的程序都需要绑定一个端口号。

通过端口号 UDP 就能把指定的数据包发送给指定的程序了。

所以 IP 通过 IP 地址信息把数据包发送给指定的电脑,而 UDP 通过端口号把数据包分发给正确的程序。

和 IP 头一样,端口号会被装进 UDP 头里面,UDP 头再和原始数据包合并组成新的 UDP 数据包。

UDP 头中除了目的端口,还有源端口号等信息。

为了支持 UDP 协议,我把前面的三层结构扩充为四层结构,在网络层和上层之间增加了传输层。

还是画一个简图:



一起看下一个数据包从主机 A 旅行到主机 B 的路线:


[*]上层将含有“鱼C论坛”的数据包交给传输层
[*]传输层会在数据包前面附加上 UDP 头,组成新的 UDP 数据包,再将新的 UDP 数据包交给网络层
[*]网络层再将 IP 头附加到数据包上,组成新的 IP 数据包,并交给底层;数据包被传输到主机 B 的网络层,在这里主机 B 拆开 IP 头信息,并将拆开来的数据部分交给传输层
[*]在传输层,数据包中的 UDP 头会被拆开,并根据 UDP 中所提供的端口号,把数据部分交给上层的应用程序
[*]最终,含有“鱼C论坛”信息的数据包就旅行到了主机 B 上层应用程序这里


在使用 UDP 发送数据时,有各种因素会导致数据包出错。

**** Hidden Message *****

只是丢弃当前的包,而且 UDP 在发送之后也无法知道是否能达到目的地。

虽说 UDP 不能保证数据可靠性,但是传输速度却非常快。

所以 UDP 会应用在一些关注速度、但不那么严格要求数据完整性的领域,如在线视频、互动游戏等。

但是如何解决可靠性呢?

请见下回分解{:10_307:}



如果有收获,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

如果想看更多,请订阅 淘专辑(传送门)(不喜欢更要订阅{:10_297:} )

qiuyouzhi 发表于 2020-2-8 10:23:10

沙发~~

weiter 发表于 2020-2-8 16:20:02

谢谢大佬

1220305267 发表于 2020-4-3 14:03:42

1

Ruide 发表于 2020-5-20 15:12:07

丢包

Max472 发表于 2022-6-22 08:46:31

{:5_90:}

longwayws 发表于 2022-6-22 10:21:19

学习学习

元豪 发表于 2022-8-9 10:08:54

{:5_105:}
页: [1]
查看完整版本: 05 - 把数据包送达应用程序的UDP