当前位置: 技术问答>linux和unix
关于网络编程的简单问题,来者有分,在线等!!!
来源: 互联网 发布时间:2015-09-20
本文导语: 我写了一个原始IP请求包发到另一台主机的23端口,为什么另一台主机收到后没有发出应答包?IP报头和TCP报头的设置有什么要特别注意的地方吗? | unsigned short cal_chksum(unsigned short *addr,int l...
我写了一个原始IP请求包发到另一台主机的23端口,为什么另一台主机收到后没有发出应答包?IP报头和TCP报头的设置有什么要特别注意的地方吗?
|
unsigned short cal_chksum(unsigned short *addr,int len)
{ int nleft=len;
int sum=0;
unsigned short *w=addr;
unsigned short answer=0;
while(nleft>1)
{ sum+=*w++;
nleft-=2;
}
if( nleft==1)
{ *(unsigned char *)(&answer)=*(unsigned char *)w;
sum+=answer;
}
sum=(sum>>16)+(sum&0xffff);
sum+=(sum>>16);
answer=~sum;
return answer;
}
这个是临时找到 以前做过 在家 如果这个不能用 明天给你调试过的 当时是为了 数据从mac 开始 连接从dns的syn开始 模拟带ssh 的web认证
你做的时候要注意 tcp 的序号 和包长对应关系及 ack 对应的序号 , 重复的 ack push等
{ int nleft=len;
int sum=0;
unsigned short *w=addr;
unsigned short answer=0;
while(nleft>1)
{ sum+=*w++;
nleft-=2;
}
if( nleft==1)
{ *(unsigned char *)(&answer)=*(unsigned char *)w;
sum+=answer;
}
sum=(sum>>16)+(sum&0xffff);
sum+=(sum>>16);
answer=~sum;
return answer;
}
这个是临时找到 以前做过 在家 如果这个不能用 明天给你调试过的 当时是为了 数据从mac 开始 连接从dns的syn开始 模拟带ssh 的web认证
你做的时候要注意 tcp 的序号 和包长对应关系及 ack 对应的序号 , 重复的 ack push等