下载此beplayapp体育下载

Tcp数据结构.doc


beplayapp体育下载分类:bepaly下载苹果 | 页数:约22页 举报非法beplayapp体育下载有奖
1 / 22
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该beplayapp体育下载所得收入归上传者、原创者。
  • 3.下载的beplayapp体育下载,不会出现我们的网址水印。
1 / 22 下载此beplayapp体育下载
beplayapp体育下载列表 beplayapp体育下载介绍
根据TCP报文格式,我们定义一个结构TCP_HEADER用来存放TCP首部:typedefstruct_tcphdr{USHORTth_sport;//16位源端口USHORTth_dport;//16位目的端口unsignedintth_seq;//32位序列号unsignedintth_ack;//32位确认号unsignedcharth_lenres;//4位首部长度+6位保留字中的4位unsignedcharth_flag;//2位保留字+6位标志位USHORTth_win;//16位窗口大小USHORTth_sum;//16位校验和USHORTth_urp;//16位紧急数据偏移量}TCP_HEADER;(二进制的00000010)我们能制造一个SYN的TCP报文,通过大量发送这个报文可以实现SYNFlood的效果。但是为了进行IP欺骗从而隐藏自己,也为了躲避服务器的SYNCookie检查,还需要直接对IP首部进行操作:同样定义一个IP_HEADER来存放IP首部typedefstruct_iphdr{unsignedcharh_verlen;//4位首部长度+4位IP版本号unsignedchartos;//8位服务类型TOSunsignedshorttotal_len;//16位总长度(字节)unsignedshortident;//16位标识unsignedshortfrag_and_flags;//3位标志位unsignedcharttl;//8位生存时间TTLunsignedcharproto;//8位协议号(TCP,UDP或其他)unsignedshortchecksum;//16位IP首部校验和unsignedintsourceIP;//32位源IP地址unsignedintdestIP;//32位目的IP地址}IP_HEADER;然后通过SockRaw=WSASocket(,SOCK_RAW,IPPROTO_RAW,NULL,0,WSA_FLAG_OVERLAPPED));建立一个原始套接口,由于我们的IP源地址是伪造的,所以不能指望系统帮我们计算IP校验和,我们得在在setsockopt中设置IP_HDRINCL告诉系统自己填充IP首部并自己计算校验和:flag=TRUE;setsockopt(SockRaw,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(int));IP校验和的计算方法是:首先将IP首部的校验和字段设为0(=0),然后计算整个IP首部(包括选项)的二进制反码的和,一个标准的校验和函数如下所示:USHORTchecksum(USHORT*buffer,intsize){unsignedlongcksum=0;while(size>1){cksum+=*buffer++;size-=sizeof(USHORT);}if(size)cksum+=*(UCHAR*)buffer;cksum=(cksum>>16)+(cksum&0xffff);cksum+=(cksum>>16);return(USHORT)(~cksum);}这个函数并没有经过任何的优化,由于校验和函数是TCP/IP协议中被调用最多函数之一,所以一般说来,在实现TCP/IP栈时,会根据操作系统对校验和函数进行优化。TCP首部检验和与IP首部校验和的计算方法相同,在程序中使用同一个函数来计算。需要注意的是,由于TCP首部中不包含源地址与目标地址等信息,为了保证TCP校验的有效性,在进行TCP校验和的计算时,需要增加一个TCP伪首部的校验和,定义如下:struct{unsignedlongsaddr;//源地址unsignedlongdaddr;//目的地址charmbz;//置空charptcl;//协议类型unsignedshorttcpl;//TCP长度}psd_header;然后我们将这两个字段复制到同一个缓冲区SendBuf中并计算TCP校验和:memcpy(SendBuf,&psd_header,sizeof(psd_header));memcpy(SendBuf+sizeof(psd_header),&tcp_header,sizeof(tcp_header));=checksum((USHORT*)SendBuf,sizeof(psd_header)+sizeof(tcp_header));计算IP校验和的时候不需要包括TCP伪首部:memcpy(SendBuf,&ip_header,sizeof(ip_header));mem

Tcp数据结构 来自beplayapp体育下载www.apt-nc.com转载请标明出处.

非法内容举报中心
beplayapp体育下载信息