首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > windows >

高分求高手解决方法

2012-03-13 
高分求高手是这样的,我住的这个房东的网速原来一直很好。但是近来网速慢的出奇!!有时候qq登上去都能自动掉

高分求高手
是这样的,我住的这个房东的网速原来一直很好。但是近来网速慢的出奇!!有时候qq登上去都能自动掉下来。每次我就发现网线就掉了,然后在链接上的时候网速开始就能好一点点。房东给我说是他重启路由器了。要不然实在是没办法了。
我就想问问高手们,我咋才能知道是不是这里面有人在捣乱。因为原来网速一直很好呀! 还有我和房东挺熟的,他让我帮他弄,所以我现在可以等上去路由器。 记得原来上学的时候老师给我们教过原始套接字 还写过一点小程序,我用我的程序运行的结果是这样的:
~ 1 MAC: 00:50:56:C0:00:08==>FF:FF:FF:FF:FF:FF
  2 2 IP: 192.168.227.1 => 192.168.227.255
  3 3 Protocol: UDP,source port: 138,dest port: 138
  4 4 MAC: 00:50:56:C0:00:08==>FF:FF:FF:FF:FF:FF
  5 5 IP: 192.168.227.1 => 192.168.227.255
  6 6 Protocol: UDP,source port: 138,dest port: 138
  7 7 MAC: 00:50:56:E5:30:2B==>00:0C:29:76:22:D7
  8 8 IP: 192.168.227.254 => 192.168.227.128
  9 9 Protocol: UDP,source port: 67,dest port: 68
  10 10 MAC: 00:50:56:C0:00:08==>FF:FF:FF:FF:FF:FF
  11 11 IP: 192.168.227.1 => 192.168.227.255
  12 12 Protocol: UDP,source port: 138,dest port: 138

程序的源代码是这样

C/C++ code
/***************SimpelSniffer.c*************/#include <stdio.h>#include <unistd.h>#include <sys/socket.h>#include <sys/types.h>#include <linux/if_ether.h>#include <linux/in.h>#define BUFFER_MAX 2048int main(int argc, char *argv[]){        int sock, n_read, proto;        char buffer[BUFFER_MAX];    char *ethhead, *iphead, *tcphead, *udphead, *icmphead, *p;        if((sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP))) < 0)    {        fprintf(stdout, "create socket error\n");        exit(0);    }    while(1)     {        n_read = recvfrom(sock, buffer, 2048, 0, NULL, NULL);        /*        14   6(dest)+6(source)+2(type or length)        +        20   ip header         +        8    icmp,tcp or udp header        = 42        */        if(n_read < 42)         {            fprintf(stdout, "Incomplete header, packet corrupt\n");            continue;        }                ethhead = buffer;        p = ethhead;        int n = 0XFF;        printf("MAC: %.2X:%02X:%02X:%02X:%02X:%02X==>"            "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X\n",            p[6]&n, p[7]&n, p[8]&n, p[9]&n, p[10]&n, p[11]&n,            p[0]&n, p[1]&n, p[2]&n, p[3]&n, p[4]&n, p[5]&n);        iphead = ethhead + 14;          p = iphead + 12;                printf("IP: %d.%d.%d.%d => %d.%d.%d.%d\n",            p[0]&0XFF, p[1]&0XFF, p[2]&0XFF, p[3]&0XFF,            p[4]&0XFF, p[5]&0XFF, p[6]&0XFF, p[7]&0XFF);                proto = *(iphead + 9);        p = iphead + 20;        printf("Protocol: ");        switch(proto)        {        case IPPROTO_ICMP: printf("ICMP\n");break;        case IPPROTO_IGMP: printf("IGMP\n");break;        case IPPROTO_IPIP: printf("IPIP\n");break;        case IPPROTO_TCP :        case IPPROTO_UDP : printf("%s,", proto == IPPROTO_TCP ? "TCP": "UDP");             printf("source port: %u,",(p[0]<<8)&0XFF00 |  p[1]&0XFF);            printf("dest port: %u\n", (p[2]<<8)&0XFF00 | p[3]&0XFF);            break;        case IPPROTO_RAW : printf("RAW\n");break;        default:printf("Unkown, please query in include/linux/in.h\n");        }    }}


现在都忘了当时是啥意思了 但是大概还能看明白! 对了 ,这是linux下的程序! 望高手指点 我咋能看出是那个人在捣乱 还是我们的路由器出问题了

[解决办法]

分开来说,就是抓取数据的mac、IP及协议信息,数据包太少,几乎都是arp广播、IP广播及138解析主机名用的
[解决办法]
你这样抓包应该只能抓到广播包和你自己的包,其他机器的包你应该抓不到。应为他是交换方式而不是HUB方式,你可以把网线都挂在一个hub上,再接到路由器上来抓包。无线的用WildPackets OmniPeek试试抓包


[解决办法]
那个c程序有些难度哦 我是看不懂的!
要是你和其他人公用路由可能是arp欺骗!你的数据包被其他人恶意的捕获了,也有可能是谁给你的路由进行了流量控制!
[解决办法]
1.进入路由器看看是不是有人更改了自己的上下行速率.
2.打电话给电信最直接的解决方法,他们应该没有做限速吧.
3.确信你们的电脑没毒吧.
4.一般来说,宽带出现速度慢,你首先检测是否有掉包现象,如果有,就可能是线路或路由器出现问题。如果ping 正常,说明是设置问题,建议你检查一下IP获取情况(电脑直接连接宽带而不通过路由器,看是否能正常获取IP)
5.部分路由使用的插头(即稳压器)电压不稳,造成路由工作不正常

热点排行