vb.net 使用udp发送和接收消息_一起侃侃UDP通信的诸多误区

c6bd63103781b21aba1c523875b39307.png

问题描述:

UDP协议是不需要建立链接的,那我就可以随意链接其他人发数据了啊?

如果udp是无连接的,那可以向任何人发送数据了么?如果他只写接受函数不就是随意通信了么?

223c06ed43501037f1414e2d490c5429.png

还有就是通讯方面消息的接收端是如何知道消息的是什么时候发送的,如何实时接受的。是监听么?还是还有其他的办法?求大佬解决疑问。

正文

这是一个人人认为自己会,但往往又会有很多误区的话题。

UDP无连接到底意味着什么?

  • 通信无需任何前戏,而是直奔主题通信。每一个报文里都会携带用户数据,话糙理不糙的表达方式就是:“不要绕弯子,有屁快放”!
3930e37d2ca545d9d5441ebb6ce1bb45.png

•UDP传输层、IP网络层、以太网链路层、硬件物理层、互联网不会对报文做复制操作,潜台词就是,万一UDP报文有丢失的情况发生,它们统统没有报文的Copy,所以它们不会重传。

•只有应用程序存有数据的Copy,只有应用程序才具有有数据重传的可能性。

UDP的无状态是否意味着整个基础网络架构,不会维护UDP的任何状态?

在没有NAT发明之前可以这么说,自从NAT的诞生,就不能那么说了,NAT其实会把UDP通信看做类似TCP的连接,所以会维护连接状态。但是,NAT同样也不会存有数据的Copy。

UDP类似于给对方寄信,一般情况下,收件人默认是收所有的人的信。

以前美国反恐时,小布什经常会收到恐怖组织的危险邮件,没有设置白名单或黑名单制度的UDP通信,是最容易被攻击的。

但是这里有一个前提,收件人一定是活着的,这样才有通信的意义。对应到UDP的世界里,意味着UDP报文的接收方要处于侦听(Listening)状态。

侦听状态意味着什么?

负责域名查询的DNS解析程序,就是在UDP 53端口侦听,来自世界任何角落的查询请求。

消息通知模式

DNS解析程序向TCP/IP协议栈注册了一个消息:“朕使用53号端口,如果有发到53端口的报文,烦请老总通知我一声,我的进程号是12345

一会儿果然有UDP目的端口= 53的报文到达,门卫老总立马给进程号=“12345”发个消息,“有邮件,速取”,DNS解析程序听到了立马取走,这是消息通知模式。

Callback模式

DNS程序是个宅男,觉得老往传达室跑效率太低,向门卫打个招呼(注册),王老总,以后有发到53端口的报文,请直接扔到我家窗户(Callback函数)里就好了,谢谢啊!

这是服务器侧的情况,那客户端呢?

小明给小美写一封情书,小明能知道小美什么时候给自己回信吗?不能!

查询模式

小明又很焦急,怎么办呢?小明一天跑三次传达室,看看有没有小美的回信,这是UDP查询模式。

消息通知模式

门卫王看不下去了,小明啊,快回去吧,小美的信到了,我会打电话通知你来取。

UDP不连接的通信模式,给伪造报文DoS攻击提供了便利。为了应对这个挑战,应用程序通常会使用Cookie来过滤掉所有伪造的源主机。

f5ab59944fcde9e8f9ecb6a243be640e.png

此外,UDP可以使用白名单过滤列表,只有明确允许的源IP主机才能通信,其它的一律过滤掉。

版权声明:本文转载自公众号“chexiaopangnetwork”,版权归原作者所有,转载请保留此字段,感谢!

3b4396428061e3613605d90108e05efb.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值