问题遇到的现象和发生背景
最近在学习TCP3次握手,于是想写一个基于SYN的端口扫描
我的想法是通过循环来改变TCP报文的dest端口来根据回传进行判断
遇到的现象和发生背景,请写出第一个错误信息
可我通过tcpdump抓包时
发现无论发送什么端口,服务器永远只会回传第一个端口SYN+ACK的包
其他发送的都没有收到
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
void scan_port()
{
int raw_sock = init_connect();
init_buf();
for(int i=24443;i<=24445;i++)
{
tHeader->dest=htons(i);//目标端口
memcpy(sumBuf + sizeof(struct psdHeader), tHeader, TCP_HEADER_LEN);
printf("%d\n",htons(calcTCPCheckSum(sumBuf)));//校验和
tHeader->check = htons(calcTCPCheckSum(sumBuf));
memcpy(buf + IP_HEADER_LEN, tHeader, TCP_HEADER_LEN);
send(raw_sock,buf,totalLen,0);//发送
}
close(raw_sock);
}
我的解答思路和尝试过的方法
刚开始我认为可能是校验和的问题,可我即使每次都计算校验和,结果还是没变