问一个原始套接字发包自动加上了ip头的问题 [问题点数:40分,结帖人crystal_lz]

Bbs1
本版专家分:15
结帖率 82.98%
Bbs4
本版专家分:1896
Blank
黄花 2015年4月 Linux/Unix社区大版内专家分月排行榜第二
Bbs1
本版专家分:15
Bbs1
本版专家分:15
Bbs4
本版专家分:1896
Blank
黄花 2015年4月 Linux/Unix社区大版内专家分月排行榜第二
Bbs12
本版专家分:381312
Blank
状元 2017年 总版技术专家分年内排行榜第一
Blank
榜眼 2014年 总版技术专家分年内排行榜第二
Blank
探花 2013年 总版技术专家分年内排行榜第三
Blank
进士 2018年总版新获得的技术专家分排名前十
2012年 总版技术专家分年内排行榜第七
Bbs1
本版专家分:15
Bbs1
本版专家分:15
Bbs1
本版专家分:15
Linux原始套接字实现分析---转
http://blog.chinaunix.net/uid-27074062-id-3388166.html 本文从IPV4协议栈<em>原始套接字</em>的分类入手,详细介绍了链路层和网络层<em>原始套接字</em>的特点及其内核实现细节。并结合<em>原始套接字</em>的实际应用,说明各类型<em>原始套接字</em>的适应范围,以及在实际使用时需要注意的<em>问题</em>。           一、<em>原始套接字</em>概述   协议栈的<em>原始套接字</em>从实现上可以分为...
原始套接字获得IP头的问题
发送端程序调用sendto()返回52,即IP头20Bytes, UDP头8Bytes,Data24Bytes,共发送52Bytes的包rn为什么以下收包程序只收到24Bytes,未收到IP头阿? 请指教,谢谢rnrn#include rn#include rn#include // IP_HDRINCLrnrn#pragma comment(lib, "ws2_32.lib")rnrn/*========================Function: main()==========================rnrnDescr<em>ip</em>tion:rn Main thread of execution. Initialize Winsock, create a rn socket, bind it to a local interface and port, and then rn read datagrams.rnrn====================================================================*/rnint main()rnrn WSADATA wsd; //存储所加载版本信息rn SOCKET RecvSock; //与本地地址结构bindrn SOCKADDR_IN LocalAddr, //本地地址结构rn SendAddr; //发送方地址结构rn int ret; //bytes which has been receivedrn int iOpt;rn FILE* fp;rn rn int SendLen; //size of SendAddrrn char RecvBuff[4096]; //Buffer to receive datarnrn // Load the corresponding version of Winsock DLLrn if(WSAStartup(MAKEWORD(2,2), &wsd)!=0)rn rn printf("Failed to load Winsock!\n");rn return 1;rn rnrn // Create socketrn RecvSock=socket(AF_INET, SOCK_RAW, IPPROTO_UDP);rn if(RecvSock==INVALID_SOCKET)rn rn printf("socket() failed: %d\n", WSAGetLastError());rn return 1;rn rnrn // Enable the header include option to operate the UDP headerrn iOpt=TRUE;rn ret=setsockopt(RecvSock, IPPROTO_IP, IP_HDRINCL, (char*)&iOpt, sizeof(iOpt));rn if(ret==SOCKET_ERROR)rn rn printf("setsockopt(IP_HDRINCL) failed: %d\n", WSAGetLastError());rn return -1;rn rnrn // Resolve the rec<em>ip</em>ient's IP addressrn LocalAddr.sin_family=AF_INET;rn LocalAddr.sin_addr.s_addr=inet_addr("192.168.58.103");rn LocalAddr.sin_port=htons(5150);rnrn // Bind the socket to the local interface and portrn if( bind(RecvSock, (SOCKADDR*)&LocalAddr, sizeof(LocalAddr)) == SOCKET_ERROR )rn rn printf("bind() failed: %d\n", WSAGetLastError());rn return 1;rn rnrn // Receive datagramsrn SendLen=sizeof(SendAddr);rnrn //接收数据的缓冲区清空rn memset(RecvBuff, 0, sizeof(RecvBuff));rnrn ret=recvfrom(RecvSock, RecvBuff, 4096, 0, (SOCKADDR*)&SendAddr, &SendLen);rnrn // OutPut the resultrn// RecvBuff[ret]='\0';rnrn fp=fopen("receive.txt","wb");rn if(fwrite(RecvBuff, 1, 4096, fp)==0)rn rn printf("Failed to write receive.txt!\n");rn return 1;rn rn printf("Received: %d bytes from client: %s:%d\n", ret, inet_ntoa(SendAddr.sin_addr), ntohs(SendAddr.sin_port));rn rn //closern closesocket(RecvSock);rn WSACleanup();rnrn return 0;rnrn
一个LINUX下原始套接字问题!!!!
网关有两块网卡,一块192.168网段的,一块172.22网段的。在网关上运行<em>原始套接字</em>程序以接受192网段的包。但是现在的情况是:192网短的机器上网,网关能够接受到192网段机器发出去的包,但是从网站返回来的包却接受不到。也就是说,上行流量可以检测得到,但是下行流量却检测不到。我想问一下:这是不是<em>原始套接字</em>固有的<em>问题</em>,通过什么方法可以解决,谢谢了!
如何填充IP头及使用原始套接字
<em>问题</em>1:如何填充IP头,我不清楚何时使用htons将unsigned short 或者unsigned int类型的变量转换成网络序:rn <em>ip</em>Hdr-><em>ip</em>_verlen = 0; rn <em>ip</em>Hdr-><em>ip</em>_verlen = 4 << 4 | <em>ip</em>Hdr-><em>ip</em>_verlen; rn <em>ip</em>Hdr-><em>ip</em>_verlen |= (sizeof(IP_HDR) / sizeof(unsigned int));rn <em>ip</em>Hdr-><em>ip</em>_tos = 0; rn <em>ip</em>Hdr-><em>ip</em>_totallength = htons(sizeof(IP_HDR) + sizeof(ICMP_HDR) + 0 + dataSize); //是否需要转换成网络序? rn <em>ip</em>Hdr-><em>ip</em>_id = GetCurrentProcessId(); //是否需要转换成网络序? rn <em>ip</em>Hdr-><em>ip</em>_offset = 0; rn <em>ip</em>Hdr-><em>ip</em>_ttl = UCHAR(64);rn <em>ip</em>Hdr-><em>ip</em>_protocol = IPPROTO_ICMP;rn <em>ip</em>Hdr-><em>ip</em>_checksum = 0;rn <em>ip</em>Hdr-><em>ip</em>_srcaddr = inet_addr(sourceAddress);rn <em>ip</em>Hdr-><em>ip</em>_destaddr = inet_addr(destAddress);rn <em>ip</em>Hdr-><em>ip</em>_checksum = checksum((USHORT*)<em>ip</em>Hdr, sizeof(IP_HDR)); //是否需要转换成网络序?rnrn<em>问题</em>2:如何使用<em>原始套接字</em>发送字节流(Windows系统,Winsock 2.2):rn2.1: 如何使MAC+DATA,14字的MAC头之后,紧接着发送一串无意义的字节流(不论是否可以成功路由,只要发送出本机网卡就行):rn MAC + "123456\0"rn2.2: 如果2.1不可行,系统强制要求必须要有正确的IP头,那么如果填充IP头出错,系统会<em>自动</em>将其某些字段改正么?rn 是否可以用如下代码来描述这个过程:rn int optval = 1;rn sockRaw = socket(AF_INET, SOCK_RAW, IPPROTO_IP);rn int retSetSocketOpt = setsockopt (sockRaw, IPPROTO_IP, IP_HDRINCL, (char *)&optval, sizeof(optval));rn int retSend = send(......);rnrn急求高手解答。
IP头,UDP头,和TCP头的问题
书上的例题:rn接收<em>一个</em>IP包的时候,比方,rnrn[code=C/C++]rnswitch(pIPHdr-><em>ip</em>Protocol)//这里不需要转换成主机字节顺序rnrn case IPPROTO_TCP : //查go to def ,是6rn break;rnrnrn但是在tcp或udp里rnswitch(ntohs(pTCPHdr->destinationPort))rnrn case 21:rn break;rnrn[/code]rn难道上面的IPPROTO_TCP就是网络字节顺序?
网络通信之原始套接字
fanxiushu 2017-04-11 我们在做网络编程时候,大都使用的是TCP或者UDP协议的套接字,下边这样的代码就创建了<em>一个</em>TCP或UDP的套接字 int fd = socket(AF_INET, SOCK_STREAM,0);  /// TCP int fd = socket(AF_NET, SOCK_DGRAM, 0 );  ///  UDP 使用recv或recvfrom接收
原始套接字学习总结
raw socket(<em>原始套接字</em>)工作原理与规则 <em>原始套接字</em>是<em>一个</em>特殊的套接字类型,它的创建方式跟TCP/UDP创建方法几乎是 一摸一样,例如,通过        int sockfd;        sockfd = socktet(AF_INET, SOCK_RAW, IPPROTO_ICMP); 这两句程序你就可以创建<em>一个</em><em>原始套接字</em>.然而这种类型套接字的功能却与TC
原始套接字编程(C++)
1.同上两篇,学校的实验。 但是这第三个实验坑比较多,写了好长时间,百度了好久才写对。 我是先启动的服务器,在启动数据包捕获,最后在启动客户端,这样最初的通信也能捕获到。而且我的客户端与服务器时双向通信,也就是两者都会经过“127.0.0.1”这个地址,所以客户端的消息和服务器的消息都会捕获到。、 捕获之后根据IP报文结构还有TCP报文结构来推...
原始套接字 发送 TCP SYN 包
通过<em>原始套接字</em>、setsockopt、IP_HDRINCL套接字选项,我们可以在应用进程里面构造自己的IP包:所以我们在初始化<em>原始套接字</em>之后,可以调用setsockopt函数来开启IP_HDRINCL套接字选项,并且构造自己的IP头,TCP/UDP头,最后再像发送普通包一样调用sendto 、sendmsg等函数发送构造好的数据。1.首先我们可以先得到<em>一个</em><em>原始套接字</em>,并且设置IP_HDRINCL套...
Linux 网络编程——原始套接字实例:发送 UDP 数据包
以太网报文格式:详细的说明,请看《MAC 头部报文分析》。IP 报文格式:详细的说明,请看《IP 数据报格式详解》。UDP 报文格式:详细的说明,请看《UDP 数据报格式详解》。校验和函数:/******************************************************* 功能: 校验和函数 参数: buf: 需要校验数据的首地址 nword: 需要校验数据长度...
一个网络发包的事
我写了<em>一个</em>给指定IP<em>发包</em>的程序,用C++,是无限循环<em>发包</em>,可是一<em>发包</em>我的路由就卡死,但流量确很小,为什么?我下载时是800Kbn\\也不会掉线,如何才能发大数据包不掉线呢,我听说有人可以发1G大小的数据包,这是如何实现的?请朋友们指点一二。
原始套接字生成IP数据包
利用VC,<em>原始套接字</em>实现的<em>原始套接字</em>生成IP数据包程序。 网络安全编程入门必读实例!
数据包加头问题
我想自己构造icmp数据包,并且自己加上<em>ip</em>头和mac地址。rnicmp数据包构造好以后就不知改如何下手了,求各位高手指点迷津!rn谢谢先
IP头问题
想做<em>一个</em>linux下的tracert,拿了网上现成的ping代码自己改装:rn#include rn#include rn#includern#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#define PACKET_SIZE 4096 rn#define MAX_WAIT_TIME 5 rn#define MAX_NO_PACKETS 3 rnchar sendpacket[PACKET_SIZE]; rnchar recvpacket[PACKET_SIZE]; rnint sockfd,datalen=56; rnint nsend=0,nreceived=0; rnstruct sockaddr_in dest_addr; rnpid_t pid; rnstruct sockaddr_in from; rnstruct timeval tvrecv; rnvoid statisticsexit(int signo); rnunsigned short cal_chksum(unsigned short *addr,int len); rnint pack(int pack_no); rnvoid send_packet(void); rnvoid recv_packet(void); rnint unpack(char *buf,int len); rnvoid tv_sub(struct timeval *out,struct timeval *in); rnshort TTL=0;rnstruct protoent *protocol;rnusing namespace std;rn#includern//void statistics(int signo) rn//rn// printf("\n--------------------PING statistics-------------------\n"); rn// printf("%d packets transmitted, %d received , %%%d lost\n",nsend,nreceived,(nsend-nreceived)/nsend*100); rn// close(sockfd); rn// rnrn/*校验和算法*/ rnunsigned short cal_chksum(unsigned short *addr,int len) rnrn int nleft=len; rn int sum=0; rn unsigned short *w=addr; rn unsigned short answer=0; rn /*把ICMP报头二进制数据以2字节为单位累加起来*/ rn while(nleft>1) rn rn sum+=*w++; rn nleft-=2; rn rn /*若ICMP报头为奇数个字节,会剩下最后一字节。把最后<em>一个</em>字节视为<em>一个</em>2字节数据的高字节,这个2字节数据的低字节为0,继续累加*/ rn if( nleft==1) rn rn *(unsigned char *)(&answer)=*(unsigned char *)w; rn sum+=answer; rn rn sum=(sum>>16)+(sum&0xffff); rn sum+=(sum>>16); rn answer=~sum; rn return answer; rnrn/*设置ICMP报头*/ rnint pack(int pack_no) rnrn setuid(getuid());rn struct <em>ip</em> *<em>ip</em>;rn struct icmp *icmp; rn struct timeval *tval;rn int packsize=8+datalen+sizeof(struct <em>ip</em>);rn memset(sendpacket,0,PACKET_SIZE);rn <em>ip</em>=(struct <em>ip</em> *)sendpacket;rn <em>ip</em>-><em>ip</em>_v=IPVERSION;rn <em>ip</em>-><em>ip</em>_hl=sizeof(struct <em>ip</em>)>>2;rn <em>ip</em>-><em>ip</em>_tos=0;rn <em>ip</em>-><em>ip</em>_len=htons(packsize);rn <em>ip</em>-><em>ip</em>_id=0;rn <em>ip</em>-><em>ip</em>_off=0;rn <em>ip</em>-><em>ip</em>_ttl=TTL;rn couticmp_seq=pack_no; rn icmp->icmp_id=pid;rn tval= (struct timeval *)icmp->icmp_data; rn gettimeofday(tval,NULL); /*记录发送时间*/ rn icmp->icmp_cksum=cal_chksum( (unsigned short *)icmp,packsize); /*校验算法*/ rn return packsize; rn rn/*发送三个ICMP报文*/ rnvoid send_packet() rnrnrn int packetsize; rn nsend++; rn packetsize=pack(nsend); /*设置ICMP报头*/ rn rn if(sendto(sockfd,sendpacket,packetsize,0,(struct sockaddr *)&dest_addr,sizeof(dest_addr) )icmp_type==ICMP_ECHOREPLY) && (icmp->icmp_id==pid)) rn rn tvsend=(struct timeval *)icmp->icmp_data; rn tv_sub(&tvrecv,tvsend); /*接收和发送的时间差*/ rn rtt=tvrecv.tv_sec*1000+tvrecv.tv_usec/1000; /*以毫秒为单位计算rtt*/ rn /*显示相关信息*/ rn printf("%d byte from %s: icmp_seq=%u ttl=%d rtt=%.3f ms\n",len,inet_ntoa(from.sin_addr),icmp->icmp_seq,<em>ip</em>-><em>ip</em>_ttl,rtt); rn rn //else return -1; rn return 0;rnrnvoid tracing()rnrn while(TTLp_proto) )h_addr,host->h_length); rn// rn// else /*是<em>ip</em>地址*/ rn// memcpy((char *)&dest_addr,(char *)&inaddr,host->h_length); rn inet_pton(AF_INET,argv,&dest_addr.sin_addr);rn /*获取main的进程id,用于设置ICMP的标志符*/ rn pid=getpid(); rn printf("PING %s(%s): %d bytes data in ICMP packets.\n",argv,inet_ntoa(dest_addr.sin_addr),datalen); rn tracing();rn //statistics(SIGALRM); /*进行统计*/ rn return 0; rn rnrn/*两个timeval结构相减*/ rnvoid tv_sub(struct timeval *out,struct timeval *in) rnrn if((out->tv_usec-=in->tv_usec)tv_sec; rn out->tv_usec+=1000000; rn rn out->tv_sec-=in->tv_sec; rn rn现在运行结果是:rnhi0rndest addr is 169.254.8.242rn64 byte from 169.254.8.242: icmp_seq=1 ttl=0 rtt=0.000 msrnhi1rndest addr is 169.254.8.242rn64 byte from 169.254.8.242: icmp_seq=1 ttl=64 rtt=0.000 msrnhi2rndest addr is 169.254.8.242rn64 byte from 169.254.8.242: icmp_seq=2 ttl=1 rtt=0.000 msrnhi3rndest addr is 169.254.8.242rn64 byte from 169.254.8.242: icmp_seq=2 ttl=64 rtt=0.000 msrnhi4rndest addr is 169.254.8.242rn64 byte from 169.254.8.242: icmp_seq=3 ttl=2 rtt=0.000 msrnhi5rndest addr is 169.254.8.242rn64 byte from 169.254.8.242: icmp_seq=3 ttl=64 rtt=0.000 msrnhi6rndest addr is 169.254.8.242rn64 byte from 169.254.8.242: icmp_seq=4 ttl=3 rtt=0.000 msrnhi7rndest addr is 169.254.8.242rn64 byte from 169.254.8.242: icmp_seq=4 ttl=64 rtt=0.000 msrn怎么会是这样。。。
原始套接字捕获数据包
-
WinSocket编程——原始套接字
<em>原始套接字</em>是WINSOCK公开的<em>一个</em>套接字编程接口,它让我们可以在 IP 层对套接字进行编程,控制其行为,常见的应用有抓包 (Sniffer)、分析包、洪水攻击、ICMP ping等,但它不能截取包(所谓的截取包就是把包拦截下来,要做到这种“防火墙”的功能,还需要再低一层的驱动层才可以做到)。但是能把网络上的包复制到本机就已经是<em>一个</em>很有用的功能了。我就曾经试过在<em>一个</em>局域网里打开我的SNIFFER,
Linux原始套接字抓取底层报文
1.<em>原始套接字</em>使用场景         我们平常所用到的网络编程都是在应用层收发数据,每个程序只能收到发给自己的数据,即每个程序只能收到来自该程序绑定的端口的数据。收到的数据往往只包括应用层数据,原有的头部信息在传递过程中被隐藏了。某些情况下我们需要执行更底层的操作,比如监听所有本机收发的数据、修改报头等,而像SOCK_STREAM、SOCK_DGRAMZ则通常用于应用层,并不能满足该需求。 ...
原始套接字抓取所有以太网数据包与分析
If you have any idea, just send comments to me.1.<em>原始套接字</em>介绍关于socket使用客户机/服务器模型的 SOCK_STREAM 或者 SOCK_DGRAM 用于 TCP 和 UDP 连接的应用更为普遍一些,而如果考虑到从网卡中直接捕获原始报文数据就需要用到<em>原始套接字</em> SOCK_RAW 类型了。其中<em>原始套接字</em>根据 socket 选项可以工作在网络不同层
IP头的字节序问题????
IP包在网络上传输使用的是网络序(大头序),IP包的结构如下:rnrnrn×××××××××××××××××××××××××××××××××rn版本 |首部长度| 服务类型 | <em>ip</em>包长度 |rn×××××××××××××××××××××××××××××××××rn 标识 | 分片与偏移 |rn×××××××××××××××××××××××××××××××××rn生存时间 | 协议 | 校验和 |rn×××××××××××××××××××××××××××××××××rn 源地址rn×××××××××××××××××××××××××××××××××rn 目的地址 rnrn其中“<em>ip</em>包长度”“标识”“分片与偏移”“源地址” “目的地址”字节序<em>问题</em>的。但是为什么校验和字段不要要考虑字节序<em>问题</em>,即在从x86机器<em>发包</em>的时候不需要转换????请解释一下!!!!
myeclipse6.0自动提示及自动加头注释
[size=large][color=blue] 方法如下: 1.选择MyEcl<em>ip</em>se6.0菜单栏中的Window-&gt;preferences; 2.选择General-&gt;keys; 3.在右侧中间的窗体中点击word completion后再点击remove binding,在下方的binding中随便输入<em>一个</em>快捷键; 4.然后选择Content Assist点击Remove bind...
原始套接字 原始套接字
<em>原始套接字</em>概述 <em>原始套接字</em>的创建 通过<em>原始套接字</em>发送数据 通过<em>原始套接字</em>接收数据
请教一个IP头解析的问题
这个<em>问题</em>困扰我一天了,我还是想不出解决的办法,希望大家能帮忙看看。rn首先说明一下,IP协议和IP头的结构我清楚,网络字节序我也知道(但实际应用中不太会)。rnrn下面是我用抓包软件抓取的十六进制数据:rn45 00 00 40 ->ver:4 h_len:5 tos:0 totallen:64rnef 40 00 00 ->ident:61248(40x) flag:000 frag:0rn80 01 c7 c5 ->ttl:128(80x) proto:1(icmp) checksum:0xc7c5rnrn下面的数据就不列举了,我通过Raw Socket来获取IP数据,并存在buf中,buf的数据和抓包的数据一样,就是上面的那些十六进制数据。rnrn我的IP结构体:rn[code=C/C++]rntypedef struct _<em>ip</em>hdrrnrn unsigned int version:4; // Version of IPrn unsigned int h_len:4; // Length of the headerrn unsigned char tos; // Type of servicern unsigned short total_len; // Total length of the packetrn unsigned short ident; // Unique identifierrn unsigned short frag_and_flags; // Flagsrn unsigned char ttl; // Time to livern unsigned char proto; // Protocol ( TCP, UDP, etc. )rn unsigned short checksum; // IP checksumrnrn unsigned int sourceIP;rn unsigned int destIP;rn IpHeader;rn[/code]rnrn请问如何把上面的数据解析出来。rn我按照下面的方式( (IpHeader)buf )->version、( (IpHeader)buf )->ttl,但得到的结果是错误的,请问如何才能够得出正确的结果。rnrn希望能给出实现代码,谢谢!!
IP 截包和发包
C++实现的IP 截包和<em>发包</em>
如何使用原始套接字发送数据??
BOOL SendData(unsigned long <em>ip</em>) { //检查Winsock版本 WORD ver=MAKEWORD(2,2); WSADATA wsaData; int err=WSA
应用程序安全的魔道之争
                    来自:sky  应用程序安全的魔道之争   大多数程序员所接触到的套接字(Socket)为两类:  (1)流式套接字(SOCK_STREAM):一种面向连接的Socket,针对于面向连接的TCP服务应用;  (2)数据报式套接字(SOCK_DGRAM):一种无连接的Socket,对应于无连接的UDP服务应用。  从用户的角度来看,SOCK_STREAM、SO
Linux网络编程——原始套接字编程
<em>原始套接字</em>编程和之前的 UDP 编程差不多,无非就是创建<em>一个</em>套接字后,通过这个套接字接收数据或者发送数据。区别在于,<em>原始套接字</em>可以自行组装数据包(伪装本地 IP,本地 MAC),可以接收本机网卡上所有的数据帧(数据包)。另外,必须在管理员权限下才能使用<em>原始套接字</em>。<em>原始套接字</em>的创建int socket ( int family, int type, int protocol );参数:family:...
linux原始套接字实战
本文的主线是<em>一个</em>使用<em>原始套接字</em>发送数据的程序,工作在数据链路层,采用自定义以太网帧协议,靠MAC地址识别目标主机。所以不涉及到IP地址和端口号。程序主要用于互联的两台机器之间进行丢帧率计算。以下部分都是围绕它而展开说明的。内容分为以下几部分: <em>原始套接字</em>概述 <em>原始套接字</em>的创建 自定义协议 发送端程序流程、实现 接收端程序的开发 一、<em>原始套接字</em>概述 先来看看socket函数原型: ...
原始套接字编程
linux<em>原始套接字</em>编程,利用<em>原始套接字</em>实现arp请求和接收源代码
关于填充IP头的一个问题
看到网上的用<em>原始套接字</em>发送数据报的代码,其中填充IP头和TCP头的部分,rnrn//填充IP首部 rn<em>ip</em>Header.h_verlen=(4<<<4|0); rntcpHeader.th_flag=2; //修改这里来实现不同的标志位探测,2是SYN,1是FIN,16是ACK探测 等等 rntcpHeader.th_win=htons(512); rntcpHeader.th_urp=0; rntcpHeader.th_sum=0; rnrn比如:<em>ip</em>Header.ident=1; rn为什么不写成:<em>ip</em>Header.ident=htons(1);
头次来,问一个浏览器的问题!!!
不知道为什么,最近我的IE浏览器出了<em>问题</em>,凡是网页中JAVA脚本无法执行,也就是说:当我把鼠标放在<em>一个</em>链接上,状态栏显示为javasc<em>ip</em>t open什么的,但是点一下rn一点反应也没有。
CI框架redirect自动上了index.php问题
CI框架使用redirect跳转,参数如果写相对路径时会<em>自动</em>匹配,规则如下第一部分:base_url();第二部分:config配置项中的index_page;第三部分:路由。开发时候使用redirect(相对路径)导致跳转URL带<em>上了</em>index.php。解决办法,参数直接传完整路由。...
关于原始套接字中IP首部校验和的问题
以下字段摘自《TCPIP协议详解卷一:协议》rn1。首部检验和字段是根据I P首部计算的检验和码。它不对首部后面的数据进行计算。ICMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。rn2。UDP检验和覆盖UDP首部和UDP数据。回想I P首部的检验和,它只覆盖I P的首部—并不rn覆盖I P数据报中的任何数据。rn UDP和TCP在首部中都有覆盖它们首部和数据的检验和。UDP的检验和是可选的,而TCPrn的检验和是必需的。rn 尽管UDP检验和的基本计算方法与我们在3 . 2节中描述的I P首部检验和计算方法相类似(16 bit字的二进制反码和),但是它们之间存在不同的地方。首先,UDP数据报的长度可以为奇数字节,但是检验和算法是把若干个16 bit字相加。解决方法是必要时在最后增加填充字节0,这只是为了检验和的计算(也就是说,可能增加的填充字节不被传送)。rn 其次, UDP数据报和TCP段都包含<em>一个</em>1 2字节长的伪首部,它是为了计算检验和而设置的。伪首部包含I P首部一些字段。其目的是让UDP两次检查数据是否已经正确到达目的地(例如, I P没有接受地址不是本主机的数据报,以及I P没有把应传给另一高层的数据报传给UDP)。rn3。检验和覆盖了整个的TCP报文段:TCP首部和TCP数据。这是<em>一个</em>强制性的字段,一定是由发端计算和存储,并由收端进行验证。TCP检验和的计算和UDP检验和的计算相似,使用rn如11.3节所述的<em>一个</em>伪首部。rnrnrn<em>问题</em>:rn为什么我看到很多程序在IP首部校验和的校验范围却是<em>ip</em>header + tcpheader(由此可能还有<em>ip</em>header + udpheader)而不是单个<em>ip</em>header。源程序随处可见:rnhttp://yingzhijia.myrice.com/anquan/anf/3.htmrnhttp://www.hzsynet.com/jswd/attacktech/attacktech-0001.htmrn……rnhttp://www.fanqiang.com/a4/b7/20010419/133203.html(这个更厉害,根本就不校验)rnrn哪位高手给解释一下,我的分全用在网络编程版块了,值啊!rn
CI3框架redirect自动上了index.php问题
解决办法:修改config配置项中默认的index_page;
winpcap抓包和原始套接字抓包的区别
请问winpcap抓包和<em>原始套接字</em>抓包的区别在哪里?请尽量详细一点,谢谢
raw_socket(原始套接字)以及普通socket使用终极总结
一、传输层socket(四层socket,普通socket) 可参考本人以下博客: Windows Socket编程之UDP实现大文件的传输:http://blog.csdn.net/luchengtao11/article/details/71016222 Windows Socket编程之TCP实现大文件的传输:http://blog.csdn.net/luchengtao11/arti...
有谁知道原始套接字是什么?
最近在想关于ARP数据包的<em>问题</em>,这种封包是一种特殊的数据包,不是用send或sendto发送的那种,突然想到书上提到除了流套接字和数据报套接字外还有<em>一个</em>叫<em>原始套接字</em>的东西,百度了一下貌似是个很强大的东
基于socket原始套接字的网络嗅探器
// NetSniffer.cpp : 定义控制台应用程序的入口点。 // /* 简单说明一下什么是网络嗅探器,网络嗅探器是<em>一个</em>抓取所有经过网卡数据的软件,在一般使用电脑时,网卡 只接受到发送至本机的数据,那是因为这是网卡是非混杂模式的,挡<em>一个</em>目的地址非本机地址的数据包经过网 卡时,网卡在数据链路层(mac地址)检测到是非本机数据,则直接丢弃,当设置为混杂模式时,所有经过网卡 的数据包均可被读取出
一个Referer头字段的问题
rn张孝祥的《javaweb开发内幕》书上说当通过超链接访问某网址时,会在HTTP请求消息的头字段中带上Referer头字段rnrn然后书上的<em>一个</em>例子通过<em>一个</em>超链接去访问自己的<em>一个</em>Servlet,并在rnservice方法中通过 request.getHeader("referer")抓出头字段Referer的值rnrn可为啥我按照书上一模一样写的例子,通过超链接访问时,总是没有出现Referer头,rn用request.getHeader("referer")得到的值也是nullrnrn用输出request.getHeaderNames() 里面各种各样的头都有,就是没有Referer=。=rnrn是不是现在协议有点儿变了?rnrnrn谢谢各位大人指教,在此有礼了~rn
linux-springboot自动发包脚本
一、脚本命令 #命令上传jar重启 #生效环境变量 source /etc/profile #进入目录 targetDir=/root/yc-cloud/yc-bag-7003/test bakDir=/root/yc-cloud/yc-bag-7003/test/bak cd $targetDir #定义变量 log=log.out key=eureka-server maxBakSize=3...
关于加http://头的问题
现在是2种情况一种是编辑入力的时候URL带HTTP头,另一种则不带,例如WWW.XXXX.COMrn转到确认画面的时候,带HTTP头的URL能正常链接,但没带头的把HTTP://LOCALHOST/加上去了,既HTTP://LOCALHOST/WWW.XXXX.COM,谁能帮忙解决呀
一个动态IP静态IP的问题
我家是用路由+ADSL上网.rn所以这是动态IP吧?rn但是,我在CMD下用<em>ip</em>config查看IP,在本地连接里的IP Address里的IP永远都是192.168.1.*rn可是上http://www.<em>ip</em>138.com/ 查看时,里面的IP跟CMD里的不一样,是116.19.25.*.rn这两个IP有什么不同啊,为什么有两个啊?rnrnrnrn这方面我一直有点不懂啊,请指教一下各位大哥
原始套接字问题
听有人说WINXP不支持<em>原始套接字</em>是不是真的,那2003呢,是不是以后的系统都不支持拉
原始套接字学习
<em>原始套接字</em>来两种类型:1)在IP头中使用预定义的协议,ICMP 2) 在IP头中使用自定义的协议 创建可以是 socket / WSASocket 只不过要将套接字设置为 SOCK_RAW 注意 WIDNOWS XP SP2 已经不再支持原始TCP数据的发送了 下面的内容M...
Linux C raw_socket (原始套接字
我们平常所用到的网络编程都是在应用层收发数据,每个程序只能收到发给自己的数据,即每个程序只能收到来自该程序绑定的端口的数据。收到的数据往往只包括应用层数据。某些情况下我们需要执行更底层的操作,比如监听所有本机收发的数据、修改报头等。 通过<em>原始套接字</em>,我们可以抓取所有发送到本机的IP包(包括IP头和TCP/UDP/ICMP包头),也可以抓取所有本机收到的帧(包括数据链路层协议头)。普通的套接字无法
使用原始套接字进行程序设计
使用<em>原始套接字</em>发送ICMP数据包(ping),并从客户端接收应答数据包。
基于原始套接字(raw socket)的网络抓包工具
基于raw socket的网络抓包工具 1. <em>原始套接字</em>(raw socket)简介 <em>原始套接字</em>可以接收本机网卡上的数据帧或者数据包,利用raw socket可以编写基于IP协议的程序。一般的TCP/UDP类型的套接字只能够访问传输层以及传输层以上的数据,而<em>原始套接字</em>却可以访问传输层一下的数据,所以使用raw socket既可以实现应用层的数据操作,也可以实现链路层的数据操作。 1.1 基本
原始套接字问题
我照着网上的文章写了一段<em>原始套接字</em>Sniffer方面的程序。运行时,在win98上提示在setsockopt那儿出错。但在windows XP上顺利通过,可在recv(Socket,Buff,BuffSize,0)这儿就一直没反应了。rn各位大侠,请解释一下怎么回事啊?rn#include rn#include rn#include rn#include rn#pragma comment(lib,"ws2_32.lib")rnrn#define BufferSize 65536rn#define PROTOCOL_STRING_ICMP_TXT "ICMP" rn#define PROTOCOL_STRING_TCP_TXT "TCP" rn#define PROTOCOL_STRING_UDP_TXT "UDP" rn#define PROTOCOL_STRING_UNKNOW_TXT "UNKNOW" rnrntypedef struct _TCPrnrnWORD SrcPort; //源端口rnWORD DestPort; //目的端口rnDWORD SeqNum; //序列号rnDWORD AckNum; //确认号rnBYTE DataOff; //TCP头长rnBYTE Flags; //标志(如URG、PSH等)rnWORD Window; //窗口大小rnWORD ChkSum; //校验和rnWORD UrgPtr; //紧急指针rnTCP;rnrntypedef TCP *LPTCP;rntypedef TCP UNALIGNED *ULPTCP;rnrntypedef struct _IPrnrnunionrnrnBYTE Version; //版本rnBYTE HdrLen; //首部长度rn;rnrnBYTE ServiceType; //服务类型rnWORD TotalLen; //总长度rnWORD ID; //标识rnrnunionrnrnWORD Flags; //标志rnWORD FragOff; //分段偏移rn;rnrnBYTE TimeToLive; //生存期rnBYTE Protocol; //协议rnWORD HdrChkSum; //头部校验和rnrnDWORD SrcAddr; //源地址rnDWORD DestAddr; //目的地址rnBYTE Option; //可选项rnIP;rnrntypedef IP *LPIP;rntypedef IP UNALIGNED *ULPIP;rnrnSOCKET Socket;rnSOCKADDR_IN addr_in;rnchar Buffer[BufferSize];rnTCP tcp;rnIP <em>ip</em>;rnrnint NetInit(); //网络初始化rnint DecodePacket(); //IP包的解码rnchar* GetProtocolTxt(int Protocol);rnrnint main()rnrnint ret;rnret=NetInit();rnif(ret!=0)rnreturn -1;rnprintf("Net initialized success!\n");rnrnret=DecodePacket();rnif(ret!=0)rnreturn -1;rnrnreturn 0;rnrnrnint NetInit()rnrnWSADATA wsaData;rnBOOL Flag=TRUE;rnchar LocalName[16];rnstruct hostent *pHost;rnDWORD dwValue=1;rnrnif(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) //检查winsock版本rnrnprintf("An error occured when WSAStartuping.....\n");rnreturn -1;rnrnrnSocket=socket(AF_INET,SOCK_RAW,IPPROTO_RAW); //建立<em>原始套接字</em>rnif(socket==INVALID_SOCKET)rnrnprintf("An error occured when setuping the socket.....\n");rnWSACleanup();rnreturn -1;rnrnrnif(setsockopt(Socket,IPPROTO_IP,IP_HDRINCL,(char *)&Flag,sizeof(Flag))==SOCKET_ERROR) //设置IP头操作rnrnprintf("An error occured when setsockopt.....\n");rnWSACleanup();rnreturn -1;rnrnrnif(gethostname((char *)LocalName,sizeof(LocalName)-1)==SOCKET_ERROR) //获取主机名rnrnprintf("An error occured when getting the hostname.....\n");rnWSACleanup();rnreturn -1;rnrnrnif((pHost=gethostbyname((char *)LocalName))==NULL) //获取主机IP地址rnrnprintf("An error occured when getting the IP address.....\n");rnWSACleanup();rnreturn -1;rnrnrnaddr_in.sin_family=AF_INET;rnaddr_in.sin_port=htons(57274);rnaddr_in.sin_addr=*(struct in_addr *)pHost->h_addr_list[0];rnrnif(bind(Socket,(struct sockaddr *)&addr_in,sizeof(addr_in))==SOCKET_ERROR) //把socket绑定到本地地址上rnrnprintf("An error occured when binding the socket.....\n");rnWSACleanup();rnreturn -1;rnrnrnif(ioctlsocket(Socket,SIO_RCVALL,&dwValue)!=0) //设置SOCK_RAW操作为SIO_RCVALL,接受所有数据包rnrnprintf("An error occured when ioctlsocket.....\n");rnWSACleanup();rnreturn -1;rnrnrnreturn 0;rnrnrnint DecodePacket()rnrnint ret;rnprintf("Enter decodepacket() .....\n");rnwhile(TRUE)rnrnprintf("Begin recv....\n");rnret=recv(Socket,Buffer,BufferSize,0);rnprintf("ret:%d\n",ret);rnif(ret>0)rnrnprintf("Begin decode....\n");rn<em>ip</em>=*(IP *)Buffer;rntcp=*(TCP *)(Buffer+<em>ip</em>.HdrLen);rnrnprintf("***********************************************************\n");rnprintf("协议:%s\n",GetProtocolTxt(<em>ip</em>.Protocol));rnprintf("IP源地址:%s\n",inet_ntoa(*(struct in_addr *)&<em>ip</em>.SrcAddr));rnprintf("TCP源端口:%d\n",tcp.SrcPort);rnprintf("IP目的地址:%s\n",inet_ntoa(*(struct in_addr *)&<em>ip</em>.DestAddr));rnprintf("TCP目的端口:%d\n",tcp.DestPort);rnprintf("数据包总长度:%d\n",ntohs(<em>ip</em>.TotalLen));rnprintf("***********************************************************\n");rnrnrnreturn 0;rnrnrnchar* GetProtocolTxt(int Protocol)rnrnswitch(Protocol)rnrncase IPPROTO_ICMP:rnreturn PROTOCOL_STRING_ICMP_TXT;rncase IPPROTO_TCP:rnreturn PROTOCOL_STRING_TCP_TXT;rncase IPPROTO_UDP:rnreturn PROTOCOL_STRING_UDP_TXT; rndefault:rnreturn PROTOCOL_STRING_UNKNOW_TXT;rnrnrnrnrn
原始套接字问题
那位给说说为什么, 会出现<em>原始套接字</em>这种方式, windows网络编程中有句话“利用<em>原始套接字</em>,可以访问位于基层的传输协议” 这一句怎么理解!访问基层的传输协议是指什么协议! rnrnint sockfd(AF_INET,SOCK_RAW,protocol) rn可以创建<em>一个</em><em>原始套接字</em>.根据协议的类型不同我们可以创建不同类型的<em>原始套接字</em> 比如:IPPROTO_ICMP,IPPROTO_TCP,IPPROTO_UDP等等rnrn是不是用<em>原始套接字</em>要自己填充包头等等工作! rn使用sendto的时候rnint sendto (rn SOCKET s, rn const char FAR * buf, rn int len, rn int flags, rn const struct sockaddr FAR * to, rn int tolen rn);rn其中buf是包括<em>ip</em>包头+(udp |tcp | icmp包头)的数据指针!rnrn
一个IP地址管理的问题
我所在的局域网是10.60.56.0/24,局域网中现有的IP都是向学校申请的,想在这个网中加入一台电脑,使用<em>一个</em>未被用过的IP,比如10.60.56.7,但失败。10.60.56.7和10.60.56.0/24的其他电脑因为不经过路由器所以都能互相通信,但是10.60.56.7这个IP不能和其他网段的IP通信。rn如果想让10.60.56.7这个IP和其它网段的IP通信,只有<em>一个</em>办法:向学校申请10.60.56.7这个IP。rnrn 我觉得奇怪的是,10.60.56.0/24这个子网都能和其他子网通信了,为什么这个子网中的<em>一个</em>未被学校分配的IP的通信会被阻挡呢?如果是自己来做网管,想要实现上面所说的限制,应该怎么做呢?
一个IP地址的问题
//如下IP地址分配: 我想网段扫描,rn//比如:10.181.24.1----10.181.24.255rn//10.181.101.1---10.181.101.255rn//请问:由于IP子网掩码不同,我扫描时是否要考虑子网掩码呢?如果考虑的话,应该如何与IP地址进行计算才能正确扫描不同rn//子网掩码的设备.rn业务区域 10.181.24.1-127/25 255.255.255.128rn办公区域 10.181.24.129-254/25 255.255.255.128rn与交换机互联10.181.101.6/30 255.255.255.252rn局域网 10.181.24.3 255.255.255.0rn
原始套接字运用
前几天看了看>第一卷,为了加深理解,便写了几个简单的程序,最近好忙,但是又怕忘记前面所学的知识,就粗糙的整理了一下,贴出来,希望能给初学者以指导,同时借助CU的论坛做个备份,呵呵. 内容安排: 1.<em>原始套接字</em>介绍   1.1 <em>原始套接字</em>工作原理与规则   1.2 简单应用 2 FTP密码窃取器实现(简单的rootkit)   2.1 设计思路   2.2 实现   2.3 不足与改
Linux内核PPP
Linux内核PPP套件设置(1)我们知道,网络的发展也嵌入到了移动通信当中。那么对于在一些移动设备上加入一些设置,就需要嵌入式的操作。那么这里我们就来讲解一下,基于嵌入式Linux下GPRS上网方案中,Linux内核的PPP 设置。硬/软件环境基于S3C2410的嵌入式系统,COM1连接PC,COM2连接SIM300 GPRS模块。该系统运行在Linux 2.6.14操作系统下,使用ppp套件通过SIM300进行PPP拨号。让Linux内核支持PPP进入L
linux下简单的原始套接字通信
SOCK_RAW
将3G上网卡插到Linux,请问一下ttyUSB0 ttyUSB1 ttyUSB2这三个串口分别有什么用?
手上有一块 上海龙旗的U6100 3G模块,usb接口的,内部用的是高通的msm6290, 支持3GPP TS27.005/TS27.007. 当我将它插到主机的USB上时,转出了三个串口: ttyU
USB 3G上网卡讲解之三
USB 3G卡热插拔那些事4——pppd在上一节中我们知道3G卡设备驱动已经加载好了,并且和ttyUSB*已经绑定成功,意味着我们可以拨号了,和3G卡内部3G模块通信了,而我们知道3G模块通信是tty设备,通过串行设备,这里和3G卡的两种工作模式相吻合—moden模式. 首先我们这里先给出3G工作原理图: 我们万事俱备只欠东风了,就是pppd拨号了,当然pppd的源码自己可以去网上下载最
一个上传图片时自动加 文字 水印 效果的问题
想在这个页面上传图片时<em>自动</em>加上公司的文字LOGO 该如何添加组件rn rn rn rn rn rn 建材图片添加rn rn rn 建材图片上传:rn rn rn rn 图片说明:rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn
一个 IP 伪装的问题
教育网的东西老不让访问,那位老兄可以教我<em>一个</em>可以伪装成可以访问教育网IP段的方法?
基于Linux内核C语言原始套接字实现端口轰炸
  使用CentOS系统  靶机使用Kali系统 首先做攻击前准备,修改MAC地址: 命令#ifconfig查看网卡信息确定本网卡的名字   命令# vi /etc/sysconfig/network-scr<em>ip</em>ts/ifcfg-ens33修改网卡配置文件,‘i’进入编辑模式,编辑完成esc推出编辑模式,‘:’进入命令模式键入“wq”保存退出。 添加了MACADDR=00:00:0...
Windows下通过使用RAW原始套接字进行抓包
// 注意:<em>原始套接字</em>只在系统管理员权限下起作用,其它情况下socket创建失败,所以开发时首先以管理员权限启动VS SOCKET nAnniSock = socket(AF_INET, SOCK_RAW, IPPROTO_IP);  // 指定为<em>原始套接字</em>(IP层抓取) // 设置IP_HDRINCL选项,以便自己构造(解析)IP头部 BOOL bRaw = TRUE;
Windows下利用原始套接字实现的一个抓包程序Demo
版权声明:本文为博主原创文章,未经博主允许不得转载。 早就学过了套接字编程,但是<em>原始套接字</em>还没用过。最近听了网络安全老师的课,心血来潮,写了个抓包程序Demo,把代码分享给大家,感兴趣的可以看看。引用一句网络安全老师的话:“你们要本着技术的心态去实践,哎,一部分人,写着写着就成黑客了”。 [cpp] view plain copy #define _CR
Windows平台的原始套接字编程的知识点概要(备忘)
其实从大学学习了C语言后,翻看整本教材只有C语言的语法,根本没有网络编程相关的任何内容,现在回想起来,都记不起自己何时在哪本书上学习了套接字编程,说起TCP、UDP,能知道他们的区别,相关的编程的“套路”,即分别在服务器端和客户端应用程序的固定招数,函数也还是有那么多,但是功能方面嘛,仔细想想,一般除了通信传输数据,文件等,就没有其他目的了,即使有多播,组播,广播等,目的也是为了通信,而且都是在局
Windows下C语言实现原始socket抓包
原始Socket抓包 0x01. 源码: #include &amp;amp;lt;stdio.h&amp;amp;gt; #include &amp;amp;lt;winsock2.h&amp;amp;gt; #include &amp;amp;lt;<em>ip</em>hlpapi.h&amp;amp;gt; #include &amp;amp;lt;mstcp<em>ip</em>.h&amp;amp;gt; #include &amp;amp;lt;windows.h&amp;amp;gt; #pragma comment(lib
一个IP查询的问题
数据库格式rnstart<em>ip</em> end<em>ip</em> countryrn975597568 975599615 上海市长宁区 电信ADSLrnrnrnrnIP应该是4位的8进制数字,那么上面的STARTIP,ENDIP什么意思呢???请大虾解释一下!!!!!
xwork2.1.6加上了TextUtils.class
使用struts2框架的时候会出现缺少com/opensymphony/xwork2/util/TextUtils 的异常提示就因为2.1.6版本的xwork缺少了TextUtils.class这个类, 我自己从2.1.2版本里复制了<em>一个</em>添加进去的
一个IP访问的问题~
服务器内网IP地址192.168.0.1,通过ADSL路由器上外网(电信),下载花生壳之类的软件,申请了几个域名,比如有三个rnrna.baidu.comrnb.baidu.comrnc.baidu.comrnrn在IIS里,做了三个“网站”,每个网站的“主机头值”,分别写如以上三个域名,就实现了同一台服务器,通过输入不同的域名访问,就可以看到不同的内容,也不用加虚拟目录rnrn但是 这样做以后 通过内网IP就不可以访问了rnrn向请教一下 有什么办法可以通过内网IP访问??(有三个“网站”,我只要通过IP访问其中<em>一个</em>就好),或有高手能教我,如果我在一块网卡上设定多个IP,分别指向三个“网站”来访问,那就最好了rnrn谢谢~
一个TCP/IP的问题
我在用SOCKET编程的时候能够访问TCP/IP协议吗?我并无恶意只是想学更多的东西。多谢了
一个IP分配问题
好多公司配置局域网时用这样的IP地址,rn10.0.0.1rn10.0.2.1rn最早时候用192.168.0.1rn后来有发现用192.168.1.1rn能讲讲这么分配的原则或理由吗?
C++使用原始套接字抓包
最近在研究使用<em>原始套接字</em>抓包,在网上找各种资料,下面是自己整理的测试代码编程实现主要有以下几个步骤:    1. 初始化WINSOCK库;    2. 创建SOCKET句柄;    3. 绑定SOCKET句柄到<em>一个</em>本地地址;    4. 设置该SOCKET为接收所有数据的模式;    5. 接收数据包;    6. 关闭SOCKET句柄,清理WINSOCK库;#include &amp;lt;stdio....
Raw_Socket原始套接字
纯记录,转自:http://a1liujin.blog.51cto.com/5519498/1697465 一、创建raw socket的权限:只有root权限才能够创建. 二、raw socket的用途:主要有三个方面 (1):通过raw socket来接收发向本机的ICMP,IGMP协议包,或者用来发送这些协议包. (2):接收发向本机但TCP/IP栈不
关于原始套接字
数据报式套接字(SOCK_DGRAM),仅限于UDP; 流式套接字(SOCK_STREAM),仅限于TCP; TCP与UDP各自有独立的port互不影响,没<em>一个</em>进程可以使用多个port; <em>原始套接字</em>(SOCK_RAW),它实现于系统核心.可以接收本机网卡上所有的数据帧(数据包),对于监听网络流量和分析网络数据很有作用.开发人员可发送自己组装的数据包到网络上.<em>原始套接字</em>可以收发
利用原始套接字实现对流经本机IP包的捕获
经过上一篇博客的总结,我知道到了<em>原始套接字</em>接收到的字符串的开始字段是IP数据报的首部,所以我想除了之前利用win_pcap可以捕获数据包以外,理论上来说<em>原始套接字</em>也可以实现对IP数据报的捕获。思路也很简单,捕获到字符串以后转换成指向IP首部结构体的指针,再打印相关信息就可以了。 当然由于网卡会默认丢掉不属于本机的数据包,所以需要将套接字设置为接收所有数据。win_pcap是直接对网卡进行设置。i
一个ip地址的问题
就拿我公司内部局域网中的电脑来说,都可以上外网,我想问下,这些电脑每次上外网的时候,是不是<em>自动</em>被分配<em>一个</em>公网的<em>ip</em>地址?而且每次上网时候,这些被分配的公网<em>ip</em>地址应该不相同吧,如果这样的话,用这些电脑干坏事的话,别人是不是追踪不到干坏事的电脑哦?
一个tcp/ip问题
当我开始侦听网络,并创建了<em>一个</em>新的socket类时,如何判断是否有用户连接?如何与用户进行信息交换?如下:rn sockets_object.Listen(0)rn Dim line As Socket = sockets_object.Accept()rnrn接下来要如何做呀?
原始套接字问题
我用<em>原始套接字</em>写了个程序,并把网卡设为混杂模式,想接收网络上的所有数据,可是出了自己的机器发出和收到的数据,只能接到别的机器和网关通信的,还有别的机器进行广播和组播的数据,而且,奇怪的是,我可以接收到网络上所有的ICMP报文。rn请问为什么?rn<em>原始套接字</em>是工作在IP层还是链路层?
[求助]原始套接字监听IP数据包
1. 用异步方式监听IP数据包rn[code=csharp]rnpublic class SniffSocketrnrnprivate Socket socket;rnprivate byte[] receiveBufferBytes;rnprivate int receiveBufferLength;rnprivate bool keepRunning = true;rnprivate SniffSocket()rnrnreceiveBufferLength = 4096;rnreceiveBufferBytes = new byte[receiveBufferLength];rnsocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);rnsocket.Blocking = false;rnsocket.Bind(new IPEndPoint(IPAddress.Parse("192.168.0.100"), 0));rnrnpublic void Run()rn rnrn //Socket开始异步监听数据包,并利用委托AsyncCallbackrn //在相应异步操作完成时调用CallReceive方法进行处理。rn IAsyncResult ar = socket.BeginReceive(receiveBufferBytes, 0, rn receiveBufferLength, SocketFlags.None,rn new AsyncCallback(CallReceive), this);rnrn rnprivate void CallReceive(IAsyncResult ar)rn rn int receivedBytes;rn receivedBytes = socket.EndReceive(ar);//结束挂起的异步读取rn Receive(receiveBufferBytes, receivedBytes);//解析接收的数据包rn if (keepRunning) Run();//继续侦听rnrn rnprivate void Receive(byte[] buf, int len)rnrn //解析接收到的数据包rnrnrn[/code]rn//-------------------------------------------------------------------------------------------------------------rn以上代码是可以正常运行的rn。rn。rn。rn[color=#FF0000]rn然后,我把[color=#FFFF00]socket.Blocking=false;[/color]注释掉,改成用同步方式来Receive()侦听接收,程序就无法接收到数据包了,<em>原始套接字</em>不能用同步方式来接收数据包么?rn[/color]rnrnrn
原始套接字捕获的包如何提取出数据部分?
-
如何用原始套接字实现在mac层的收发
如何用<em>原始套接字</em>实现在mac层的收发?根据mac地址进行收发数据 现在已经做过win下用<em>原始套接字</em>构造<em>ip</em>头,进行收发。 网上好多都是<em>ip</em>parse或者ping的程序,关于mac层收发的程序好像没找到
原始套接字实现网络监听
 作者:张志强下载源代码 1、引言    网络监听工具(sinff)是提供给网络管理员的一类管理工具。在以太网中(Ethernet),当网络上连接多台计算机时,某瞬间只能有一台计算机可以传送数据。以太网中,数据是以被称为帧的数据结构为单位进行交换的。通常,在计算机网络上交换的数据结构体的单位是数据包。而在以太网中则称为帧。这种数据包是由记录着数据包发送给对方所必需信息的报头部分和记录着发送信息
vista优化大师3.8下载
3.80最新版下载:上帝模式、护眼功能 春节后的第一个版本,之前Windows7优化大师里面提供了两个功能一直很受Win7用户喜欢,是软媒特意推出的独家功能,今天加到了Vista优化大师里面。这两个功能一个是上帝模式(参看:《上帝模式大全》、《上帝模式大揭秘》),一个是护眼模式(参看:《保护眼睛,请对Vista、Win7和XP做如下设置》)。 这两个功能还是比较好玩和实用的,大家仔细的把玩一下吧。 迄今为止,Vista优化大师的独家功能已经有了太多太多了,欢迎朋友们给我们在软媒论坛里面继续提出好的建议! 魔方也好,闪游也好,Vista优化大师和也好,软媒所做的一切努力,大家之前已经 相关下载链接:[url=//download.csdn.net/download/ziganlan1253181413/2224276?utm_source=bbsseo]//download.csdn.net/download/ziganlan1253181413/2224276?utm_source=bbsseo[/url]
\IPV6.doc\IPV6.doc下载
\IPV6.doc\IPV6.doc\IPV6.doc\IPV6.doc\IPV6.doc 相关下载链接:[url=//download.csdn.net/download/nihaoma157160/2484130?utm_source=bbsseo]//download.csdn.net/download/nihaoma157160/2484130?utm_source=bbsseo[/url]
软件和软件工程下载
软件和软件工程是课程中必须学的的姿势,所以这个是很好的资源,希望大家踊跃下载 相关下载链接:[url=//download.csdn.net/download/qq_25275555/8357357?utm_source=bbsseo]//download.csdn.net/download/qq_25275555/8357357?utm_source=bbsseo[/url]
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数
我们是很有底线的