UDP ICMP端口不能到达扫描

babyding 2008-07-22 11:11:08
什麽是UDP ICMP端口不能到达扫描?
许多主机在你向一个未打开的UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH错误。这样你就能发现哪个端口是关闭的。这个是什么意思?
怎么实现的,
我向一个UDP端口发了一个自己构建的UDP数据包,并没有看到什么ICMP_PORT_UNREACH的报文,
用sendto()和recvfrom()可以做到吗?
我如果把UDP端口打了,怎么扫描出来的,
关于UDP的端口扫描用什么方法好?
...全文
628 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dean_ASUS 2008-09-19
  • 打赏
  • 举报
回复
《TCP/IP详解》上有!
Wenxy1 2008-09-01
  • 打赏
  • 举报
回复
什麽是UDP ICMP端口不能到达扫描?// 发送UDP数据包到一个IP的端口,若访问不了此IP或者此IP没有开放此端口,那对方的机器发回一个ICMP包(指出主机不可到达,或者端口不能到达)。

许多主机在你向一个未打开的UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH错误。这样你就能发现哪个端口是关闭的。这个是什么意思?
怎么实现的,
我向一个UDP端口发了一个自己构建的UDP数据包,并没有看到什么ICMP_PORT_UNREACH的报文,
用sendto()和recvfrom()可以做到吗? // 可以。
我如果把UDP端口打了,怎么扫描出来的, // 看一下《tcp/ip详解》,得熟悉一下tcp/ip的基础吧。
关于UDP的端口扫描用什么方法好? // 网上有个开源的工具:namp,功能很强大。
yuzhouzhichong 2008-08-28
  • 打赏
  • 举报
回复
char broad=0x57;
SOCKET sock
sockaddr_in addr;
bool op=1;
if(sock!=NULL)
{
closesocket(sock);
sock=NULL;
}
if(sock==NULL)
{
sock=socket(AF_INET,SOCK_DGRAM,0);
ASSERT(sock!=NULL);
}
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=INADDR_ANY;
addr.sin_port=htons(8000);
int ret=0;
ret=bind(sock,(LPSOCKADDR)&addr,sizeof(addr));
if(ret==SOCKET_ERROR)
{
DWORD dw=GetLastError();
AfxMessageBox("绑定错误!");
closesocket(sock);
return false;
}


if(SOCKET_ERROR==setsockopt(sock,SOL_SOCKET,SO_BROADCAST,(char *)&op,sizeof(bool)))
AfxMessageBox("无法进行UDP广播");
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=inet_addr("IP");
addr.sin_port=htons(port);
if(WSAECONNRESET==sendto(sock,&broad,sizeof(broad),0,(sockaddr *)&addr,sizeof(addr)))
AfxMessageBox("端口%04x是关闭的!",port);


Yofoo 2008-07-23
  • 打赏
  • 举报
回复
1. WSASendTo
2. WSARecvFrom

WSARecvFrom 如果失败, 错误代码为 WSAECONNRESET 则说明没有打开端口,
在linux|unix下返回的错误代码是ECONNREFUSED, 连接被拒绝

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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