当前位置: 技术问答>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等
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。