免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2540 | 回复: 19
打印 上一主题 下一主题

请教关于socket编程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-28 14:55 |只看该作者 |倒序浏览
用raw socket做了一个syn包.sendto()之后,如何判断对方主机是否ack?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2007-06-28 15:02 |只看该作者
都已经开始研究这么高深的技术了,还不把协议赶紧先看看?

论坛徽章:
0
3 [报告]
发表于 2007-06-28 15:08 |只看该作者
我现在手头没有测试环境,我想问是直接靠sendto的返回值就可以了么,还是要...?

论坛徽章:
0
4 [报告]
发表于 2007-06-28 15:10 |只看该作者
syn,ack这些我大致懂啊.但是在实际程序中的实现不清楚......我只知道connect的时候就是TCP层发syn,connect返回的时候就是TCP层已经收到syn,ack了.(应该没错吧)

论坛徽章:
0
5 [报告]
发表于 2007-06-28 15:24 |只看该作者
原帖由 baohuaihuai 于 2007-6-28 14:55 发表
用raw socket做了一个syn包.sendto()之后,如何判断对方主机是否ack?



太底层了,留个名..
具我所知,TCP协议中,ack包不是立即返回给发送端的,也就是说接收者并不是收到一个包,就立即返回ACK.
因为这样的话,会带来大量的冗余.特别是像telnet这样的频繁往返的应用.

[ 本帖最后由 yulc 于 2007-6-28 15:39 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-06-28 15:32 |只看该作者
sendto 应该是UDP下推荐的函数,既然是UDP,那么就不能保证收到与否

论坛徽章:
0
7 [报告]
发表于 2007-06-28 15:34 |只看该作者
当然如果你用sendto来做面向连接的socket发信,我无语,如果是这样,不如直接用send

论坛徽章:
0
8 [报告]
发表于 2007-06-28 15:34 |只看该作者
那... 那...怎么判断啊.....
我只是想模拟一个环境,看syn包发出去之后对方能不能响应....因为IP是伪造其他机器的,所以只能想到这么做啊.

论坛徽章:
0
9 [报告]
发表于 2007-06-28 15:36 |只看该作者
哦,好象直接用connect就行?.......

PS:刚才困的不行,上面这句话等于没说.....

[ 本帖最后由 baohuaihuai 于 2007-6-28 15:47 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2007-06-28 15:44 |只看该作者
sendto可以用在tcp/raw socket里

sendto,没办法知道对方是否收到,
只能自己抓包,  好像也不一定需要libpcap, rawsocket也可以

请看我附件中的文章
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP