欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)-編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      時(shí)間:2019-05-14 02:19:49下載本文作者:會(huì)員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)-編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)-編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器》。

      第一篇:計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)-編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      一、問題描述

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器,TCP協(xié)議分析器是一種用于監(jiān)督和跟蹤網(wǎng)絡(luò)活動(dòng)的診斷工具,它從局域網(wǎng)中抓取IP數(shù)據(jù)包,并對(duì)它進(jìn)行分析得到相應(yīng)的頭部信息,過濾TCP包進(jìn)行分析,得到TCP包的相應(yīng)信息。

      二、基本要求

      1.利用原始套接字實(shí)現(xiàn)簡單的TCP協(xié)議分析器。2.系統(tǒng)功能包括:

      2.1 原始套接字與網(wǎng)卡綁定,并接收流經(jīng)網(wǎng)卡的所有數(shù)據(jù)包; 2.2 對(duì)數(shù)據(jù)包進(jìn)行分析以獲得源IP地址和目的IP地址; 2.3 對(duì)TCP Segment進(jìn)行分析以獲得其首部詳細(xì)信息; 2.4 顯示分析結(jié)果。3 建議使用VC++。

      三、設(shè)計(jì)思想

      TCP協(xié)議的數(shù)據(jù)傳送程序是由二個(gè)子程序組成的。也可以看成是服務(wù)器端程序和客戶端程序,其中:服務(wù)器端程序的功能是偵聽端口號(hào),接收遠(yuǎn) 程主要的TCP連接申請(qǐng),并接收遠(yuǎn)程主機(jī)傳送來的文字?jǐn)?shù)據(jù)。另外一個(gè)子程序,也就是所謂的客戶端程序,主要實(shí)現(xiàn)向網(wǎng)絡(luò)的遠(yuǎn)程主機(jī)提出TCP連接申請(qǐng)。

      程序利用原始套接字抓取局域網(wǎng)中的IP包。

      TCP協(xié)議分析器實(shí)現(xiàn)了sniffer的一部分功能。而sniffer的工作原理是:1.把網(wǎng)卡置于混雜模式;2.捕獲數(shù)據(jù)包;3.分析數(shù)據(jù)包。

      Raw Socket: 原始套接字可以用它來發(fā)送和接收 IP 層以上的原始數(shù)據(jù)包, 如 ICMP,TCP, UDP等。

      四、系統(tǒng)結(jié)構(gòu)

      (1)Pcap_addr描述網(wǎng)絡(luò)接口地址;

      (2)pcap_pkthdr用來描述每個(gè)捕獲到的數(shù)據(jù)包的基本信息;(3)int_pcaplookupnet獲取網(wǎng)絡(luò)地址和網(wǎng)絡(luò)掩碼;

      (4)int_pcaploop循環(huán)捕獲網(wǎng)絡(luò)數(shù)據(jù)包,直到遇到錯(cuò)誤或滿足退出條件;(5)pcap_t* pcap_open_dead構(gòu)造一個(gè)libpcap句柄。

      五、程序流程(或模塊劃分)

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      六、源程序

      #include “pcap.h” struct ether_header {

      u_int8_t ether_dhost[6];

      /* 目的以太網(wǎng)地址 */

      u_int8_t ether_shost[6];

      /* 源以太網(wǎng)地址 */

      u_int16_t ether_type;

      /* 以太網(wǎng)類型 */ };struct arp_header

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      {

      u_int16_t arp_hardware_type;

      /* 硬件類型 */

      u_int16_t arp_protocol_type;

      /* 協(xié)議類型 */

      u_int8_t arp_hardware_length;

      /* 硬件地址長度 */

      u_int8_t arp_protocol_length;

      /* 協(xié)議地址長度 */

      u_int16_t arp_operation_code;

      /* 操作碼 */

      u_int8_t arp_source_ethernet_address[6];

      /* 源以太網(wǎng)地址 */

      u_int8_t arp_source_ip_address[4];

      /* 源IP地址 */

      u_int8_t arp_destination_ethernet_address[6];

      /* 目的以太網(wǎng)地址 */

      u_int8_t arp_destination_ip_address[4];

      /* 目的IP地址 */ };struct ip_header {

      #if defined(WORDS_BIGENDIAN)

      u_int8_t ip_version: 4,/* 版本 */

      ip_header_length: 4;

      /* 首部長度 */

      #else

      u_int8_t ip_header_length: 4, ip_version: 4;

      #endif

      u_int8_t ip_tos;

      /* 服務(wù)質(zhì)量 */

      u_int16_t ip_length;

      /* 長度 */

      u_int16_t ip_id;

      /* 標(biāo)識(shí) */

      u_int16_t ip_off;

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      /* 偏移 */

      u_int8_t ip_ttl;

      /* 生存時(shí)間 */

      u_int8_t ip_protocol;

      /* 協(xié)議類型 */

      u_int16_t ip_checksum;

      /* 校驗(yàn)和 */

      struct in_addr ip_souce_address;

      /* 源IP地址 */

      struct in_addr ip_destination_address;

      /* 目的IP地址 */ };struct udp_header {

      u_int16_t udp_source_port;

      /* 源端口號(hào) */

      u_int16_t udp_destination_port;

      /* 目的端口號(hào) */

      u_int16_t udp_length;

      /* 長度 */

      u_int16_t udp_checksum;

      /* 校驗(yàn)和 */ };struct tcp_header {

      u_int16_t tcp_source_port;

      /* 源端口號(hào) */

      u_int16_t tcp_destination_port;

      /* 目的端口號(hào) */

      u_int32_t tcp_sequence_liuzhen;

      /* 序列號(hào) */

      u_int32_t tcp_acknowledgement;

      /* 確認(rèn)序列號(hào) */

      #ifdef WORDS_BIGENDIAN

      u_int8_t tcp_offset: 4,/* 偏移 */

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      tcp_reserved: 4;

      /* 未用 */

      #else

      u_int8_t tcp_reserved: 4,/* 未用 */

      tcp_offset: 4;

      /* 偏移 */

      #endif

      u_int8_t tcp_flags;

      /* 標(biāo)記 */

      u_int16_t tcp_windows;

      /* 窗口大小 */

      u_int16_t tcp_checksum;

      /* 校驗(yàn)和 */

      u_int16_t tcp_urgent_pointer;

      /* 緊急指針 */ };struct icmp_header {

      u_int8_t icmp_type;

      /* ICMP類型 */

      u_int8_t icmp_code;

      /* ICMP代碼 */

      u_int16_t icmp_checksum;

      /* 校驗(yàn)和 */

      u_int16_t icmp_id;

      /* 標(biāo)識(shí)符 */

      u_int16_t icmp_sequence;

      /* 序列碼 */ };void tcp_protocol_packet_callback(u_char *argument, const struct pcap_pkthdr *packet_header, const u_char *packet_content){

      struct tcp_header *tcp_protocol;

      /* TCP協(xié)議變量 */

      u_char flags;

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      /* 標(biāo)記 */

      int header_length;

      /* 長度 */

      u_short source_port;

      /* 源端口 */

      u_short destination_port;

      /* 目的端口 */

      u_short windows;

      /* 窗口大小 */

      u_short urgent_pointer;

      /* 緊急指針 */

      u_int sequence;

      /* 序列號(hào) */

      u_int acknowledgement;

      /* 確認(rèn)號(hào) */

      u_int16_t checksum;

      /* 校驗(yàn)和 */

      tcp_protocol =(struct tcp_header*)(packet_content + 14+20);

      /* 獲得TCP協(xié)議內(nèi)容 */

      source_port = ntohs(tcp_protocol->tcp_source_port);

      /* 獲得源端口 */

      destination_port = ntohs(tcp_protocol->tcp_destination_port);

      /* 獲得目的端口 */

      header_length = tcp_protocol->tcp_offset *4;

      /* 長度 */

      sequence = ntohl(tcp_protocol->tcp_sequence_liuzhen);

      /* 序列碼 */

      acknowledgement = ntohl(tcp_protocol->tcp_acknowledgement);

      /* 確認(rèn)序列碼 */

      windows = ntohs(tcp_protocol->tcp_windows);

      /* 窗口大小 */

      urgent_pointer = ntohs(tcp_protocol->tcp_urgent_pointer);

      /* 緊急指針 */

      flags = tcp_protocol->tcp_flags;

      /* 標(biāo)識(shí) */

      checksum = ntohs(tcp_protocol->tcp_checksum);

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      /* 校驗(yàn)和 */

      printf(“-------TCP協(xié)議

      -------n”);

      printf(“源端口號(hào):%dn”, source_port);

      printf(“目的端口號(hào):%dn”, destination_port);

      switch(destination_port)

      {

      case 80:

      printf(“上層協(xié)議為HTTP協(xié)議n”);

      break;

      case 21:

      printf(“上層協(xié)議為FTP協(xié)議n”);

      break;

      case 23:

      printf(“上層協(xié)議為TELNET協(xié)議n”);

      break;

      case 25:

      printf(“上層協(xié)議為SMTP協(xié)議n”);

      break;

      case 110:

      printf(“上層協(xié)議POP3協(xié)議n”);

      break;

      default:

      break;

      }

      printf(“序列碼:%un”, sequence);

      printf(“確認(rèn)號(hào):%un”, acknowledgement);

      printf(“首部長度:%dn”, header_length);

      printf(“保留:%dn”, tcp_protocol->tcp_reserved);

      printf(“標(biāo)記:”);

      if(flags &0x08)

      printf(“PSH ”);

      if(flags &0x10)

      printf(“ACK ”);

      if(flags &0x02)

      printf(“SYN ”);

      if(flags &0x20)

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      printf(“URG ”);

      if(flags &0x01)

      printf(“FIN ”);

      if(flags &0x04)

      printf(“RST ”);

      printf(“n”);

      printf(“窗口大小:%dn”, windows);

      printf(“校驗(yàn)和:%dn”, checksum);

      printf(“緊急指針:%dn”, urgent_pointer);} void ip_protocol_packet_callback(u_char *argument, const struct pcap_pkthdr *packet_header, const u_char *packet_content){

      struct ip_header *ip_protocol;

      /* IP協(xié)議變量 */

      u_int header_length;

      /* 長度 */

      u_int offset;

      /* 偏移 */

      u_char tos;

      /* 服務(wù)質(zhì)量 */

      u_int16_t checksum;

      /* 校驗(yàn)和 */

      ip_protocol =(struct ip_header*)(packet_content + 14);

      /* 獲得IP協(xié)議內(nèi)容 */

      checksum = ntohs(ip_protocol->ip_checksum);

      /* 獲得校驗(yàn)和 */

      header_length = ip_protocol->ip_header_length *4;

      /* 獲得長度 */

      tos = ip_protocol->ip_tos;

      /* 獲得服務(wù)質(zhì)量 */

      offset = ntohs(ip_protocol->ip_off);

      /* 獲得偏移 */ if(ip_protocol->ip_protocol==6)

      {

      printf(“-----------IP協(xié)議

      -----------n”);

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      printf(“版本號(hào):%dn”, ip_protocol->ip_version);

      printf(“首部長度:%dn”, header_length);

      printf(“服務(wù)質(zhì)量:%dn”, tos);

      printf(“總長度:%dn”, ntohs(ip_protocol->ip_length));

      printf(“標(biāo)識(shí):%dn”, ntohs(ip_protocol->ip_id));

      printf(“偏移:%dn”,(offset &0x1fff)*8);

      printf(“生存時(shí)間:%dn”, ip_protocol->ip_ttl);

      printf(“協(xié)議類型:%dn”, ip_protocol->ip_protocol);

      printf(“上層協(xié)議為TCP協(xié)議n”);

      printf(“校驗(yàn)和:%dn”, checksum);

      printf(“源IP地址:%sn”, inet_ntoa(ip_protocol->ip_souce_address));

      /* 獲得源IP地址 */

      printf(“目的IP地址:%sn”, inet_ntoa(ip_protocol->ip_destination_address));

      /* 獲得目的IP地址 */

      } } void ethernet_protocol_packet_callback(u_char *packet_header, const u_char *packet_content){ static int packet_number = 1;

      /* 數(shù)據(jù)包個(gè)數(shù),靜態(tài)變量 */ u_short ethernet_type;

      /* 以太網(wǎng)類型 */

      struct ether_header *ethernet_protocol;struct ip_header *ip_protocol;

      /* IP協(xié)議變量 */

      u_int header_length;

      /* 長度 */

      u_int offset;

      /* 偏移 */

      u_char tos;

      /* 服務(wù)質(zhì)量 */

      u_int16_t checksum;

      /* 校驗(yàn)和 */

      ip_protocol =(struct ip_header*)(packet_content + 14);

      /* 獲得IP協(xié)議內(nèi)容 */

      checksum = ntohs(ip_protocol->ip_checksum);

      *argument, const struct pcap_pkthdr 編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      /* 獲得校驗(yàn)和 */

      header_length = ip_protocol->ip_header_length *4;

      /* 獲得長度 */

      tos = ip_protocol->ip_tos;

      /* 獲得服務(wù)質(zhì)量 */

      offset = ntohs(ip_protocol->ip_off);

      /* 獲得偏移 */

      /* 以太網(wǎng)協(xié)議變量 */ ethernet_protocol =(struct ether_header*)packet_content;ethernet_type = ntohs(ethernet_protocol->ether_type);/* 獲得以太網(wǎng)類型 */ if(ethernet_type==0x0800 && ip_protocol->ip_protocol==6){ u_char *mac_string;

      /* 以太網(wǎng)地址 */

      printf(“**************************************************n”);

      printf(“捕獲第%d個(gè)TCP網(wǎng)絡(luò)數(shù)據(jù)包n”, packet_number);

      printf(“捕獲時(shí)間:n”);

      printf(“%s”, ctime((const time_t*)&packet_header->ts.tv_sec));

      /* 獲得捕獲數(shù)據(jù)包的時(shí)間 */

      printf(“數(shù)據(jù)包長度:n”);

      printf(“%dn”, packet_header->len);

      printf(“--------

      以太網(wǎng)協(xié)議

      --------n”);

      /* 獲得以太網(wǎng)協(xié)議內(nèi)容 */

      printf(“類型:n”);

      printf(“%04xn”, ethernet_type);

      printf(“源以太網(wǎng)地址: n”);

      mac_string = ethernet_protocol->ether_shost;

      printf(“%02x:%02x:%02x:%02x:%02x:%02xn”,*mac_string, *(mac_string *(mac_string + 2), *(mac_string + 3), *(mac_string + 4), *(mac_string + 5));

      /* 獲得源以太網(wǎng)地址 */

      printf(“目的以太網(wǎng)地址: n”);

      mac_string = ethernet_protocol->ether_dhost;

      printf(“%02x:%02x:%02x:%02x:%02x:%02xn”, *mac_string, *(mac_string *(mac_string + 2), *(mac_string + 3), *(mac_string + 4), *(mac_string + 5));

      /* 獲得目的以太網(wǎng)地址 */

      ip_protocol_packet_callback(argument, packet_header, packet_content);

      + 1),+ 1), 編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      packet_number++;

      printf(“**************************************************n”);

      } } void main(){

      pcap_t *pcap_handle;

      /* Winpcap句柄 */

      char error_content[PCAP_ERRBUF_SIZE];

      /* 存儲(chǔ)錯(cuò)誤信息 */

      char *net_interface;

      /* 網(wǎng)絡(luò)接口 */

      struct bpf_program bpf_filter;

      /* BPF過濾規(guī)則 */

      char bpf_filter_string[] = "";

      /* 過濾規(guī)則字符串 */

      bpf_u_int32 net_mask;

      /* 掩碼 */

      bpf_u_int32 net_ip;

      /* 網(wǎng)路地址 */

      net_interface = pcap_lookupdev(error_content);

      /* 獲得可用的網(wǎng)絡(luò)接口 */

      pcap_lookupnet(net_interface, &net_ip, &net_mask, error_content);

      /* 獲得網(wǎng)絡(luò)地址和掩碼地址 */

      pcap_handle = pcap_open_live(net_interface, BUFSIZ, 1, 1, error_content);

      /* 打開網(wǎng)路接口 */

      pcap_compile(pcap_handle, &bpf_filter, bpf_filter_string, 0, net_ip);

      /* 編譯BPF過濾規(guī)則 */

      pcap_setfilter(pcap_handle, &bpf_filter);

      /* 設(shè)置過濾規(guī)則 */

      if(pcap_datalink(pcap_handle)!= DLT_EN10MB)

      return;

      pcap_loop(pcap_handle,-1, ethernet_protocol_packet_callback, NULL);

      /* 注冊(cè)回調(diào)函數(shù),循環(huán)捕獲網(wǎng)絡(luò)數(shù)據(jù)包,利用回調(diào)函數(shù)來處理每個(gè)數(shù)據(jù)包 */

      pcap_close(pcap_handle);

      /* 關(guān)閉Winpcap操作 */ }

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      七、測(cè)試數(shù)據(jù)

      本地局域網(wǎng)IP數(shù)據(jù)包

      八、測(cè)試情況

      程序運(yùn)行結(jié)果圖:

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      結(jié) 論

      通過兩周的課程設(shè)計(jì),增強(qiáng)了我的實(shí)際動(dòng)手能力,通過實(shí)際的編程整合串聯(lián)了我所學(xué)到的知識(shí)。另外我還學(xué)到了作為編程人員的一些基本素質(zhì),這為我畢業(yè)后找工作奠定了基礎(chǔ)。

      通過做TCP協(xié)議分析器學(xué)習(xí)的很多網(wǎng)絡(luò)編程知識(shí): 1.學(xué)會(huì)了winpcap網(wǎng)絡(luò)數(shù)據(jù)報(bào)捕獲開發(fā)包的使用; 2.綁定網(wǎng)卡函數(shù)bind(); 3.數(shù)據(jù)接受函數(shù)recv(); 4.Windows套接字編程;

      5.學(xué)習(xí)了原始套接字編程的基本機(jī)制; 6.學(xué)習(xí)對(duì)數(shù)據(jù)包進(jìn)行協(xié)議分析的基本方法。

      通過做TCP協(xié)議分析器學(xué)習(xí)的很多Visual C++ Windows編程知識(shí):

      1.學(xué)會(huì)了Windows常用數(shù)據(jù)結(jié)構(gòu)的使用;

      2.學(xué)到了一些用Visual C++ Windows編程的技巧。

      編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器

      參考文獻(xiàn)

      [1] 甘玲 邱勁 《面向?qū)ο蠹夹g(shù)與Visual C++ 》 清華大學(xué)出版社 [2] 任哲 《MFC Windows 應(yīng)用程序設(shè)計(jì)》清華大學(xué)出版社 [3] 《計(jì)算機(jī)網(wǎng)絡(luò)》 北京:機(jī)械工業(yè)出版社

      [4] 《Visual C++網(wǎng)絡(luò)通信編程實(shí)用案例精選》 人民郵電出版社 [5] 《windows程序設(shè)計(jì)》 北京大學(xué)出版社

      第二篇:計(jì)算機(jī)網(wǎng)絡(luò) 課程設(shè)計(jì) 發(fā)送TCP數(shù)據(jù)包

      課設(shè)名稱:發(fā)送TCP數(shù)據(jù)包

      班級(jí):

      學(xué)號(hào):

      姓名:

      指導(dǎo)老師: 日期: 2012.6.15

      計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告

      目錄

      一.設(shè)計(jì)題目與要求........................................................................................................2

      1.設(shè)計(jì)題目................................................................................................................2

      2.設(shè)計(jì)要求................................................................................................................2

      二.需求分析...................................................................................................................2三.詳細(xì)設(shè)計(jì)...................................................................................................................2

      1.創(chuàng)建一個(gè)原始套接字,并設(shè)置IP頭選項(xiàng).................................................................3

      2.構(gòu)造IP頭和TCP頭...............................................................................................3

      3.計(jì)算校驗(yàn)和的子函數(shù)..............................................................................................4

      4.流程圖...................................................................................................................6

      四.調(diào)試分析...................................................................................................................7

      五.運(yùn)行結(jié)果...................................................................................................................7

      六.總結(jié)..........................................................................................................................8

      七.源程序......................................................................................................................9

      發(fā)送TCP數(shù)據(jù)包

      一.設(shè)計(jì)題目與要求

      1.設(shè)計(jì)題目

      發(fā)送TCP數(shù)據(jù)包 2.設(shè)計(jì)要求

      本設(shè)計(jì)的功能是填充一個(gè)TCP數(shù)據(jù)包,并發(fā)送給目的主機(jī)。

      1)以命令行形式運(yùn)行:TCP source_ip source_port dest_ip dest_port,其中SendTCP是程序名,source_ip為源端IP地址,source_port為源端口號(hào),dest_ip為目的地址,dest_port為目的端口號(hào)。

      2)其他的TCP頭部參數(shù)請(qǐng)自行設(shè)定。3)數(shù)據(jù)字段為“hello”。

      4)成功發(fā)送后在屏幕上輸出“send OK”。

      二.需求分析

      1.本程序需完成發(fā)送一個(gè)TCP數(shù)據(jù)包給目的主機(jī)

      2.程序的輸入:TCP source_ip source_port dest_ip dest_port,然后根據(jù)提示輸入要發(fā)送的數(shù)據(jù),回車即可。

      3.程序的輸出:Send OK!

      4.測(cè)試數(shù)據(jù) TCP 192.168.1.100 200 192.168.1.101 200

      三.詳細(xì)設(shè)計(jì)

      本課程設(shè)計(jì)的目標(biāo)是發(fā)送一個(gè)TCP數(shù)據(jù)包,可以利用原始套接字來完成這個(gè)工作。整個(gè)程序由初始化原始套接字和發(fā)送TCP數(shù)據(jù)包兩個(gè)部分組成。

      2發(fā)送TCP數(shù)據(jù)包

      1.創(chuàng)建一個(gè)原始套接字,并設(shè)置IP頭選項(xiàng)

      SOCKET sock;sock = socket(AF_INET,SOCK_RAW,IPPROTO_IP);或者:

      sock=WSASoccket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERLAPPED);這里,設(shè)置了SOCK_RAW標(biāo)志,表示我們聲明的是一個(gè)原始套接字類型。為使用發(fā)送接收超時(shí)設(shè)置,必須將標(biāo)志位置位置為WSA_FLAG_OVERLAPPED。在本課程設(shè)計(jì)中,發(fā)送TCP包時(shí)隱藏了自己的IP地址,因此我們要自己填充IP頭,設(shè)置IP頭操作選項(xiàng)。其中flag設(shè)置為ture,并設(shè)定 IP_HDRINCL 選項(xiàng),表明自己來構(gòu)造IP頭。

      setsockopt(sock, IPPROTO_IP, IP_HDRINCL,(char *)&Flag, sizeof(Flag));int timeout=1000; setsockopt(sock, sizeof(timeout));在這里我們使用基本套接字SOL_SOCKET,設(shè)置SO_SNDTIMEO表示使用發(fā)送超時(shí)設(shè)置,超時(shí)時(shí)間設(shè)置為1000ms。2.構(gòu)造IP頭和TCP頭

      這里,IP頭和TCP頭以及TCP偽部的構(gòu)造請(qǐng)參考下面它們的數(shù)據(jù)結(jié)構(gòu)。

      typedef struct _iphdr //定義IP首部 { UCHAR h_lenver;//4位首部長度+4位IP版本號(hào) UCHAR tos;//8位服務(wù)類型TOS

      USHORT total_len;//16位總長度(字節(jié))USHORT ident;//16位標(biāo)識(shí)

      USHORT frag_and_flags;//3位標(biāo)志位 UCHAR ttl;//8位生存時(shí)間 TTL

      UCHAR proto;//8位協(xié)議(TCP, UDP 或其他)

      SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,3發(fā)送TCP數(shù)據(jù)包

      USHORT checksum;//16位IP首部校驗(yàn)和 ULONG sourceIP;//32位源IP地址

      ULONG destIP;//32位目的IP地址

      }IP_HEADER;typedef struct psd_hdr //定義TCP偽首部 { ULONG saddr;ULONG daddr;//源地址 //目的地址

      UCHAR mbz;//沒用 UCHAR ptcl;

      USHORT tcpl;//協(xié)議類型 //TCP長度

      }PSD_HEADER;typedef struct _tcphdr //定義TCP首部 { USHORT th_sport;//16位源端口 USHORT th_dport;//16位目的端口 ULONG th_seq;//32位序列號(hào) ULONG th_ack;//32位確認(rèn)號(hào)

      UCHAR th_lenres;//4位首部長度/6位保留字 UCHAR th_flag;//6位標(biāo)志位 USHORT th_win;//16位窗口大小 USHORT th_sum;//16位校驗(yàn)和 USHORT th_urp;//16位緊急數(shù)據(jù)偏移量

      }TCP_HEADER;

      3.計(jì)算校驗(yàn)和的子函數(shù)

      在填充數(shù)據(jù)包的過程中,需要調(diào)用計(jì)算校驗(yàn)和的函數(shù)checksum兩次,分別用于校驗(yàn)IP頭和TCP頭部(加上偽頭部),其實(shí)現(xiàn)代碼如下:

      USHORT checksum(USHORT *buffer, int size)

      4發(fā)送TCP數(shù)據(jù)包

      { unsigned long cksum=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);}

      5發(fā)送TCP數(shù)據(jù)包

      4.流程圖

      開始構(gòu)造原始套接字并初始化填充IP首部計(jì)算IP首部校驗(yàn)和構(gòu)造TCP偽首部填充TCP首部計(jì)算TCP首部校驗(yàn)和填充發(fā)送緩沖區(qū)填入目的地址發(fā)送數(shù)據(jù)包結(jié)束

      6發(fā)送TCP數(shù)據(jù)包

      四.調(diào)試分析

      本程序流程簡單,調(diào)試過程中沒有出現(xiàn)大的問題。

      調(diào)試過程中沒有出現(xiàn)重大的語法錯(cuò)誤,主要是運(yùn)行的結(jié)果不理想,和預(yù)期的結(jié)果有差距。填充數(shù)據(jù)包的程序部分是不容易出錯(cuò)的。至于數(shù)據(jù)包的發(fā)送,由于是利用函數(shù)sendto()來實(shí)現(xiàn)的,而sendto()是面向UDP的,將協(xié)議類型修改為UDP(Header.proto=IPPROTO_UDP;)后,調(diào)試運(yùn)行成功,問題得到解決。

      調(diào)試時(shí),要添加 #include #include #pragma comment(lib,“ws2_32.lib”)不然編譯出錯(cuò)。

      五.運(yùn)行結(jié)果

      1.輸入:TCP 192.168.1.100 200 192.168.1.101 200

      7發(fā)送TCP數(shù)據(jù)包

      2.輸入要發(fā)送的字符串:“hello”按Ctrl+Z發(fā)送

      六.總結(jié)

      通過本次課程設(shè)計(jì),我對(duì)發(fā)送TCP數(shù)據(jù)包的原理有了一定的了解。理解了TCP數(shù)據(jù)報(bào)的報(bào)文格式、TCP連接時(shí)的三次握手和TCP連接結(jié)束時(shí)的四次握手的過程及它們的作用。此外,在設(shè)計(jì)過程中,通過查閱資料,也讓我對(duì)TCP的三大特點(diǎn)(流量控制、差錯(cuò)控制、擁塞控制)有了認(rèn)識(shí)。,在課程設(shè)計(jì)過程中,由于編程知識(shí)的欠缺,使我在課程設(shè)計(jì)過程中不是很順利,編程知識(shí)的欠缺是我的最大障礙,不過,這也給了我動(dòng)力,我會(huì)努力去學(xué)好編程的相關(guān)知識(shí),為以后的學(xué)習(xí)和工作打下基礎(chǔ)。最后,感謝老師安排了此次課程設(shè)計(jì)。

      發(fā)送TCP數(shù)據(jù)包

      七.源程序

      #include #include #include #include #include #include #include #include #pragma comment(lib,“ws2_32.lib”)

      #define IPVER 4 //IP協(xié)議預(yù)定 #define MAX_BUFF_LEN 65500 //發(fā)送緩沖區(qū)最大值

      typedef struct ip_hdr //定義IP首部 {

      UCHAR h_verlen;//4位首部長度,4位IP版本號(hào) UCHAR tos;//8位服務(wù)類型TOS USHORT total_len;//16位總長度(字節(jié))USHORT ident;//16位標(biāo)識(shí) USHORT frag_and_flags;//3位標(biāo)志位 UCHAR ttl;//8位生存時(shí)間 TTL UCHAR proto;//8位協(xié)議(TCP, UDP 或其他)USHORT checksum;//16位IP首部校驗(yàn)和 ULONG sourceIP;//32位源IP地址 ULONG destIP;//32位目的IP地址

      發(fā)送TCP數(shù)據(jù)包

      }IP_HEADER;

      typedef struct tsd_hdr //定義TCP偽首部 {

      ULONG saddr;//源地址 ULONG daddr;//目的地址 UCHAR mbz;//沒用 UCHAR ptcl;//協(xié)議類型 USHORT tcpl;//TCP長度

      }PSD_HEADER;

      typedef struct tcp_hdr //定義TCP首部 {

      USHORT th_sport;//16位源端口 USHORT th_dport;//16位目的端口 ULONG th_seq;//32位序列號(hào) ULONG th_ack;//32位確認(rèn)號(hào)

      UCHAR th_lenres;//4位首部長度/6位保留字 UCHAR th_flag;//6位標(biāo)志位 USHORT th_win;//16位窗口大小 USHORT th_sum;//16位校驗(yàn)和

      USHORT th_urp;//16位緊急數(shù)據(jù)偏移量

      }TCP_HEADER;

      //CheckSum:計(jì)算校驗(yàn)和的子函數(shù)

      USHORT checksum(USHORT *buffer, int size){ unsigned long cksum=0;while(size >1)

      發(fā)送TCP數(shù)據(jù)包

      { cksum+=*buffer++;size-=sizeof(USHORT);} if(size){ cksum += *(UCHAR*)buffer;} cksum =(cksum >> 16)+(cksum & 0xffff);cksum +=(cksum >>16);return(USHORT)(~cksum);}

      int ReadData(char *str,int maxlen){ int readlen=0;char ch=NULL;if(str==NULL||maxlen<=0){

      printf(“ReadData Error!!n”);

      return 0;//failed } printf(“Input Data(End By Ctrl+Z): n”);while(maxlen){

      ch=getchar();

      if(ch==EOF)break;

      str[readlen++]=ch;maxlen--;

      發(fā)送TCP數(shù)據(jù)包

      } } str[readlen]=NULL;return readlen;int main(int argc, char* argv[]){ WSADATA WSAData;SOCKET sock;

      IP_HEADER ipHeader;TCP_HEADER tcpHeader;PSD_HEADER psdHeader;

      char Sendto_Buff[MAX_BUFF_LEN];//發(fā)送緩沖區(qū)

      unsigned short check_Buff[MAX_BUFF_LEN];//檢驗(yàn)和緩沖區(qū) char tcp_send_data[1000];

      BOOL flag;int rect,nTimeOver;if(argc!= 5){ printf(“Usage: SendTcp soruce_ip source_port dest_ip dest_port n”);return false;} read_data_len=ReadData(tcp_send_data,1000);int read_data_len=0;

      發(fā)送TCP數(shù)據(jù)包

      if(read_data_len<=0)return 1;

      if(WSAStartup(MAKEWORD(2,2), &WSAData)!=0){ printf(“WSAStartup Error!n”);return false;} if((sock=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,NULL,0, WSA_FLAG_OVERLAPPED))==INVALID_SOCKET){ printf(“Socket Setup Error!n”);return false;} flag=true;if(setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(flag))==SOCKET_ERROR){ printf(“setsockopt IP_HDRINCL error!n”);return false;} nTimeOver=1000;if(setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO,(char*)&nTimeOver, sizeof(nTimeOver))==SOCKET_ERROR){ printf(“setsockopt SO_SNDTIMEO error!n”);return false;}

      發(fā)送TCP數(shù)據(jù)包

      //填充IP首部

      ipHeader.h_verlen=(IPVER<<4 | sizeof(ipHeader)/sizeof(unsigned long));ipHeader.tos=(UCHAR)0;ipHeader.total_len=htons((unsigned short)sizeof(ipHeader)+sizeof(tcpHeader)+read_data_len);ipHeader.ident=0;//16位標(biāo)識(shí) ipHeader.frag_and_flags=0;//3位標(biāo)志位 ipHeader.ttl=128;//8位生存時(shí)間 ipHeader.proto=IPPROTO_TCP;//協(xié)議類型 ipHeader.checksum=0;//檢驗(yàn)和暫時(shí)為0 ipHeader.sourceIP=inet_addr(argv[1]);//32位源IP地址 ipHeader.destIP=inet_addr(argv[3]);//32位目的IP地址

      //計(jì)算IP頭部檢驗(yàn)和

      memset(check_Buff,0,MAX_BUFF_LEN);memcpy(check_Buff,&ipHeader,sizeof(IP_HEADER));ipHeader.checksum=checksum(check_Buff,sizeof(IP_HEADER));

      //構(gòu)造TCP偽首部

      psdHeader.saddr=ipHeader.sourceIP;psdHeader.daddr=ipHeader.destIP;psdHeader.mbz=0;psdHeader.ptcl=ipHeader.proto;psdHeader.tcpl=htons(sizeof(TCP_HEADER)+read_data_len);

      //填充TCP首部

      tcpHeader.th_dport=htons(atoi(argv[4]));//16位目的端口號(hào) tcpHeader.th_sport=htons(atoi(argv[2]));//16位源端口號(hào)

      發(fā)送TCP數(shù)據(jù)包

      tcpHeader.th_seq=0;//SYN序列號(hào) tcpHeader.th_ack=0;//ACK序列號(hào)置為0 //TCP長度和保留位

      tcpHeader.th_lenres=(sizeof(tcpHeader)/sizeof(unsigned long)<<4|0);tcpHeader.th_flag=2;//修改這里來實(shí)現(xiàn)不同的標(biāo)志位探測(cè),2是SYN,1是//FIN,16是ACK探測(cè) 等等

      tcpHeader.th_win=htons((unsigned short)16384);//窗口大小 tcpHeader.th_urp=0;//偏移大小 tcpHeader.th_sum=0;//檢驗(yàn)和暫時(shí)填為0

      //計(jì)算TCP校驗(yàn)和

      memset(check_Buff,0,MAX_BUFF_LEN);memcpy(check_Buff,&psdHeader,sizeof(psdHeader));

      memcpy(check_Buff+sizeof(psdHeader),&tcpHeader,sizeof(tcpHeader));

      //填充發(fā)送緩沖區(qū)

      memset(Sendto_Buff,0,MAX_BUFF_LEN);memcpy(Sendto_Buff,&ipHeader,sizeof(IP_HEADER));

      memcpy(Sendto_Buff+sizeof(IP_HEADER), &tcpHeader,sizeof(TCP_HEADER));memcpy(check_Buff+sizeof(PSD_HEADER)+sizeof(TCP_HEADER), tcp_send_data,read_data_len);tcpHeader.th_sum=checksum(check_Buff,sizeof(PSD_HEADER)+ sizeof(TCP_HEADER)+read_data_len);memcpy(Sendto_Buff+sizeof(IP_HEADER)+sizeof(TCP_HEADER), tcp_send_data,read_data_len);

      發(fā)送TCP數(shù)據(jù)包

      int datasize=sizeof(IP_HEADER)+sizeof(TCP_HEADER)+read_data_len;//發(fā)送數(shù)據(jù)報(bào)的目的地址 SOCKADDR_IN dest;memset(&dest,0,sizeof(dest));dest.sin_family=AF_INET;dest.sin_addr.s_addr=inet_addr(argv[3]);dest.sin_port=htons(atoi(argv[4]));

      rect=sendto(sock,Sendto_Buff,datasize, 0,(struct sockaddr*)&dest, sizeof(dest));if(rect==SOCKET_ERROR){ printf(“send error!:%dn”,WSAGetLastError());return false;} else

      closesocket(sock);WSACleanup();return 1;} printf(“nsend ok!n”);

      第三篇:計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

      1.課題描述........................................................1 2 系統(tǒng)設(shè)計(jì)概述...................................................1 3 課程設(shè)計(jì)的主要內(nèi)容............................................2 3.1站點(diǎn)總體設(shè)計(jì)原則及設(shè)計(jì)目標(biāo)....................................2 3.2用戶需求......................................................2 3.3動(dòng)態(tài)IP地址的設(shè)置及服務(wù)器的配置...............................3 3.3.1.動(dòng)態(tài)IP配置簡介...........................................3 3.3.2.配置DHCP服務(wù)器...........................................3 3.3.3配置IIS服務(wù)器.............................................6 3.4制作網(wǎng)站......................................................6 3.4.1.建站流程..................................................6 3.4.2.網(wǎng)站各模塊的設(shè)計(jì)...........................................7 3.4.3.建站實(shí)現(xiàn)軟件...............................................8 3.5.建站注意要點(diǎn)..................................................9 3.5.1.前期調(diào)研分析...............................................9 3.5.2.網(wǎng)站的目的及功能定位.......................................9 3.5.3網(wǎng)站技術(shù)解決方案...........................................9 3.5.4.網(wǎng)站內(nèi)容規(guī)劃.............................................10 3.5.5.網(wǎng)頁設(shè)計(jì).................................................10 3.5.6.網(wǎng)站測(cè)試..................................................10 4.網(wǎng)站維護(hù).......................................................10 4.1、靜態(tài)頁面的添加修改..........................................10 4.2、動(dòng)態(tài)功能支持在線更新........................................10

      總結(jié)..............................................................12 參考文獻(xiàn).........................................................12

      1.課題描述

      計(jì)算機(jī)網(wǎng)絡(luò)近年來獲得了飛速的發(fā)展。計(jì)算機(jī)通信網(wǎng)絡(luò)以及Internet已成為我們社會(huì)結(jié)構(gòu)的一個(gè)基本組成部分。網(wǎng)絡(luò)被應(yīng)用于工商業(yè)的各個(gè)方面,電子銀行、電子商務(wù)、企業(yè)管理、信息服務(wù)業(yè)等都以計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)為基礎(chǔ)。從學(xué)校遠(yuǎn)程教育到公司日常辦公乃至現(xiàn)在的電子社區(qū),很多方面都離不開網(wǎng)絡(luò)技術(shù)??梢圆豢鋸埖卣f,網(wǎng)絡(luò)在當(dāng)今世界無處不在。

      網(wǎng)絡(luò)的發(fā)展也是一個(gè)經(jīng)濟(jì)上的沖擊。數(shù)據(jù)網(wǎng)絡(luò)使個(gè)人化的遠(yuǎn)程通信成為可能,并改變了商業(yè)通信的模式。一個(gè)完整的用于發(fā)展網(wǎng)絡(luò)技術(shù)、網(wǎng)絡(luò)產(chǎn)品和網(wǎng)絡(luò)服務(wù)的新興工業(yè)已經(jīng)形成,計(jì)算機(jī)網(wǎng)絡(luò)的普及性和重要性已經(jīng)導(dǎo)致了在不同崗位上對(duì)具有更多網(wǎng)絡(luò)知識(shí)的人才的大量需求。企業(yè)需要雇員來規(guī)劃、獲取、安裝、操作、管理那些構(gòu)成計(jì)算機(jī)網(wǎng)絡(luò)的軟硬件系統(tǒng),建立自己的網(wǎng)站,方便辦公及交流 系統(tǒng)設(shè)計(jì)概述

      傳統(tǒng)的企業(yè)內(nèi)部辦公存在著種種弊端,往往造成人員和資源的極大浪費(fèi),應(yīng)用網(wǎng)絡(luò)技術(shù)組建余個(gè)高效、快捷、安全的辦公環(huán)境成為許多企業(yè)和單位的當(dāng)務(wù)之急。與傳統(tǒng)的單機(jī)工作相比,網(wǎng)絡(luò)化辦公具有以下幾個(gè)明顯優(yōu)點(diǎn): 1共享軟硬件資源,節(jié)約資金投入,提高運(yùn)作效率

      企業(yè)內(nèi)部組件web站點(diǎn)后,可以在一個(gè)部門只安裝一臺(tái)打印機(jī)和掃描儀,其他計(jì)算機(jī)通過局域網(wǎng)共享這些設(shè)備和數(shù)據(jù),有利于降低成本。2對(duì)重要數(shù)據(jù)進(jìn)行安全、集中的管理

      組建站點(diǎn)后,可以把一些重要數(shù)據(jù)放置在專門的網(wǎng)絡(luò)服務(wù)器上集中管理,并通過網(wǎng)絡(luò)服務(wù)器的訪問控制限制其他計(jì)算機(jī)對(duì)總要數(shù)據(jù)的訪問。這樣就可以有效管理企業(yè)內(nèi)部的重要數(shù)據(jù),保證數(shù)據(jù)安全性,防止數(shù)據(jù)丟失和被竊取。3方便企業(yè)內(nèi)部信息發(fā)布與交流

      當(dāng)企業(yè)進(jìn)行諸如企業(yè)內(nèi)部新聞、電話號(hào)碼、產(chǎn)品文檔、技術(shù)文件等信息發(fā)布時(shí),可以把這些信息放置在web站點(diǎn)的共享目錄上,供員工下載,方便了信息的發(fā)布和接收。4便于員工的協(xié)調(diào)操作

      利用內(nèi)部的辦公網(wǎng),可以方便的對(duì)同一事務(wù)進(jìn)行協(xié)同處理,提高工作效率,縮短任務(wù)完成的時(shí)間

      圖2.1企業(yè)內(nèi)部網(wǎng)絡(luò)拓?fù)?課程設(shè)計(jì)的主要內(nèi)容

      3.1站點(diǎn)總體設(shè)計(jì)原則及設(shè)計(jì)目標(biāo)

      組建企業(yè)內(nèi)部web站點(diǎn)要注意站點(diǎn)的分塊、共享、安全性、可管理性、以及可維護(hù)性。在設(shè)計(jì)中,系統(tǒng)結(jié)構(gòu)模塊化,軟硬件平臺(tái)可以模塊化瓶裝,系統(tǒng)配置靈活,使系統(tǒng)具有強(qiáng)大的可增長性和強(qiáng)壯性。滿足多層次安全控制手段,建立完善的安全管理體系,防止數(shù)據(jù)的丟失和被竊取。

      組建企業(yè)內(nèi)部web站點(diǎn),既能將公司內(nèi)部所有計(jì)算機(jī)納入系統(tǒng)中去,實(shí)現(xiàn)統(tǒng)一規(guī)劃、分塊工作、異地互聯(lián)、整體管理,并可為將來的應(yīng)用擴(kuò)展升級(jí)預(yù)留接口。

      3.2用戶需求 作為企業(yè)內(nèi)部網(wǎng)絡(luò)需要滿足:

      1、辦公事務(wù)管理

      主要包括公文與文檔管理、公告、大事記、會(huì)議紀(jì)要、資產(chǎn)與辦公用品管理、行政制度、辦公事務(wù)討論等。

      2、人力資源管理

      主要包括員工檔案、崗位職責(zé)、員工通信錄、認(rèn)識(shí)管理規(guī)范等。

      3、財(cái)務(wù)資產(chǎn)管理

      主要包括固定資產(chǎn)管理、工資管理、經(jīng)費(fèi)管理等。

      4、網(wǎng)站管理

      主要包括用戶及權(quán)限設(shè)置、數(shù)據(jù)庫維護(hù)、網(wǎng)頁設(shè)置、標(biāo)志與標(biāo)題設(shè)置及網(wǎng)絡(luò)各欄目內(nèi)容編輯等功能。

      3.3動(dòng)態(tài)IP地址的設(shè)置及服務(wù)器的配置

      3.3.1.動(dòng)態(tài)IP配置簡介

      動(dòng)態(tài)IP地址,顧名思義就是設(shè)備所取得的IP地址是非固定的,是可以動(dòng)態(tài)分配和取得的。使用動(dòng)態(tài)IP地址的原因主要有兩個(gè):一是可以用較少的IP地址構(gòu)建較大的網(wǎng)絡(luò)。如果與連入網(wǎng)絡(luò)的主機(jī)和其它設(shè)備相比,所分得的公用IP地址略少一些,如果為每個(gè)設(shè)備都分配一個(gè)固定的IP地址,則顯然部分計(jì)算機(jī)將不能接入網(wǎng)絡(luò)??紤]到并非所有的計(jì)算機(jī)都在同一時(shí)間內(nèi)運(yùn)行并與網(wǎng)絡(luò)連接,所以,如果將IP進(jìn)行動(dòng)態(tài)分配,即計(jì)算機(jī)連入網(wǎng)絡(luò)時(shí)自動(dòng)取得,斷開與網(wǎng)絡(luò)的連接時(shí)自動(dòng)收回,即可滿足網(wǎng)絡(luò)對(duì)IP地址的需求。二是可以增加網(wǎng)絡(luò)內(nèi)計(jì)算機(jī)的可移動(dòng)性。當(dāng)某臺(tái)主機(jī)從一個(gè)子網(wǎng)移動(dòng)到另一個(gè)子網(wǎng)時(shí),由于IP地址中網(wǎng)絡(luò)號(hào)的不同,從而導(dǎo)致該計(jì)算機(jī)與其它主機(jī)間無法進(jìn)行通信,解決該類問題最簡單的方式就是為移動(dòng)的主機(jī)在新子網(wǎng)中重新分配IP地址。但是,如果采用動(dòng)態(tài)IP地址,就會(huì)減少這種網(wǎng)絡(luò)管理的復(fù)雜性。Windows NT使用DHCP來解決動(dòng)態(tài)IP地址的分配問題。使用DHCP時(shí),整個(gè)網(wǎng)絡(luò)中必須至少有一臺(tái)運(yùn)行Windows NT主機(jī)安裝有DHCP軟件,充當(dāng)DHCP服務(wù)器,而其它所有欲使用DHCP功能的工作站也必須具有支持DHCP的功能。這樣,當(dāng)DHCP工作站啟動(dòng)時(shí),它就會(huì)自動(dòng)與DHCP服務(wù)器通信,并由DHCP服務(wù)器為其提供一個(gè)IP地址。當(dāng)然,這個(gè)地址只是臨時(shí)的 3.3.2.配置DHCP服務(wù)器

      DHCP提供了計(jì)算機(jī)IP地址的動(dòng)態(tài)配置,如果需要服務(wù)器為域中的計(jì)算機(jī)動(dòng)態(tài)分配IP地址,則必須配置DHCP服務(wù)器。配置DHCP服務(wù)器的具體步驟如下:

      圖3.1打開服務(wù)器配置向?qū)?/p>

      圖3.2配置服務(wù)器向?qū)?/p>

      圖3.3配置服務(wù)器向?qū)?/p>

      圖3.4為配置服務(wù)器向?qū)?/p>

      圖3.5管理服務(wù)器

      圖3.6 再來就是通過“開始”選擇“控制面板”|“添加或刪除程序”也可以安裝DHCP。

      3.3.3配置IIS服務(wù)器

      右鍵單擊“我的電腦”選擇“管理”~服務(wù)及應(yīng)用程序~Internet信息服務(wù)~網(wǎng)站~默認(rèn)網(wǎng)站,單擊右鍵,選擇屬性,打開主目錄,設(shè)置主目錄為web站點(diǎn)的根目錄,也可選擇修改其他屬性

      圖3.7配置IIS服務(wù)器

      3.4制作網(wǎng)站

      3.4.1.建站流程

      建立網(wǎng)站的流程大致可以分成三個(gè)階段,如圖所示

      圖3.8網(wǎng)站的流程框圖

      構(gòu)建內(nèi)容信息、搜索整理資料和規(guī)劃網(wǎng)站結(jié)構(gòu)是建立網(wǎng)站的

      企業(yè)的每一個(gè)員工都存在向企業(yè)內(nèi)部網(wǎng)發(fā)布內(nèi)容的潛在可能性。但員工必須按照他們各自的角色協(xié)調(diào)作業(yè)活動(dòng)。不同規(guī)模的公司都需要以省時(shí)省錢的方式組織交互信息發(fā)布的流程。

      通常情況下,為在網(wǎng)站上發(fā)布內(nèi)容,作者創(chuàng)建的材料要經(jīng)過一個(gè)或多個(gè)編輯的審校和核準(zhǔn)。在這個(gè)過程中,作者及編輯按照各種特定的標(biāo)準(zhǔn)分類及標(biāo)注信息,并為發(fā)布設(shè)計(jì)頁面及連接。這一流程通常不是正式的,且要接受網(wǎng)絡(luò)管理員的協(xié)調(diào),這就導(dǎo)致了管理員在“站點(diǎn)發(fā)布狂潮”到來時(shí),或是當(dāng)用戶對(duì)實(shí)時(shí)信息需求迅速增長時(shí)陷入孤立無援的境地。

      使用Site Server可以解決,Site Server還定義了一套為站點(diǎn)增添內(nèi)容的四步流程,既提交、標(biāo)注、核準(zhǔn)和部署。

      圖3.9新聞發(fā)布系統(tǒng)框圖

      3.4.3.建站實(shí)現(xiàn)軟件

      可以用Dreamweaver,主要包括兩種頁面,即html和asp。

      HTML(Hyper Text Markup Language ,超文本標(biāo)記語言),或稱為“多媒體文件語言”,是用于創(chuàng)建Web頁和Web 信息發(fā)布的

      (1)通用性:可實(shí)現(xiàn)不同平臺(tái)的文檔共享。

      (2)可擴(kuò)展性:HTML的標(biāo)簽集合可以根據(jù)新需求而不斷修正或加入有限的新標(biāo)簽符, 為實(shí)現(xiàn)有限的新功能的擴(kuò)展提供保障。

      (3)創(chuàng)建的靈活性:HTML文檔是純文本文檔, 可以由網(wǎng)頁編輯器以及其他文本編輯軟件創(chuàng)建。

      HTML是“Hyper Text Markup Language”的縮寫,它是一種超文本標(biāo)記語言,是網(wǎng)頁的描述語言,用于編制通過萬維網(wǎng)顯示的超文本文件。它是目前在網(wǎng)頁設(shè)計(jì)中,所使用的最基本的標(biāo)記語言?,F(xiàn)在很多HTML 的編輯器,都是通過跟文字處理器相似的接口來編輯網(wǎng)頁的。

      ASP 文件和 HTML 文件類似ASP 文件可包含文本、HTML、XML 和腳本 ASP 文件中的腳本可在服務(wù)器上執(zhí)行。ASP 文件的擴(kuò)展名是 “.asp”.當(dāng)瀏覽器請(qǐng)求某個(gè) HTML 文件時(shí),服務(wù)器會(huì)返回這個(gè)文件.而當(dāng)瀏覽器請(qǐng)求某個(gè) ASP 文件時(shí),IIS 將這個(gè)請(qǐng)求傳遞至 ASP 引擎。ASP 引擎會(huì)逐行地讀取這個(gè)文件,并執(zhí)行文件中的腳本。最后,ASP 文件將以純 HTML 的形式返回到瀏覽器。ASP 指 Active Server Pages(動(dòng)態(tài)服務(wù)器頁面)ASP 是運(yùn)行于 IIS 之中的程序.3.5.建站注意要點(diǎn)

      另外在網(wǎng)頁制作過程中應(yīng)注意以下要點(diǎn): 3.5.1.前期調(diào)研分析

      了解網(wǎng)頁制作后具體的工作人員具體權(quán)限,以保證公司機(jī)密信息不會(huì)被泄露,同時(shí)又能讓每個(gè)人從網(wǎng)站上獲取足夠的工作信息;同時(shí)對(duì)于私人隱私的公開應(yīng)得到個(gè)人的允許。在注意到以上的同時(shí),還要考慮公司的自身情況、建設(shè)網(wǎng)站的能力等 3.5.2.網(wǎng)站的目的及功能定位

      本次為企業(yè)內(nèi)部web站點(diǎn)的構(gòu)建及維護(hù) 3.5.3網(wǎng)站技術(shù)解決方案

      確定服務(wù)器,是自建服務(wù)器還是租用虛擬主機(jī)。選擇操作系統(tǒng)。網(wǎng)站安全性措施,如:防入侵,防病毒,防竊取方案

      3.5.4.網(wǎng)站內(nèi)容規(guī)劃

      根據(jù)網(wǎng)站的目的和功能規(guī)劃網(wǎng)站內(nèi)容。一般企業(yè)內(nèi)部網(wǎng)站應(yīng)包括:公司簡介、部門簡介、公共信息、新聞發(fā)布、員工聯(lián)系方式、任務(wù)信息、信息搜索查詢、相關(guān)幫助等內(nèi)容。

      3.5.5.網(wǎng)頁設(shè)計(jì)

      網(wǎng)頁美術(shù)設(shè)計(jì)要求。網(wǎng)頁美術(shù)設(shè)計(jì)一般要求與企業(yè)整體形象一致,企業(yè)內(nèi)部網(wǎng)色彩要與辦公環(huán)境保持和諧 3.5.6.網(wǎng)站測(cè)試

      ①網(wǎng)站發(fā)布前要進(jìn)行細(xì)致周密的測(cè)試,以保證正常的瀏覽和使用。主要測(cè)試內(nèi)容有: ②服務(wù)器穩(wěn)定性、安全性。③程序及數(shù)據(jù)庫測(cè)試

      ④網(wǎng)頁兼容性測(cè)試,包括不同瀏覽器下的現(xiàn)實(shí)結(jié)果、不同顯示器分辨率的頁面效果等。⑤需要的其他測(cè)試

      4.網(wǎng)站維護(hù)

      服務(wù)器及相關(guān)軟硬件的維護(hù),對(duì)可能出現(xiàn)的問題進(jìn)行評(píng)估,制定相應(yīng)時(shí)間。數(shù)據(jù)庫維護(hù)。有效地利用數(shù)據(jù)是網(wǎng)站維護(hù)的重要內(nèi)容,因此數(shù)據(jù)庫的維護(hù)要受到重視。

      內(nèi)容的更新、調(diào)整計(jì)劃。

      制定相關(guān)網(wǎng)站維護(hù)的規(guī)定,將網(wǎng)站維護(hù)制度化、規(guī)范化。

      4.1、靜態(tài)頁面的添加修改

      靜態(tài)頁面的更新需要使用專業(yè)的網(wǎng)頁設(shè)計(jì)工具,然后將修改后的網(wǎng)頁通過FTP上傳到相應(yīng)的位置,在此同時(shí)還要保證不能破壞其他的頁面程序和格局

      4.2、動(dòng)態(tài)功能支持在線更新

      如果企業(yè)信息量很大,如工作信息經(jīng)常需要更新,有更多的企業(yè)資訊需要告訴員工,企業(yè)建立動(dòng)態(tài)數(shù)據(jù)庫系統(tǒng)。這里的動(dòng)態(tài)并不是指動(dòng)畫,而是指網(wǎng)站的內(nèi)容來自企業(yè)的數(shù)據(jù)庫。如果更改了數(shù)據(jù)庫,那么前臺(tái)頁面的內(nèi)容也會(huì)隨之而更改。

      總 結(jié)

      通過這次課程設(shè)計(jì),我拓寬了知識(shí)面,鍛煉了能力,綜合素質(zhì)得到較大提高。安排課程設(shè)計(jì)的基本目的,在于通過理論與實(shí)際的結(jié)合、人與人的溝通,進(jìn)一步提高思想覺悟。尤其是觀察、分析和解決問題的實(shí)際工作能力,以便培養(yǎng)成為能夠主動(dòng)適應(yīng)社會(huì)主義現(xiàn)代化建設(shè)需要的高素質(zhì)的復(fù)合型人才。作為整個(gè)學(xué)習(xí)體系的有機(jī)組成部分,課程設(shè)計(jì)雖然安排在一周進(jìn)行,但并不具有絕對(duì)獨(dú)立的意義。它的一個(gè)重要功能,在于運(yùn)用學(xué)習(xí)成果,檢驗(yàn)學(xué)習(xí)成果。運(yùn)用學(xué)習(xí)成果,把課堂上學(xué)到的系統(tǒng)化的理論知識(shí),嘗試性地應(yīng)用于實(shí)際設(shè)計(jì)工作,并從理論的高度對(duì)設(shè)計(jì)工作的現(xiàn)代化提出一些有針對(duì)性的建議和設(shè)想。檢驗(yàn)學(xué)習(xí)成果,看一看課堂學(xué)習(xí)與實(shí)際工作到底有多大距離,并通過綜合分析,找出學(xué)習(xí)中存在的不足,以便為完善學(xué)習(xí)計(jì)劃,改變學(xué)習(xí)內(nèi)容與方法提供實(shí)踐依據(jù)。對(duì)計(jì)算機(jī)專業(yè)的本科生來說,實(shí)際能力的培養(yǎng)至關(guān)重要,必須從課堂走向?qū)嵺`。這也是一次預(yù)演和準(zhǔn)備畢業(yè)設(shè)計(jì)工作。通過課程設(shè)計(jì),讓我找出自身狀況與實(shí)際需要的差距,并在以后的學(xué)習(xí)期間及時(shí)補(bǔ)充相關(guān)知識(shí),為求職與正式工作做好充分的知識(shí)、能力準(zhǔn)備,從而縮短從校園走向社會(huì)的心理轉(zhuǎn)型期。課程設(shè)計(jì)促進(jìn)了我系人才培養(yǎng)計(jì)劃的完善和課程設(shè)置的調(diào)整。在一個(gè)星期的課程設(shè)計(jì)之后,我感到不僅實(shí)際動(dòng)手能力有所提高,更重要的是通過對(duì)網(wǎng)站開發(fā)流程以及維護(hù)方面的了解,進(jìn)一步激發(fā)了我對(duì)專業(yè)知識(shí)的興趣,并能夠結(jié)合實(shí)際存在的問題在專業(yè)領(lǐng)域內(nèi)進(jìn)行更深入的學(xué)習(xí)。

      在課程設(shè)計(jì)過程中,我學(xué)到了很多人生的哲理,懂得怎么樣去制定計(jì)劃,怎么樣去實(shí)現(xiàn)這個(gè)計(jì)劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒,黑夜過去了,我收獲的是黎明。

      參考文獻(xiàn)

      [1]朱兵.小型網(wǎng)組建與應(yīng)用進(jìn)階[M].南方出版社.2004.[2]鄧文達(dá)胡伏湘.計(jì)算機(jī)網(wǎng)絡(luò)教程[M].清華大學(xué)出版社.2007.[3] 趙永超.新編網(wǎng)站規(guī)劃與設(shè)計(jì)教程[M].西北工業(yè)大學(xué)出版社.2004.[4] 楊力學(xué).ASP商業(yè)網(wǎng)站整站集成開發(fā)[M].電子工業(yè)出版社.2007.[5] 石志國.ASP動(dòng)態(tài)網(wǎng)站編程[M].清華大學(xué)出版社.2001.[6] 李嵐.網(wǎng)絡(luò)設(shè)計(jì)與維護(hù)[M].中國物資出版社.2002.

      第四篇:計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

      計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

      報(bào)告書

      學(xué)院:

      班級(jí):通信0902

      姓名:

      學(xué)號(hào):

      指導(dǎo)老師:

      實(shí)驗(yàn)三 交換機(jī)VLAN實(shí)驗(yàn)

      SWITCH2的拓?fù)鋱D

      規(guī)劃IP:

      PCA的ip為:10.65.1.1

      PCB的ip為:10.66.1.1

      PCC的ip為:10.65.1.3

      PCD的ip為:10.66.1.3

      SWA:

      SWB:

      設(shè)置VLAN: SWA:

      SWB:

      不設(shè)trunk時(shí)測(cè)試可通性 從PCA到PCC測(cè)試:不通,因現(xiàn)在的連線兩端在VLAN1中,不能承載Vlan2的信息

      [root@PCA root]# ping 10.65.1.3

      從PCA到PCB測(cè)試:不通:不是一個(gè)網(wǎng)段,且不在一個(gè)VLAN [root@PCA root]# ping 10.66.1.1

      從PCB到PCD測(cè)試:通:因?yàn)樵谕痪W(wǎng)段內(nèi)。路徑:從switch A的f0/6到switch B的f0/6 [root@PCB root]# ping 10.66.1.3

      從PCA到SWA測(cè)試:不通:不在同一網(wǎng)段內(nèi)

      [root@PCA root]# ping 10.66.1.7

      從PCA到SWB測(cè)試:不通:不在同一網(wǎng)段,也不在同一vlan [root@PCA root]# ping 10.66.1.8

      從SWA到PCA測(cè)試:不通:不在同一網(wǎng)段

      SWA#ping 10.65.1.1

      從SWA到SWB測(cè)試:通:在同一個(gè)網(wǎng)段中,路徑:從switch A的f0/8到switch B的f0/1 SWB#ping 10.66.1.8

      swa40#conf t swa40(config)#int f0/8 swa40(config-if)#switchport mode trunk swa40(config-if)#int f0/1 swa40(config-if)#switchport mode trunk swa40(config-if)#

      從PCA到PCC、PCD、SWA、SWB的可通性依次為通,不通,不通,不通。

      PCA和PCC在同一網(wǎng)段中,路徑:從switch A的f0/3到switch B的f0/3,PCA和PCD、SWA、SWB不在同一網(wǎng)段內(nèi)。

      從PCB到PCC、PCD、SWA、SWB的可通性依次為不通,通,通,通。PCB與PCC不在同一網(wǎng)段,PCB與PCD、SWA、SWB在同一網(wǎng)段內(nèi),路徑分別為從switch A的f0/6到switch B的f0/6;從PCB到switch A的f0/6;從switch A的f0/6到switch B的f0/1.SWITCH3的拓?fù)鋱D

      (1)都不設(shè)vlan情況下,測(cè)試連通性

      從PCA到PCC,PCD,SWA,SWB依次為 不通,不通,通,不通 PCA與PCC、PCD不在同一默認(rèn)vlan中,PCA與SWA在同一默認(rèn)vlan中,路徑:從PCA到switch A的f0/3,PCA與SWB不在同一默認(rèn)vlan中。

      從PCB到PCC,PCD,SWA,SWB依次為不通,不通,通,不通。PCB與PCC、PCD不在同一默認(rèn)vlan中,PCB與SWA在同一默認(rèn)vlan中,路徑:從PCB到switch A的f0/6,PCB與SWB不在同一默認(rèn)vlan中。

      (2)設(shè)置有vlan情況下,測(cè)試連通性

      從PCA到PCC、PCB、SWA、SWB、PCD均不通:不在同一vlan

      從PCB到PCC、PCD、SWA、SWB測(cè)試為不通,不通,通,不通。PCB與PCC、PCD不在同一默認(rèn)vlan中,PCB與SWA在同一默認(rèn)vlan中,路徑:從PCB到switch A的f0/6,PCB與SWB不在同一默認(rèn)vlan中。

      (3)使用trunk情況下,測(cè)試連通性

      從PCA到PCC、PCD、SWA、SWB的可通性依次為不通,通,不通,不通。PCA與PCC、PCD不在同一默認(rèn)vlan中,PCA與SWA在同一默認(rèn)vlan中,路徑:從PCA到switch A的f0/3,PCA與SWB不在同一默認(rèn)vlan中。

      從PCB到PCC、PCD、SWA、SWB的可通性依次為通,不通,通,通。PCB到PCC設(shè)置了trunk,路徑:從switch A的f0/6到switch C的f0/1到switch B的f0/1,PCB與PCD不在同一vlan,PCB與SWA、SWB設(shè)置了trunk,路徑:從PCB到switch A的f0/6,從switch A的f0/6到switch C的f0/1到switch B的f0/1

      實(shí)驗(yàn)六 路由器接口的secondary ip 裝入圖文件:router1e

      設(shè)置計(jì)算機(jī)的IP和網(wǎng)關(guān):

      PCA:PCA的IP地址:10.65.1.1 網(wǎng)關(guān)指向:10.65.1.2

      PCB:PCB的IP地址:10.66.1.1 網(wǎng)關(guān)指向:10.66.1.2

      設(shè)置交換機(jī)的IP地址: switch(config)#int vlan 1 switch(config-if)#ip address 10.66.1.8 255.255.0.0

      設(shè)置路由器的接口f0/0的有兩個(gè)ip地址。roa(config)int f0/0

      roa(config-if)#ip address 10.65.1.2 255.255.0.0 roa(config-if)#no shut roa(config-if)#ip address 10.66.1.2 255.255.0.0 secondary roa(config-if)#no shut roa#sh run

      測(cè)試可通性

      [root#PCA root]# ping 10.66.1.1

      通:在同一網(wǎng)段,路徑:從switch的f0/3到f0/6

      [root#PCA root]# ping 10.66.1.2 通

      [root#PCB root]# ping 10.65.1.1

      通:在同一vlan中,從switch的f0/6到f0/3

      [root#PCB root]# ping 10.65.1.2

      switch#ping 10.65.1.1

      不通:不在同一網(wǎng)段

      switch#ping 10.66.1.1

      通:在同一網(wǎng)段,路徑:從switch的f0/6到PCB

      如果去掉交換機(jī)與路由的連線,PCA和PCB還可以通嗎? 不通:不在同一網(wǎng)段,需通過路由尋址,去掉線就不能通了。

      可見PCA到PCB的發(fā)包是經(jīng)過路由器的,稱之為單臂路由。

      這種情況PCA和PCB在同廣播域中,對(duì)工作帶寬不利。如果劃分VLAN可以隔離廣播 實(shí)驗(yàn)七 使用路由器子接口路由情況

      裝入圖文件:router1e

      此實(shí)驗(yàn)計(jì)算機(jī)和交換機(jī)的IP地址和網(wǎng)關(guān)不變,但要求交換機(jī)工作在兩個(gè)VLAN的情況下,一個(gè)是原有的默認(rèn)VALN,另一個(gè)是新設(shè)置的VLAN 2,含f0/

      5、f0/6。1.設(shè)置交換機(jī),增加一個(gè)vlan 2 switch#vlan database Switch(vlan)#vlan 2 Switch(vlan)#exit Switch#conf t Switch(config)#hostname SWA SWA(config)#int f0/5 SWA(config-if)#switchport access vlan 2 SWA(config-if)#int f0/6 SWA(config-if)#switchport access vlan 2 SWA(config-if)#int f0/1 SWA(config-if)#switchport mode trunk SWA(config-if)# SWA#sh vlan SWA#sh run(檢查設(shè)置情況)

      2.路由器f0/0 有兩個(gè)子接口 roa(config)int f0/0 roa(config-if)#int f0/0.1 roa(config-subif.1)#encapsulation isl 1 roa(config-subif.1)#ip address 10.65.1.2 255.255.0.0 roa(config-subif.1)#no shut roa(config-subif.1)#int f0/0.2 roa(config-subif.2)#encapsulation isl 2 roa(config-subif.2)#ip address 10.66.1.2 255.255.0.0 roa(config-subif.2)#no shut roa#sh run

      3.測(cè)試可通性:都通,路由器設(shè)置了兩個(gè)子接口,使其在同一vlan中 [root#PCA root]# ping 10.66.1.1

      通,路徑:從PCA到switch A的S0/3到switch A的S0/1到ROA的F0/0到switch A的S0/1到switch A的S0/6到PCB

      [root#PCA root]# ping 10.66.1.2

      通:從PCA到switch A的S0/3到switch A的S0/1到ROA 的F0/0到switch A的S0/1到switch A的S0/6到PCB,)

      [root#PCB root]# ping 10.65.1.1

      通:從PCB到switch A的S0/6到switch A的S0/1到ROA的F0/0到switch A 的S0/1到switch A 的S0/3到PCA)

      [root#PCB root]# ping 10.65.1.2

      通:從PCB到switch A的S0/6到switch A的S0/1到ROA的F0/0到switch A的S0/1到switch A的S0/3到PCA

      在使用一個(gè)路由器接口的情況下,如果下接的網(wǎng)絡(luò)含有不同的VLAN,則要求路由器的接口要?jiǎng)澐殖勺咏涌?,并綁定isl協(xié)議。在交換機(jī)上通過多個(gè)VLAN的接口,要設(shè)置成trunk。如果去掉交換機(jī)與路由的連線,PCA和PCB還可以通嗎? 不通:不在同一網(wǎng)段,需通過路由尋址,去掉線就不能通了。

      可見這也是一種單臂路由。

      實(shí)驗(yàn)九 三個(gè)路由器的靜態(tài)路由

      裝入圖文件:router3

      設(shè)置ROA的IP: f0/0: 10.65.1.2-->PCA:10.65.1.1 f0/1: 10.66.1.2-->PCB:10.66.1.1 s0/0: 10.67.1.2

      s0/1: 10.68.1.2-->

      設(shè)置ROB的IP:

      s0/0: 10.68.1.1 <--s0/1: 10.69.1.2--> f0/0: 10.70.1.2

      f0/1: 10.71.1.2

      設(shè)置ROC的IP:

      s0/0: 10.69.1.1 <--s0/1: 10.72.1.2

      f0/0: 10.73.1.2-->PCC:10.73.1.1 f0/1: 10.74.1.2-->PCD:10.74.1.1

      設(shè)置從PCA到PCC的靜態(tài)路由 ROA(config)#ip routing ROA(config)#ip route 10.73.0.0 255.255.0.0 10.68.1.1 ROA#show ip route

      ROB(config)#ip route 10.73.0.0 255.255.0.0 10.69.1.1 ROB#show ip route

      [root@PCA root]#ping 10.73.1.1

      通:由于與ROA和ROC相連的ROB接口都在同一個(gè)網(wǎng)段上,所以能通,路徑:從PCA到switch B的F0/0 S0/1到switch A的S0/0 S0/1到switch C的S0/0 F0/1到PCD

      使用默認(rèn)路由

      ROA(config)#no ip route 10.73.0.0 255.255.0.0 10.68.1.1 [root@PCA root]#ping 10.73.1.1

      通:因?yàn)檠b入文件時(shí)有默認(rèn)的動(dòng)態(tài)路由存在路徑:從PCA到switch B的F0/0 S0/1到switch A的S0/0 S0/1到switch C的S0/0 F0/1到PCD

      ROA(config)#ip route 0.0.0.0.0.0.0.0 10.68.1.1 [root@PCA root]#ping 10.73.1.1 通:從PCA到switch B的F0/0 S0/1到switch A的S0/0 S0/1到switch C的S0/0 F0/1到PCD)

      實(shí)驗(yàn)十 三個(gè)路由器動(dòng)態(tài)路由實(shí)驗(yàn)

      裝入圖文件:router3

      實(shí)驗(yàn)網(wǎng)絡(luò)與上個(gè)實(shí)驗(yàn)相同,ip地址也不變,現(xiàn)在用動(dòng)態(tài)路由實(shí)現(xiàn)網(wǎng)絡(luò)的連通。ROA(config)#ip routing

      ROA(config)#router rip ROA(config-router)#network 10.0.0.0

      ROB(config)#ip routing

      ROB(config)#router rip ROB(config-router)#network 10.0.0.0

      ROC(config)#ip routing

      ROC(config)#router rip ROC(config-router)#network 10.0.0.0

      ROA#sh ip route

      ROB#sh ip route

      ROC#sh ip route

      從計(jì)算機(jī)PCA 測(cè)試到各點(diǎn)的連通性。都通:由于路由器接口都已經(jīng)激活,可以相互連通:路徑:PCA到PCB:從PCA到switch B的F0/0 F0/1到PCB

      PCA到PCC:從PCA到switch B的F0/0 S0/1到switch A的S0/0 S0/1到switch C的S0/0 F0/0到PCC PCA到PCD :從PCA到switch B的F0/0 S0/1到switch A 的S0/0 S0/1到switch C的S0/0 F0/1到PCD

      實(shí)驗(yàn)十一 基本訪問控制列表

      裝入文件1

      1.配置路由達(dá)到網(wǎng)絡(luò)各點(diǎn)可通。

      本實(shí)驗(yàn)使用有動(dòng)態(tài)路由,也可以使用靜態(tài)路由。假設(shè)網(wǎng)絡(luò)是通暢的。ROA f0/0: 10.65.1.2-->PCA:10.65.1.1 ROA f0/1: 10.66.1.2-->PCB:10.66.1.1 ROA s0/0: 10.67.1.2

      ROA s0/1: 10.68.1.2--> ROB s0/0: 10.68.1.1 <--ROB s0/1: 10.69.1.2--> ROB f0/0: 10.70.1.2

      ROB f0/1: 10.71.1.2

      ROC s0/0: 10.69.1.1 <--ROC s0/1: 10.72.1.2 ROC f0/1: 10.73.1.2-->PCC:10.73.1.1 ROC f0/0: 10.74.1.2-->PCD:10.74.1.1 1.基本的訪問控制列表: 先從PCA ping PCD: [root@PCA @root]#ping 10.74.1.1 應(yīng)該是可以通的。由于與ROA和ROC相連的ROB接口都在同一個(gè)網(wǎng)段上,路徑:從 PCA到switch B的F0/0 S0/1到switch A的S0/0 S0/1到switch C的S0/0 F0/1到PCD

      在ROB的s0/0寫一個(gè)輸入的訪問控制列表: ROB(config)#access-list 1 deny any ROB(config)#int s0/0 ROB(config-if)#ip access-group 1 in ROB#sh access-list 測(cè)試PCA至PCD的聯(lián)通性。(deny)命令所示為S0/0讀入控制,題意ROB S0/0為10.68.1.1,PCA的IP為10.65,1,1不包含于ROB VLAN中,所以不能訪問

      測(cè)試PCC至PCD的聯(lián)通性。(permit)在同一個(gè)路由器下,通過路由器尋址能找到對(duì)方的IP,所以能通, PCC到switch C的f0/0 F0/1到PCD

      測(cè)試PCD至PCA的聯(lián)通性。(permit)由題意由于命令所示為S0/0讀入控制,所以ROB能訪問ROA,所以訪問列表設(shè)置無效,所以兩者之間的訪問不受控制,所以能PING通, 從PCD到SWC的F0/1 S0/0到SWA的S0/0 S0/0到SWB的S0/1 F0/0到PCA

      2.刪除這個(gè)列表

      ROB(config)#no access-list 1 ROB(config)# int s0/0 ROB(config-if)#no ip access-group 1 in

      二者都可能實(shí)現(xiàn)去掉訪問列表的目的。前者是從列表號(hào)角度刪除,后者是從接口及輸入和輸出的角度刪除??梢酝ㄟ^sh run 和sh access-list 命令查看刪除情況。3.再寫訪問控制列表

      ROA(config)#access-list 1 deny 10.65.1.1 ROA(config)#access-list 1 permit any ROA(config)#int s0/1 ROA(config-if)#ip access-group 1 out ROA#sh access-list

      再測(cè)試PCA至PCD的聯(lián)通性。(deny)ROA設(shè)置拒絕了PCA的訪問

      再測(cè)試PCB至PCD的聯(lián)通性。(permit)由題意ROA中的S0/1為10.68.1.2 PCB的IP為10.66.1.1,不包含于S0/1 VLAN中,由于命令所示為S0/0由于是輸出控制,能訪問,所以訪問列表設(shè)置無效,不加控制,所以能PING通, 從PCB到SWB的F0/1 S0/1到SWA 的S0/0 S0/1到SWC的S0/0 F0/1到PCD

      再測(cè)試PCD至PCA的聯(lián)通性。(permit)由于是輸出控制,所以對(duì)輸入不做要求,能通,所以輸出訪問列表無效,對(duì)輸入不加控制,所以能PING通, 從PCD到SWC的F0/1-S0/0到SWA的S0/0-S0/0到SWB的S0/1-F0/0到PCA

      4.重新設(shè)置各路由接口有電腦的ip地址。R0B(config)#access-list 4 permit 10.65.1.1 ROB(config)#access-list 4 deny 10.65.1.0 0.0.0.255

      (10.65.1.3 deny)ROB(config)#access-list 4 permit 10.65.0.0 0.0.255.255(10.65.0.0 permit)ROB(config)#access-list 4 deny 10.0.0.0 0.255.255.255

      (10.66.0.0 deny)ROB(config)#access-list 4 permit any

      (11.0.0.0 premit)ROB(config)#int s0/0 ROB(config-if)#ip access-group 4 in

      測(cè)試PCA至PCD的聯(lián)通性。(deny)PCA的IP為10.65.1.1按理來說應(yīng)該所有的訪問都允許,由于命令所示為S0/0讀入控制,題意ROB S0/0為10.68.1.1,PCA的IP為10.65,1,1不包含于ROB VLAN中所以不通

      測(cè)試PCB至PCD的聯(lián)通性。(permit)P CB的IP為10.66.1.1屬于deny 10.0.0.0 0.255.255.255,所以訪問被拒絕,所以PING不通

      測(cè)試PCD至PCA的聯(lián)通性。(permit)PCD的IP為10.74.1.1屬于deny 10.0.0.0 0.255.255.255,按理來說應(yīng)該是拒絕的,但是DENY屬于源程序拒絕訪問,而PCD先到S0/1,在通過S0/1與S0/0進(jìn)行信息傳遞,所以能到達(dá)PCA,所以設(shè)置讀入列表參數(shù)無效,對(duì)PCD不做限制, 從PCD到SWC的F0/1-S0/0到SWA的S0/0-S0/0到SWB的S0/1-F0/0到PCA

      接口的ip地址,計(jì)算機(jī)的ip地址,請(qǐng)自定

      實(shí)驗(yàn)十二 擴(kuò)展訪問控制列表

      裝入文件2 1.阻止PCA訪問PCD: ROB(config)# access-list 101 deny icmp 10.65.1.1 0.0.0.0 10.74.1.1 0.0.0.0 ROB(config)# access-list 101 permit ip any any ROB(config)# int s0/0 ROB(config-if)#ip access-group 101 out ROB(config-if)#exit ROB(config)#exit ROB#sh access-list

      [root@PCA root]#ping 10.74.1.1(不通)PCA的IP為10.65.1.1屬于deny ip 10.65.1.1 0.0.0.0 10.74.1.1 0.0.0.0,所以PING 不通

      [root@PCC root]#ping 10.74.1.1(通)PCC和PCD處在同一個(gè)路由器下,通過路由器尋址可以相互PING通,從PCC到SWC的F0/0-F0/1到PCD

      [root@PCD root]#ping 10.65.1.1(通)因?yàn)镽OB的S0/0為輸出控制,所以當(dāng)PCD通過外部訪問ROB某個(gè)端口下的PCA時(shí),是不受控制的,所以ROB的S0/0的輸出對(duì)PCD的訪問是無效的,所以鏈路不加限制,從 PCD到SWC的F0/1-S0/0到SWA的S0/0-S0/0到SWB的S0/1-F0/0到PCA

      2.刪除這個(gè)列表

      ROB(config)#no access-list 101 ROB(config)#int s0/0 ROB(config-if)#no ip access-group 101 ROB#sh access-list

      [root@PCA root]#ping 10.74.1.1(通)由于沒有任何限制,再加上路由器間的尋址,所以可以PING通, 從PCA到SWB的F0/0-S0/1到SWA的S0/0-S0/1到SWC的S0/0-F0/1到PCD

      3.阻止10.65.0.0網(wǎng)絡(luò)訪問 10.74.1.1計(jì)算機(jī)(PCD)。

      ROA(config)#access-list 102 deny ip 10.65.1.1 0.0.0.0 10.74.1.1 0.0.0.0 ROA(config)#access-list 102 permit ip any any ROA(config)#interface s0/1 ROA(config-if)#ip access-group 102(默認(rèn)為out)

      [root@PCA root]#ping 10.74.1.1(不通)PCA的IP屬于 DENY IP 10.65.1.1 0.0.0.0 10.74.1.1 0.0.0.0 被限制訪問,所以不通

      [root@PCC root]#ping 10.74.1.1(通)由于PCC和PCA在同一個(gè)路由器下,所以能通過路由器尋址進(jìn)行PING通, 從PCC到SWC的F0/0-F0/1到PCD

      [root@PCD root]#ping 10.65.1.1(通)由于ROA的S0/0為輸出控制,所以對(duì)輸入沒有任何要求,所以對(duì)輸出控制列表設(shè)置無效,PCD訪問PCA不受限制, 從PCD到SWC的F0/1-S0/0到SWA的S0/0-S0/0到SWB的S0/1-F0/0到PCA

      心得體會(huì)

      從實(shí)驗(yàn)三中學(xué)會(huì)了如何規(guī)劃ip地址,設(shè)置vlan,將連接兩個(gè)交換機(jī)的接口設(shè)置成trunk等,知道了寫代碼時(shí)一定得仔細(xì),否則打錯(cuò)了下面就不能ping通了。

      從實(shí)驗(yàn)六中,我學(xué)會(huì)了設(shè)置計(jì)算機(jī)和交換機(jī)的IP和網(wǎng)關(guān),設(shè)置路由器的接口的ip地址等。

      從實(shí)驗(yàn)七中,我學(xué)會(huì)了設(shè)置交換機(jī),增加一個(gè)vlan,設(shè)置路由器的子接口,了解了isl協(xié)議,isl協(xié)議:交換鏈路內(nèi)協(xié)議(ISL),是思科私有協(xié)議,主要用于維護(hù)交換機(jī)和路由器間的通信流量等 VLAN 信息。ISL 主要用于實(shí)現(xiàn)交換機(jī)、路由器以及各節(jié)點(diǎn)(如服務(wù)器所使用的網(wǎng)絡(luò)接口卡)之間的連接操作。為支持 ISL 功能特征,每臺(tái)連接設(shè)備都必須采用 ISL 配置。ISL 所配置的路由器支持 VLAN 內(nèi)通信服務(wù)。非 ISL 配置的設(shè)備,則用于接收由 ISL 封裝的以太幀(Ethernet Frames),通常情況下,非 ISL 配置的設(shè)備將這些接收的幀及其大小歸因于協(xié)議差錯(cuò)。

      從實(shí)驗(yàn)九中,我學(xué)會(huì)了設(shè)置靜態(tài)路由。

      從實(shí)驗(yàn)十中,我學(xué)會(huì)了用動(dòng)態(tài)路由實(shí)現(xiàn)網(wǎng)絡(luò)的連通。從實(shí)驗(yàn)十一中,我學(xué)會(huì)了基本訪問控制列表的使用。從實(shí)驗(yàn)十二中,我學(xué)會(huì)了如何擴(kuò)展訪問控制列表。

      最后,謝謝老師這幾天的指導(dǎo),真的讓我學(xué)到了很多很多。

      第五篇:計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

      計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)——IP數(shù)據(jù)報(bào)流量統(tǒng)計(jì)

      摘 要

      本課程設(shè)計(jì)主要是編制程序,監(jiān)控網(wǎng)絡(luò),捕獲一段時(shí)間內(nèi)網(wǎng)絡(luò)上的IP數(shù)據(jù)包,按IP數(shù)據(jù)包的源地址統(tǒng)計(jì)出該源地址在該時(shí)間段內(nèi)發(fā)出的IP包的個(gè)數(shù),將其寫入日志文件中或用圖形表示出來。程序中會(huì)用到Winpcap,它主要功能在于獨(dú)立于主機(jī)協(xié)議發(fā)送和接收原始數(shù)據(jù)報(bào)。本次課程設(shè)計(jì)中用VC++實(shí)現(xiàn)基于Winpcap的網(wǎng)絡(luò)數(shù)據(jù)包的捕獲和統(tǒng)計(jì),基于Winpcap的應(yīng)用程序?qū)⒏鶕?jù)獲取網(wǎng)絡(luò)設(shè)備列表;選擇網(wǎng)卡并打開;設(shè)置過濾器;捕獲數(shù)據(jù)包或者發(fā)送數(shù)據(jù)包;列出網(wǎng)卡列表,讓用戶選擇可用的網(wǎng)卡的步驟進(jìn)行編寫,同時(shí)對(duì)于TCP/IP協(xié)議以及IP數(shù)據(jù)抱的格式有了進(jìn)一步的了解和掌握。通過編寫程序從而實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)中IP數(shù)據(jù)包流量的統(tǒng)計(jì)。

      關(guān)鍵詞: IP數(shù)據(jù)包;流量統(tǒng)計(jì);Winpcap;VC++ 1 引 言

      隨著Internet技術(shù)的發(fā)展,基于IP協(xié)議的應(yīng)用成為網(wǎng)絡(luò)技術(shù)研究與軟件開發(fā)的一個(gè)重要基礎(chǔ),因此學(xué)習(xí)網(wǎng)絡(luò)層以基本概念,了解IP協(xié)議的基本內(nèi)容,對(duì)于掌握TCP/IP協(xié)議的主要內(nèi)容和網(wǎng)絡(luò)課程的學(xué)習(xí)是十分重要的,通過本次課程設(shè)計(jì),有助于熟悉IP數(shù)據(jù)包格式并加深對(duì)IP協(xié)議的理解。

      1.1 課程設(shè)計(jì)目的

      本次課程設(shè)計(jì)主要是通過用VC++編程實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)中IP數(shù)據(jù)包流量的統(tǒng)計(jì),實(shí)際上是編制程序,監(jiān)控網(wǎng)絡(luò),捕獲一段時(shí)間內(nèi)網(wǎng)絡(luò)上的IP數(shù)據(jù)包,按IP數(shù)據(jù)包的源地址統(tǒng)計(jì)出該源地址在該時(shí)間段內(nèi)發(fā)出的IP包的個(gè)數(shù),同時(shí)應(yīng)用Winpcap,Winpcap提供了很好的捕獲網(wǎng)絡(luò)數(shù)據(jù)包的方法,通過本次課程設(shè)計(jì)可以將VC++知識(shí)與Winpcap結(jié)合起來實(shí)現(xiàn)在一段時(shí)間內(nèi)對(duì)IP數(shù)據(jù)包的流量進(jìn)行統(tǒng)計(jì)。加深了對(duì)Winpcap的理解和運(yùn)用能力,同時(shí)也增長了知識(shí),開闊了視野,對(duì)于以后的學(xué)習(xí)有很大的幫助。

      1.2 課程設(shè)計(jì)的要求

      (1)理解運(yùn)用VC++軟件實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)中的IP數(shù)據(jù)抱流量的統(tǒng)計(jì)方法和步驟。(2)鍛煉獨(dú)立編程和查閱文獻(xiàn)資料解決問題的能力。

      (3)通過課程設(shè)計(jì)培養(yǎng)嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度,認(rèn)真的工作作風(fēng)。

      1.3 設(shè)計(jì)平臺(tái)

      Microsoft Visual C++ 6.0 2 設(shè)計(jì)原理

      IP是ICP/IP協(xié)議體系中的網(wǎng)絡(luò)層協(xié)議,TCP、UDP、ICMP和IGMP等其他協(xié)議都是以IP協(xié)議為基礎(chǔ)的。程序中用到的Winpcap是 Windows packetcapture的縮寫,這是UNIX下的lipbcap移植到Windows下的產(chǎn)物,是Win32環(huán)境下數(shù)據(jù)包捕獲的開放代碼函數(shù)庫。

      Winpcap由內(nèi)核級(jí)的數(shù)據(jù)包過濾器,底層動(dòng)態(tài)鏈接庫(packet.dll)和一個(gè)高層的獨(dú)立于系統(tǒng)的庫(wpcap.dll)組成。

      2.1 IP協(xié)議

      IP是TCP/IP模型中的網(wǎng)絡(luò)層協(xié)議,又稱為互聯(lián)網(wǎng)協(xié)議,是支持網(wǎng)間互連的數(shù)據(jù)報(bào)協(xié)議,它與TCP協(xié)議一起構(gòu)成了TCP/IP協(xié)議族的核心。它提供網(wǎng)間連接的完善功能,包括IP數(shù)據(jù)報(bào)規(guī)定互聯(lián)網(wǎng)范圍內(nèi)的IP地址格式。在因特網(wǎng)中IP協(xié)議是能使連接到網(wǎng)上的所有計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)相互通信的一套規(guī)則,規(guī)定了計(jì)算機(jī)在因特網(wǎng)上進(jìn)行通信時(shí)應(yīng)當(dāng)遵守的規(guī)則。任何廠家生產(chǎn)的計(jì)算機(jī)系統(tǒng),只要遵守IP協(xié)議就可以與因特網(wǎng)互連互通。IP地址具有唯一性,根據(jù)用戶性質(zhì)的不同,可以分為不同的類別。

      IP協(xié)議的特點(diǎn)如下:

      IP協(xié)議是一種不可靠、無連接的數(shù)據(jù)報(bào)傳送協(xié)議。IP協(xié)議是點(diǎn)對(duì)點(diǎn)的網(wǎng)絡(luò)層通信協(xié)議。IP協(xié)議向通信層隱藏了物理網(wǎng)絡(luò)的差異。

      IP協(xié)議以一種數(shù)據(jù)報(bào)的形式傳輸數(shù)據(jù),每個(gè)數(shù)據(jù)報(bào)獨(dú)立傳輸,可能通過不同路徑傳輸,因此可能不按順序到達(dá)目的地,或者出現(xiàn)重復(fù)。

      2.2 關(guān)于Winpcap庫

      Winpcap(windows packet capture)是windows平臺(tái)下一個(gè)開源的、公共的基于windows的網(wǎng)絡(luò)接口API庫。主要為win32應(yīng)用程序提供訪問網(wǎng)絡(luò)底層的能力。Winpcap的主要功能在于獨(dú)立于主機(jī)協(xié)議(如TCP/IP)發(fā)送和接收原始數(shù)據(jù)報(bào)。也就是說,Winpcap不能阻塞、過濾或控制其他應(yīng)用程序數(shù)據(jù)報(bào)的收發(fā),它只是監(jiān)聽共享網(wǎng)絡(luò)上傳送的數(shù)據(jù)報(bào)。

      其功能有:捕獲原始數(shù)據(jù)包,包括在共享網(wǎng)絡(luò)上各主機(jī)發(fā)送接收的以及相互之間交換的數(shù)據(jù)包;在數(shù)據(jù)包發(fā)往應(yīng)用程序之前,按照自定義的規(guī)則將某些特殊的數(shù)據(jù)包過濾掉;在網(wǎng)絡(luò)上發(fā)送原始數(shù)據(jù)包;收集網(wǎng)絡(luò)通信過程中的統(tǒng)計(jì)信息。Winpcap是針對(duì)win32平臺(tái)上的抓包和網(wǎng)絡(luò)分析的一個(gè)架構(gòu),它包括一個(gè)核心態(tài)的包過濾器,一個(gè)底層的動(dòng)態(tài)鏈接庫(packet.dll)和一個(gè)高層的不依賴于系統(tǒng)的庫(wpcap.dll)。它由Packet、NPF(Netgroup Packet Filter)、packet.dll、wpcap.dll、Application組成,首先,抓包系統(tǒng)必須繞過操作系統(tǒng)的協(xié)議來訪問在網(wǎng)絡(luò)上傳輸?shù)脑紨?shù)據(jù)包,這就要求一部分運(yùn)行在操作系統(tǒng)核心內(nèi)部,直接與網(wǎng)絡(luò)接口驅(qū)動(dòng)交互。這個(gè)部分是系統(tǒng)依賴的,在Winpcap的解決方案里它被認(rèn)為是一個(gè)設(shè)備驅(qū)動(dòng),稱作NPF。其次,抓包系統(tǒng)必須有用戶級(jí)的程序接口,通過這些接口,用戶程序可以利用內(nèi)核驅(qū)動(dòng)提供的高級(jí)特性。Winpcap提供了兩個(gè)不同的庫:packet.dll和wpcap.dll。前者提供了一個(gè)底層API,伴隨著一個(gè)獨(dú)立于Microsoft操作系統(tǒng)的編程接口,這些API可以直接用來訪問驅(qū)動(dòng)的函數(shù);后者導(dǎo)出了一組更強(qiáng)大的與libpcap一致的高層抓包函數(shù)庫。這些函數(shù)使得數(shù)據(jù)包的捕獲以一種與網(wǎng)絡(luò)硬件和操作系統(tǒng)無關(guān)的方式進(jìn)行。3 程序代碼設(shè)計(jì)步驟

      根據(jù)流量設(shè)計(jì)程序的主要功能,相應(yīng)的算法如下: 取得當(dāng)前網(wǎng)絡(luò)設(shè)備列表;

      將用戶選擇的網(wǎng)卡以混雜模式打開,以接收到所有的數(shù)據(jù)包; 設(shè)置過濾器;

      捕獲IP數(shù)據(jù)包的源地址進(jìn)行統(tǒng)計(jì)(用鏈表結(jié)構(gòu)進(jìn)行實(shí)現(xiàn))。

      獲取網(wǎng)卡列表是為了得到網(wǎng)卡的相關(guān)信息,以便于用戶進(jìn)行選擇,選取Ethermet網(wǎng)卡是用戶所選擇的網(wǎng)卡類型,編譯設(shè)置過濾器是為了編譯并設(shè)置過濾器是為了只捕獲網(wǎng)絡(luò)數(shù)據(jù)流的某些數(shù)據(jù),打開網(wǎng)卡既將網(wǎng)卡設(shè)置為混雜(統(tǒng)計(jì))模式是為了接受所有經(jīng)過網(wǎng)卡的數(shù)據(jù)包,包括不是發(fā)給本機(jī)的數(shù)據(jù)包,開始主循環(huán)以是否超時(shí)為判斷條件,循環(huán)體內(nèi)主要有捕獲IP數(shù)據(jù)包、將IP包的源地址加入鏈表、條件判斷,循環(huán)結(jié)束后輸出鏈表內(nèi)容,程序至此結(jié)束。

      現(xiàn)將其每一步的具體步驟簡述如下:

      3.1取得網(wǎng)絡(luò)適配器列表

      //取得網(wǎng)絡(luò)適配器列表步驟中,alldevs是pcap_if_it指針,指向鏈表頭,errbuf是char類型數(shù)組,存儲(chǔ)錯(cuò)誤信息。

      pcap_findalldevs(&alldevs,errbuf);

      cout<<”網(wǎng)絡(luò)適配器列表:”<<’n’;

      for(d=alldevs;d;d=d->next)

      {

      cout<<++i<<“:”

      if(d->description)

      cout<<“"

      else

      cout<<”No description available!“<<'n';

      }

      3.2 指定要監(jiān)聽的網(wǎng)絡(luò)適配器并打開

      cout<<”輸入要監(jiān)聽的網(wǎng)絡(luò)適配器號(hào):”>inum;

      for(d=alldevs,i=0;inext,i++);

      fp=pcap_open_live(d->name,65536,1,1000,errbuf);3.3 編譯并設(shè)置過濾器

      //編譯過濾器,fp指向打開的網(wǎng)絡(luò)適配器,fcode為編譯完成后的過濾器存儲(chǔ)地址,“tcp“給出了過濾條件,下一個(gè)參數(shù)表示是否被優(yōu)化(0為false,1為true),最后一個(gè)參數(shù)給出了子網(wǎng)掩碼。

      pcap_compile(fp,&fcode,”tcp”,1,netmask)

      pcap_setfilter(fp,&fcode)3.4 設(shè)置網(wǎng)絡(luò)適配器為統(tǒng)計(jì)模式

      if(pcap_setmode(fp,MODE_STAT)<0)

      {

      cout<<”n設(shè)置網(wǎng)絡(luò)適配器模式錯(cuò)誤!n”;

      pcap_close(fp);

      }

      3.5 開始主循環(huán),調(diào)用回調(diào)函數(shù)顯示網(wǎng)絡(luò)流量統(tǒng)計(jì)信息

      //pcap_loop由Winpcap庫定義,對(duì)每個(gè)采集來的數(shù)據(jù)包都用ProcessPacket函數(shù)進(jìn)行處理,fp指向打開的網(wǎng)絡(luò)適配器

      pcap_loop(fp,0,dispatcher_handler,(PUCHAR)&st_ts);

      pcap_close(fp);3.6 回調(diào)函數(shù)的實(shí)現(xiàn)

      //對(duì)于捕獲到的每一個(gè)數(shù)據(jù)包應(yīng)用此回調(diào)函數(shù)

      void dispatcher_handler(u_char *state,const struct pcap_pkthdr *header,const u_char *pkt_data)

      {

      struct timeval *old_ts=(struct timeval *)state;

      u_int delay;

      LARGE_INTEGER Bps,Pps;

      struct tm *ltime;

      char timestr[16];

      time_t local_tv_sec;

      //計(jì)算距上一個(gè)數(shù)據(jù)包的時(shí)間延遲,以ms為單位

      //這個(gè)值是從與一個(gè)數(shù)據(jù)包相關(guān)的時(shí)間戳中截獲的delay=(header->ts.tv_sec-old_ts->tv_sec)*1000000-old_ts->tv_usec+header->ts.tv_usec;

      //獲得每秒的比特?cái)?shù)

      Bps.QuadPart=(((*(LONGLONG*)(pkt_data+8))*8*1000000)/(delay));

      //獲得每秒的數(shù)據(jù)包數(shù)

      Pps.QuadPart=(((*(LONGLONG*)(pkt_data))*1000000)/(delay));

      //將時(shí)間戳轉(zhuǎn)變位可讀的標(biāo)準(zhǔn)格式

      ltime=localtime(&header->ts.tv_sec);

      strftime(timestr,sizeof timestr,”%H:%M:%S“,ltime);

      //Print timestamp

      printf(”%s“,timestr);

      //Print the samples

      printf(”BPS=%I64u“,Bps.QuadPart);

      printf(”PPS=%I64un",Pps.QuadPart);

      //store current timestamp

      old_ts->tv_sec=header->ts.tv_sec;

      old_ts->tv_usec=header->ts.tv_usec;

      };4 結(jié)果及分析

      安裝好WinPcap軟件,在VC++界面上點(diǎn)擊工具->選項(xiàng)->目錄。添加Include文件夾下的所有文件和Lib下的所有內(nèi)容,調(diào)試完程序無誤后,點(diǎn)擊開始—>運(yùn)行“cmd”進(jìn)入目標(biāo)文件夾Debug下運(yùn)行EXE文件。此時(shí)程序會(huì)檢測(cè)電腦系統(tǒng)中的網(wǎng)卡,等待程序的運(yùn)行結(jié)果.圖 捕獲的IP地址和數(shù)據(jù)包的信息 常見問題及解決方法

      在剛開始做此課程設(shè)計(jì)的時(shí)候我只編寫了主程序代碼,并沒有建立工程,后來通過查找資料及文獻(xiàn)才知道要建立一個(gè)C++應(yīng)用工程,而且程序中用到的Winpcap庫文件C++中并沒有,需要自己下載WinPcap_4_1_1.exe和WpdPack_4_1_1.zip,前者是Winpcap的開發(fā)程序,后者是inlude文件和lib文件,這些都是需要自己手動(dòng)添加的,這里include和lib文件夾里的東西VC++6.0里面沒有,出現(xiàn)error: Cannot open include file:’pcap.h’:No such file or directory這個(gè)問題,就需要添加。具體步驟如下:

      第一步: 點(diǎn)菜單欄上的“工具“,再點(diǎn)擊下拉菜單中的”選項(xiàng)“對(duì)話框把winpcap開發(fā)包里面的lib文件添加進(jìn)去。

      第二步: 點(diǎn)擊菜單欄里的工程——設(shè)置,選擇連接在對(duì)象/庫模塊中輸入wpcap.lib和packet.lib,再點(diǎn)C/C++ 在“預(yù)處理程序定義”下輸入WPCAP和HAVE_REMOTE,要用逗號(hào)隔開。

      至此,Winpcap環(huán)境已部署好了不會(huì)再出錯(cuò)了。

      接下來出錯(cuò)的是程序中的一些函數(shù)的參數(shù),比如說int pcap_compile(pcap_t *p, struct bpf_program *fp,char *str,int optimize, bpf_u_int32 netmask),int pcap_setfilter(pcap_t *p, struct bpf_program *fp)函數(shù)的參數(shù)在程序編譯的時(shí)候會(huì)報(bào)錯(cuò),通過搜集資料及與同學(xué)交流初步更正了錯(cuò)誤,但是程序并不是很順利地運(yùn)行出來。

      下載計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)-編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器word格式文檔
      下載計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)-編程實(shí)現(xiàn)簡單的TCP協(xié)議分析器.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        目錄 一﹑實(shí)驗(yàn)室概述 ............................................................................................................................... 2 二、設(shè)計(jì)需......

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        第1章 概述 1.1醫(yī)院簡介 沈陽市第一人民醫(yī)院創(chuàng)建于1962年,是集醫(yī)療、科研、教學(xué)、預(yù)防保健于一體,以腦科為龍頭、多科系協(xié)調(diào)發(fā)展的大型綜合醫(yī)院,是遼寧中醫(yī)學(xué)院和沈陽醫(yī)學(xué)院的......

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        課 程 設(shè) 計(jì) 說 明 書 題 目: 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì) 院(系): 專 業(yè): 班 級(jí): 學(xué) 號(hào): 姓 名:指導(dǎo)老師:完成時(shí)間: 201X年7月4日~201X年7月8日成績:目錄 1 引言 ..............................

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        實(shí)驗(yàn)一交換式以太網(wǎng)路由互聯(lián) 一、 實(shí)驗(yàn)?zāi)康? 學(xué)習(xí)掌握交換式以太網(wǎng)主機(jī)連接配置和用路由器直接交付路由實(shí)現(xiàn)簡單的網(wǎng)絡(luò)互連,了解交換式以太網(wǎng)絡(luò)內(nèi)部和多個(gè)交換式以太網(wǎng)絡(luò)之......

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        五邑大學(xué)大學(xué)計(jì)算機(jī)網(wǎng)絡(luò)原理課程設(shè)計(jì) 計(jì)算機(jī)網(wǎng)絡(luò)原理課程設(shè)計(jì) 說明書 學(xué)號(hào):11080511 姓名:黃秉輝 五邑大學(xué) 計(jì)算機(jī)學(xué)院 五邑大學(xué)大學(xué)計(jì)算機(jī)網(wǎng)絡(luò)原理課程設(shè)計(jì) 一、課程設(shè)計(jì)......

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)(精選)

        課程設(shè)計(jì)(論文)任務(wù)書 信息工程 學(xué)院 計(jì)算機(jī)應(yīng)用 專業(yè) 計(jì)算機(jī)2010-1 班 一、課程設(shè)計(jì)(論文)題目 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì) 二、課程設(shè)計(jì)(論文)工作自 2012 年 6 月 18 日起......

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì) 姓名:學(xué)號(hào): 班級(jí):完成時(shí)間:2015.12.5 1.課程設(shè)計(jì)要求: 1.PCA至PCD五臺(tái)PC機(jī)屬于不同網(wǎng)絡(luò),且要?jiǎng)澐諺LAN 2.PCA能ping通所有PC機(jī),PCC不能ping通PCE 3.PCA屬于內(nèi)網(wǎng)......

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        《計(jì)算機(jī)網(wǎng)絡(luò)》 課程設(shè)計(jì) 姓 名 趙世友 專 業(yè)網(wǎng)絡(luò)工程 班 級(jí) 學(xué) 號(hào) 網(wǎng)133 139074357 李沁 指導(dǎo)教師 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院2016.6.12 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)- #+DATE:......