鱼C论坛

 找回密码
 立即注册
查看: 1291|回复: 7

[庖丁解牛] 05 - 把数据包送达应用程序的UDP

[复制链接]
发表于 2020-2-8 10:07:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

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

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

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

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

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

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

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

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

还是画一个简图:

Snip20200207_224.png


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

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


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

游客,如果您要查看本帖隐藏内容请回复


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

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

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

但是如何解决可靠性呢?

请见下回分解




如果有收获,别忘了评分


                               
登录/注册后可看大图


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


评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
weiter + 1 + 1 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-8 10:23:10 | 显示全部楼层
沙发~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-8 16:20:02 | 显示全部楼层
谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-3 14:03:42 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 15:12:07 | 显示全部楼层
丢包
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-22 08:46:31 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-22 10:21:19 From FishC Mobile | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-9 10:08:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 10:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表