请教linux大牛,无法收到小于12字节的UDP包?

jamesontan 2014-03-11 03:05:29
请教这里的大牛,一段用C语言写的发送UDP包程序,在一台linux系统(Linux 版本为 2.6.18-308.el5 #1 SMP Fri Jan 27 17:17:51 EST 2012 x86_64 x86_64 x86_64 GNU/Linux)下如果发送小于12字节的UDP包
放置于公网的服务器端为何收不到,大于12字节的UDP可以收到,而且该服务器可以收到放置于公网上其他城市的小于12字节的UDP包,请问如何解决这个问题?急急急啊
...全文
514 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
一根烂笔头 2014-03-28
  • 打赏
  • 举报
回复
查看UDP协议,最小的包是多大。至少64B吧?
碼上道 2014-03-28
  • 打赏
  • 举报
回复
引用 26 楼 jamesontan 的回复:
[quote=引用 25 楼 mujiok2003 的回复:] [quote=引用 24 楼 jamesontan 的回复:] [quote=引用 22 楼 mujiok2003 的回复:] [quote=引用 19 楼 jamesontan 的回复:] [quote=引用 18 楼 blh 的回复:] 你能在路由器进出两侧抓一下udp包,看看是不是通过了路由器 如果没问题,可能在下一级路由了,只能找你们的网络管理部门了
抓过包了,正常通过了路由器,只是服务器放在别的城市公网,公网就无法抓包了啊[/quote] 也看看有有没有icmp错误发回来[/quote] 请问如何判断icmp错误?[/quote] 抓包。[/quote] icmp包没有任何错误,公网ip都能ping通 ping www.qq.com PING www.qq.com (183.60.15.153) 56(84) bytes of data. 64 bytes from 183.60.15.153: icmp_seq=1 ttl=53 time=13.4 ms 64 bytes from 183.60.15.153: icmp_seq=2 ttl=53 time=13.5 ms 64 bytes from 183.60.15.153: icmp_seq=3 ttl=53 time=13.1 ms 64 bytes from 183.60.15.153: icmp_seq=4 ttl=53 time=13.2 ms icmp协议与udp协议是无关的吧?[/quote] 看是否回icmp,不是指ping一下,往往在传输过程,如果网关路由设备将报文丢弃,会给源发一个icmp,指示为啥会丢弃报文。确实挺奇怪的。可能是想不到的原因导致的。公网不好查。
ForestDB 2014-03-28
  • 打赏
  • 举报
回复
放置于公网的服务器端为何收不到,大于12字节的UDP可以收到,而且该服务器可以收到放置于公网上其他城市的小于12字节的UDP包,请问如何解决这个问题?急急急啊 如果是相同的程序,放不同的地方发包,一个可以,一个不行,那么只能说是广域网的差异了,最简单的方法就是padding,在UDP自行padding到12字节以上。
jamesontan 2014-03-26
  • 打赏
  • 举报
回复
引用 28 楼 ak47_wz 的回复:
[quote=引用 27 楼 ForestDB 的回复:] 以太网最小帧长度为:64byte小于此长度被认为无效帧。 所以当长度过小,需要padding
他好像只是在传输层做而已,如果需要填充的话,下层应该会自动给他填的。感觉不是这个问你题。[/quote] 确实,我ping的时候指定使用2个字节长度发包,也能正常收到回应,而且ping是icmp协议,与udp协议的包格式都不相同 所以问题很奇怪,小于等于12个字节的udp包就收不到,其他都正常。
水平不流 2014-03-26
  • 打赏
  • 举报
回复
引用 27 楼 ForestDB 的回复:
以太网最小帧长度为:64byte小于此长度被认为无效帧。 所以当长度过小,需要padding
他好像只是在传输层做而已,如果需要填充的话,下层应该会自动给他填的。感觉不是这个问你题。
ForestDB 2014-03-26
  • 打赏
  • 举报
回复
以太网最小帧长度为:64byte小于此长度被认为无效帧。 所以当长度过小,需要padding
jamesontan 2014-03-26
  • 打赏
  • 举报
回复
引用 25 楼 mujiok2003 的回复:
[quote=引用 24 楼 jamesontan 的回复:] [quote=引用 22 楼 mujiok2003 的回复:] [quote=引用 19 楼 jamesontan 的回复:] [quote=引用 18 楼 blh 的回复:] 你能在路由器进出两侧抓一下udp包,看看是不是通过了路由器 如果没问题,可能在下一级路由了,只能找你们的网络管理部门了
抓过包了,正常通过了路由器,只是服务器放在别的城市公网,公网就无法抓包了啊[/quote] 也看看有有没有icmp错误发回来[/quote] 请问如何判断icmp错误?[/quote] 抓包。[/quote] icmp包没有任何错误,公网ip都能ping通 ping www.qq.com PING www.qq.com (183.60.15.153) 56(84) bytes of data. 64 bytes from 183.60.15.153: icmp_seq=1 ttl=53 time=13.4 ms 64 bytes from 183.60.15.153: icmp_seq=2 ttl=53 time=13.5 ms 64 bytes from 183.60.15.153: icmp_seq=3 ttl=53 time=13.1 ms 64 bytes from 183.60.15.153: icmp_seq=4 ttl=53 time=13.2 ms icmp协议与udp协议是无关的吧?
jamesontan 2014-03-17
  • 打赏
  • 举报
回复
引用 22 楼 mujiok2003 的回复:
[quote=引用 19 楼 jamesontan 的回复:] [quote=引用 18 楼 blh 的回复:] 你能在路由器进出两侧抓一下udp包,看看是不是通过了路由器 如果没问题,可能在下一级路由了,只能找你们的网络管理部门了
抓过包了,正常通过了路由器,只是服务器放在别的城市公网,公网就无法抓包了啊[/quote] 也看看有有没有icmp错误发回来[/quote] 请问如何判断icmp错误?
jamesontan 2014-03-17
  • 打赏
  • 举报
回复
引用 20 楼 gigglesun 的回复:
[quote=引用 17 楼 jamesontan 的回复:] 我检查了路由出口,没有做任何限制啊 入口,可以收到小于12个字节的任何UDP包,就是发送出去的,服务器收不到
也不能太小,udp首部就8个字节了,另外,会不会和字节对齐有关???[/quote] 我是套接字代码,底层应该不需要我去填充了吧?
mujiok2003 2014-03-17
  • 打赏
  • 举报
回复
引用 24 楼 jamesontan 的回复:
[quote=引用 22 楼 mujiok2003 的回复:] [quote=引用 19 楼 jamesontan 的回复:] [quote=引用 18 楼 blh 的回复:] 你能在路由器进出两侧抓一下udp包,看看是不是通过了路由器 如果没问题,可能在下一级路由了,只能找你们的网络管理部门了
抓过包了,正常通过了路由器,只是服务器放在别的城市公网,公网就无法抓包了啊[/quote] 也看看有有没有icmp错误发回来[/quote] 请问如何判断icmp错误?[/quote] 抓包。
mujiok2003 2014-03-13
  • 打赏
  • 举报
回复
引用 19 楼 jamesontan 的回复:
[quote=引用 18 楼 blh 的回复:] 你能在路由器进出两侧抓一下udp包,看看是不是通过了路由器 如果没问题,可能在下一级路由了,只能找你们的网络管理部门了
抓过包了,正常通过了路由器,只是服务器放在别的城市公网,公网就无法抓包了啊[/quote] 也看看有有没有icmp错误发回来
ithiker 2014-03-13
  • 打赏
  • 举报
回复
引用 20 楼 gigglesun 的回复:
[quote=引用 17 楼 jamesontan 的回复:] 我检查了路由出口,没有做任何限制啊 入口,可以收到小于12个字节的任何UDP包,就是发送出去的,服务器收不到
也不能太小,udp首部就8个字节了,另外,会不会和字节对齐有关???[/quote] 汗,看了前面回复的,另外机器可以.... 楼主问题解决了回来报告下...
ithiker 2014-03-13
  • 打赏
  • 举报
回复
引用 17 楼 jamesontan 的回复:
我检查了路由出口,没有做任何限制啊 入口,可以收到小于12个字节的任何UDP包,就是发送出去的,服务器收不到
也不能太小,udp首部就8个字节了,另外,会不会和字节对齐有关???
jamesontan 2014-03-12
  • 打赏
  • 举报
回复
引用 18 楼 blh 的回复:
你能在路由器进出两侧抓一下udp包,看看是不是通过了路由器 如果没问题,可能在下一级路由了,只能找你们的网络管理部门了
抓过包了,正常通过了路由器,只是服务器放在别的城市公网,公网就无法抓包了啊
blh 2014-03-12
  • 打赏
  • 举报
回复
你能在路由器进出两侧抓一下udp包,看看是不是通过了路由器 如果没问题,可能在下一级路由了,只能找你们的网络管理部门了
jamesontan 2014-03-11
  • 打赏
  • 举报
回复
我检查了路由出口,没有做任何限制啊 入口,可以收到小于12个字节的任何UDP包,就是发送出去的,服务器收不到
ithiker 2014-03-11
  • 打赏
  • 举报
回复
引用 15 楼 blh 的回复:
[quote=引用 11 楼 jamesontan 的回复:] [quote=引用 10 楼 blh 的回复:]
引用
同样的代码,在别的linux下发送就可以收到啊?
1.在同一个网络里的其他linux上吗? 2. 你可以试一下忘通网络另外一台设备发送UDP包,在那台设备上抓一下,看看能不能收到
1、不同网络的linux上 2、这个网络里只有这一台linux[/quote] 如果同样的程序在其他网络中运行正常,可能是你这个网络的路由器或者网关有什么包大小限制[/quote] 顶,应该是这样的,到最近的路由器的入口和出口查下.
blh 2014-03-11
  • 打赏
  • 举报
回复
引用 11 楼 jamesontan 的回复:
[quote=引用 10 楼 blh 的回复:]
引用
同样的代码,在别的linux下发送就可以收到啊?
1.在同一个网络里的其他linux上吗? 2. 你可以试一下忘通网络另外一台设备发送UDP包,在那台设备上抓一下,看看能不能收到
1、不同网络的linux上 2、这个网络里只有这一台linux[/quote] 如果同样的程序在其他网络中运行正常,可能是你这个网络的路由器或者网关有什么包大小限制
jamesontan 2014-03-11
  • 打赏
  • 举报
回复
我是基于套接字sendto发送udp包,应该不需要弄数据链路层方面的udp头了吧?
nadleeh 2014-03-11
  • 打赏
  • 举报
回复
引用 楼主 jamesontan 的回复:
请教这里的大牛,一段用C语言写的发送UDP包程序,在一台linux系统(Linux 版本为 2.6.18-308.el5 #1 SMP Fri Jan 27 17:17:51 EST 2012 x86_64 x86_64 x86_64 GNU/Linux)下如果发送小于12字节的UDP包 放置于公网的服务器端为何收不到,大于12字节的UDP可以收到,而且该服务器可以收到放置于公网上其他城市的小于12字节的UDP包,请问如何解决这个问题?急急急啊
你的udp头那些弄好了嘛?
加载更多回复(12)
课程声明:该课程是教学使用,视频内涉及漏洞利用方法,请勿在互联网环境中使用;维护互联网安全,人人有责。 适合人群:零基础的大学生、IT技术人员、信息安全从业者、安全运维工程师、渗透测试工程师、漏洞挖掘工程师、白帽子 课程大纲(不完全、可能会在后期加入新的内容):1.攻防环境搭建2.信息收集3.PHP常见危险函数4.Kali Linux常用工具使用方法5.SQL注入原理及利用方法(宽字节注入、delete注入、update型注入、mysql函数报错、延时注入、联合注入、waf绕过等)6.XSS原理及利用方法7.CSRF原理及利用方法8.SSRF原理及利用方法9.文件上传漏洞原理及利用方法10.文件含读取、代码执行、命令执行原理及利用方法11.逻辑漏洞原理及利用方法12.BurpSuite各个模块使用方法13.MSF后渗透使用方法14.Appscan、AWVS、Nessus、bogy等漏洞扫描器使用方法15.Sqlmap、nmap、中国菜刀等工具使用方法16.目录爆破原理及各个工具使用17.Windows及Linux系统提权18.常见getwebshell方法19.渗透测试面试技巧20.密码暴力破解21.内网攻防22.python开发poc23.Android渗透测试24.搜索引擎的高级用法 学习目标:掌握kali Linux渗透测试技巧、掌握常见漏洞检测及利用方法、全部学习完成后可就业渗透测试工程师、web安全工程师、安全运维工程师、漏洞挖掘工程师、安全驻场工程师等 特别提醒:本课程购买后可永久学习、可享受与讲师互动学习资格

23,114

社区成员

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

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