免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4950 | 回复: 8
打印 上一主题 下一主题

【请教】 raw socket接收 ACK 时,是否需要bind端口? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-10 00:13 |只看该作者 |倒序浏览
请教,在用raw socket的 ipproto_raw接收 以同样形式发出的SYN,是否需要 bind或listen个端口?

还是会自动开放发送SYN时的source port作为接收端口呢?

还请大家指教

论坛徽章:
0
2 [报告]
发表于 2010-08-10 00:48 |只看该作者
你是收不到 TCP 和 UDP 的,死了这条心吧。

论坛徽章:
0
3 [报告]
发表于 2010-08-10 07:35 |只看该作者
raw socket工作在网络层或数据链路层
可以使用bind绑定到一个地址

可以收到TCP或UDP的数据(此时raw socket工作在链路层,获取所有数据包拷贝),不过要你自己来区分是哪一种类型。

论坛徽章:
0
4 [报告]
发表于 2010-08-10 12:25 |只看该作者
用libnet 和 libpcap吧

楼主的问题,我帮顶

论坛徽章:
0
5 [报告]
发表于 2010-08-10 13:39 |只看该作者
回复 3# lenky0401

根据 UNPv1e3 Sec. 28.4 "Raw Socket Input" 的内容:

Received UDP packets and received TCP packets are never passed to a raw socket.

事实上,raw IP 只能工作在网络层,而不能是 datalink layer。

如果需要访问链路层服务,请参照 UNPv1e3 第 29 章的内容。

论坛徽章:
0
6 [报告]
发表于 2010-08-10 22:49 |只看该作者
本帖最后由 nine8 于 2010-08-10 23:00 编辑
你是收不到 TCP 和 UDP 的,死了这条心吧。
langue 发表于 2010-08-10 00:48



    谢谢,楼上的各位,不过我之前用 ipproto_tcp是可以接收到 返回的ACK的.似乎UNP说的是BSD, linux好像可以支持系统转发给raw socket

只是不想让系统再回复给目标主机RST,所以想试试ipproto_raw行不行,发现换成raw就抓不到数据包

如果ipproto_raw不行,换到link数据有有些大,那么 linux下如何实现接收到ACK,不再返回RST或是ACK(也就是不进行第三次握手)呢?
还请大家再指点下,谢谢

论坛徽章:
0
7 [报告]
发表于 2010-08-12 00:22 |只看该作者
顶一下

论坛徽章:
0
8 [报告]
发表于 2010-08-12 11:28 |只看该作者
用PCAP可以收到链路层的包

论坛徽章:
0
9 [报告]
发表于 2010-08-12 13:02 |只看该作者
我以前看unp之后写过一个截包分析协议的程序,是这样写的:

  1.      if((sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP))) < 0)
  2.      {
  3.          fprintf(stdout, "create socket error\n");
  4.          exit(0);
  5.      }
  6.      while(1)
  7.      {
  8.          memset(buffer,0,BUFF_LEN);
  9.          n_read = recvfrom(sock, buffer, BUFF_LEN, 0, NULL, NULL);
  10.          ...........//分析buffer内数据
  11.      }
复制代码
截出来的内容:
source mac:00:90:0b:18:0a:cd,dest mac:00:24:21:1e:05:37
source ip: 66.249.89.99,dest ip:192.168.41.38
message length:52.
time to live:44.
Protocol: TCP
Begin TCP protocol analyse.
source port:80, dest port:46582
sequence number is 48683
ack number is 44315
TCP flag:ACK
TCP windows is 114
TCP checksum is 32451
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP