如何判断udp端口可达

lightingfish 2011-08-29 03:21:59
我有A、B两台Linux服务器,我想在A上写个工具判断A与B机某端口间的UDP连接是否连通,请问有什么办法
...全文
616 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
shelfloader 2011-08-31
  • 打赏
  • 举报
回复

好像只能在应用层解决。

通过与侦听该端口的应用程序的通讯协议来判断端口状态。
mymtom 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 giant1st 的回复:]

引用 4 楼 feiyinzilgd 的回复:

UDP connect下


connect不是针对TCP的吗?
[/Quote]
UDP也可以connect, 然后就可以用send/write了。
没有connect的话,需要用sendto
giant1st 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 feiyinzilgd 的回复:]

UDP connect下
[/Quote]

connect不是针对TCP的吗?
辰岡墨竹 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mymtom 的回复:]

UDP端口不可达是不可能探测的。
所谓的connect不会发送任何数据到网络上
如果对方UDP端口没有在监听,数据包会被直接丢弃。
[/Quote]
是可以探测的,虽然UDP不会有任何返回。
但是最后一跳的路由会返回一个ICMP目标地址不可达……
曳尾之鱼 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mymtom 的回复:]

UDP端口不可达是不可能探测的。
所谓的connect不会发送任何数据到网络上
如果对方UDP端口没有在监听,数据包会被直接丢弃。
[/Quote]


UDP是面向无连接的
qq120848369 2011-08-30
  • 打赏
  • 举报
回复
直接给对方发包,然后接受ICMP回包,根据ICMP消息做判断就可以了。
luciferisnotsatan 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mymtom 的回复:]

UDP端口不可达是不可能探测的。
所谓的connect不会发送任何数据到网络上
如果对方UDP端口没有在监听,数据包会被直接丢弃。
[/Quote]
正解
goodmrning 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mymtom 的回复:]
UDP端口不可达是不可能探测的。
所谓的connect不会发送任何数据到网络上
如果对方UDP端口没有在监听,数据包会被直接丢弃。
[/Quote]

正解!
mymtom 2011-08-29
  • 打赏
  • 举报
回复
UDP端口不可达是不可能探测的。
所谓的connect不会发送任何数据到网络上
如果对方UDP端口没有在监听,数据包会被直接丢弃。
谭海燕 2011-08-29
  • 打赏
  • 举报
回复
UDP connect下
cloudflashes 2011-08-29
  • 打赏
  • 举报
回复
# nmap -p [port] -sU -P0 [host name | ip address]
# nmap -p 123 -sU -P0 example.com
# nmap -p 123 -sU -P0 123.123.123.123

yong_f 2011-08-29
  • 打赏
  • 举报
回复
UDP层面上的话,就可以用一个ACK回应就可以了。

还可以用ICMP协议的返回值来判断,具体就是把一个UDP SOCKET connect了,再调用sendto函数,如果端口不通,应该有ICMP的端口不可达信息返回吧?
wickyboy 2011-08-29
  • 打赏
  • 举报
回复
UDP层面上的话,就可以用一个ACK回应就可以了。

还可以用ICMP协议的返回值来判断,具体就是把一个UDP SOCKET connect了,再调用sendto函数,如果端口不通,应该有ICMP的端口不可达信息返回吧?

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧