自己写ping 程序如何发送大包(包长大于10000)用原始socket ??求急
自己写ping 程序如何发送大包(包长大于10000)用原始socket ??
如果自己填写IP头好象不行,因为要大包要分片。。。。‘
但是我如果直接用原始socket 发送包只能在8k大,再大就会发送失败;
用
n32SndBuf = 12000;
errno = 0;
result = setsockopt(pingSockFd,SOL_SOCKET,SO_SNDBUF,
(char *)(&n32SndBuf), sizeof(n32SndBuf));
增大发送缓冲区,如此设置会失败;但是如果是udp 的socket就没问题
难道raw socket 不能设置SO_SNDBUF???
问题点数:100、回复次数:9Top
1 楼orbit(走了走了)回复于 2005-08-02 18:49:50 得分 20
TCP/IP协议规定IP包可以是65535字节,但是不同的操作系统都有更严格的限制。通常不是很大
如果你不是想做碎片攻击哪里需要发送那么大的数据包?Top
2 楼windcsn(向所有的朋友学习!)回复于 2005-08-02 20:28:17 得分 10
你使用RAW SOCKET,使用的什么协议呀Top
3 楼ljp940531(ljp)回复于 2005-08-03 08:39:31 得分 0
to orbit(走了走了)
我们设备需求 用户说需要支持大包ping 的功能,以测试设备网口的性能。
to windcsn(向所有的朋友学习!)
ping 当然是ICMP协议了。。。Top
4 楼qrlvls( 空 气 )回复于 2005-08-03 08:55:49 得分 10
不需要这么大,只需要自己实现分片就好了,只要Identify连续就好Top
5 楼ljp940531(ljp)回复于 2005-08-06 10:30:50 得分 0
to qrlvls(空 气)
请问如何实现自己分片啊。。。谢谢救急啊。。。。
能写
myIPHead.ip_verlen=(iIPVersion<<4)|ipsize;
myIPHead.ip_tos=0x27;
myIPHead.ip_id=0;
myIPHead.ip_offset=0; /*在这里循环加1就可以了???*/
myIPHead.ip_ttl=78;
myIPHead.ip_protocol=IPPROTO_ICMP;
myIPHead.ip_checksum=0;
myIPHead.ip_srcaddr=inet_addr("10.50.41.2”);
。。。Top
6 楼qrlvls( 空 气 )回复于 2005-08-06 10:36:51 得分 40
ICMP 的包大于 10000?不知道这样做的目的
ip_id 需要循环加 1,而不是 ip_offset 循环加 1
分片偏移的处理方法建议你参考 TCP/IP 详解 卷一 第三章Top
7 楼ljp940531(ljp)回复于 2005-08-06 12:38:36 得分 0
非常谢谢 qrlvls(空 气) (
myIPHead.ip_verlen=(iIPVersion<<4)|ipsize;
myIPHead.ip_tos=0x27;
myIPHead.ip_id=0; /*这个好想不需要变化,是在一个ping包各个分段一个值*/
myIPHead.ip_offset=0; /*在这里加上每片的大小位移,一般是1480 (抓包看到的)*/
myIPHead.ip_ttl=78;
myIPHead.ip_protocol=IPPROTO_ICMP;
myIPHead.ip_checksum=0;
myIPHead.ip_srcaddr=inet_addr("10.50.41.2”);Top
8 楼qrlvls( 空 气 )回复于 2005-08-06 13:55:48 得分 10
对于固定的应用可以直接将包写定,但是如果是比较复杂的应用则需要从原理上去理解Top
9 楼zengwujun(月之海 为linux入门奋斗100天)回复于 2005-08-06 19:39:30 得分 10
还有:
标志字段(48~50位)用其中一个比特表示“更多的片”,除了最后一片,其他组成数据报的
片都要将改比特置1。Top
相关问题
- RAW_socket原始套接字截获数据包后的处理问题!在线等!哪位大哥救救我!
- 据说,用SOCKET创建原始套接字,并把网卡设置成“混杂摸式”,就能捕捉到所有从网卡进来的原始网络数据包,恳请各位高手指点指点,哪怕是提供一些相关资料!!
- WINPCAP真的可以发送原始数据包吗?
- 经常收到ping包?
- 有没有用C封装socket函数封装的比较好的代码,包括封装了ping,能得到网络状态等功能(低手免进)
- 请问是否有用原始套接字实现异步socket功能的类?
- 关于socket软件包?
- 紧急求助ACE中的ACE_Ping_Socket
- 奇怪,无法Ping通300以上包~~~~
- 请教:在用CB6做socket编程时,调用函数WSASocket()构造原始套接字遇到的问题




