TCP的SYN发包以后,没有收到SYN+ACK的包

酷咪哥
全栈领域新星创作者
2017-08-03 10:32:22
1.确定源和目的MAC,IP都正确;

2.确定另一端服务处于监听,且端口8090

3.使用同一个环境,创建的TCP sock套接字(socket(AF_INET, SOCK_STREAM, 0);)测试三次握手正常;

4.创建sock函数,因为应用中我要控制ACK的接收校验,所以使用socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));确定包发出去了,但没有收到回应SYN+ACK

5.IP头校验方法,网上找的,wireshark没有报错
uint16 ipheader_checksum(uint16* buffer, int size)  
{
unsigned long cksum = 0;
while(size>1) {
cksum += *buffer++;
size -= sizeof(uint16);
}
if(size) {
cksum += *(char*)buffer;
}
cksum = (cksum>>16) + (cksum&0xffff);
cksum += (cksum>>16);
return (uint16)(~cksum);
}


6.TCP头校验直接赋0,wireshark没有报错

7.发出的SYN包内容,前54位有效
>>>tcpstate_syn<<<---len:54,num_perkline:16
[00000000:0000000f]40 e0 b4 81 10 21 a0 c5 89 1d 7f 18 08 00 45 00
[00000010:0000001f]00 28 97 7b 40 00 40 06 a5 3e c0 a8 3a 17 c0 a8
[00000020:0000002f]3a 0c ca b8 1f 9a 45 5f a8 30 00 00 00 00 50 02
[00000030:0000003f]aa aa fe 30 00 00 00 00 00 00 00 00 00 00 00 00




...全文
1848 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-08-04
  • 打赏
  • 举报
回复
引用 8 楼 weixin_35804181 的回复:
[quote=引用 6 楼 oyljerry 的回复:] 对比一下正常的SYN,ACK跟你自己构造的包之间的区别。一般还是有一些地方没有符合
包构建正确的,也通过了wireshark的校验, 目前主要是内核会处理服务器发过来的SYN+ACK包,认为已经断开连接,给服务器回复一个RST包[/quote] 提醒:Linux内核是开源的。
酷咪哥 2017-08-04
  • 打赏
  • 举报
回复
引用 6 楼 oyljerry 的回复:
对比一下正常的SYN,ACK跟你自己构造的包之间的区别。一般还是有一些地方没有符合
包构建正确的,也通过了wireshark的校验, 目前主要是内核会处理服务器发过来的SYN+ACK包,认为已经断开连接,给服务器回复一个RST包
酷咪哥 2017-08-04
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
《TCP-IP协议详解卷一:协议》?
已经看了,目前主要是内核会处理服务器发过来的SYN+ACK包,认为已经断开连接,给我发送一个RST包
oyljerry 2017-08-04
  • 打赏
  • 举报
回复
对比一下正常的SYN,ACK跟你自己构造的包之间的区别。一般还是有一些地方没有符合
赵4老师 2017-08-04
  • 打赏
  • 举报
回复
《TCP-IP协议详解卷一:协议》?
赵4老师 2017-08-03
  • 打赏
  • 举报
回复
换LInux,听说Windows对RAW Socket的使用有限制。
酷咪哥 2017-08-03
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
先使用tracert命令查看路由 再顺着路由的每一跳,逐跳抓包 ?
用的本地,另外一个电脑当服务器已经回复了,但内核自动给我回了一个RST包
赵4老师 2017-08-03
  • 打赏
  • 举报
回复
先使用tracert命令查看路由 再顺着路由的每一跳,逐跳抓包 ?
酷咪哥 2017-08-03
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
换LInux,听说Windows对RAW Socket的使用有限制。
目前用的就是linux(ubuntu 16.04) root@msintel:/home/sugao/mscore/extern/src/msprotocol# uname -a Linux msintel 4.4.0-87-generic #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

18,356

社区成员

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

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