project(基本功能完成).zip

  • 陈明二
    了解作者
  • C/C++
    开发工具
  • 23KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 4
    下载次数
  • 2018-10-15 08:31
    上传日期
网络编程路由器项目 可以获取通信双方的mac地址,发icmp包进行数据的转发,从而实现不同网段之间的通信。在路由器运行当中还可以打印arp缓存表信息,路由网卡信息、设置过滤ip、打印过滤ip、删除过滤ip等信息。 在路由器项目可以通过ping命令(电脑ping开发板,开发板ping电脑)
project(基本功能完成).zip
  • router.o
    5KB
  • get_interface.c
    4.7KB
  • main.c
    2.8KB
  • type.h
    487B
  • link.c
    4KB
  • 路由器项目思路.txt
    2.1KB
  • get_interface.o
    4KB
  • router.c
    6.6KB
  • get_interface.h
    973B
  • router
    20.9KB
  • router.h
    471B
  • main.o
    3.9KB
  • ip_config
    0B
  • link.o
    3.8KB
  • Makefile
    231B
  • link.h
    635B
内容介绍
网络编程路由器项目 可以获取通信双方的mac地址,发icmp包进行数据的转发,从而实现不同网段之间的通信。在路由器运行当中还可以打印arp缓存表信息,路由网卡信息、设置过滤ip、打印过滤ip、删除过滤ip等信息。 在路由器项目可以通过ping ping通不在一个网段ip地址。(电脑ping开发板,开发板ping电脑) 1、开一个读线程,void *recv_msg(void *arg) 创建原始套接字(socket)、recvfrom接收到的数据包。获取目的ip,打印解析目的ip是否正确。 过滤链表遍历是否过滤 判断目的ip是否存在过滤(search_ip_link()) 获取数据包类型: if(strcmp("0800",pf_buf)==0)//ip类型 { //搜索arp缓存表是否目的ip 如果搜索的数据为空的话,从eth0、eth1进行广播 否则 分析ip数据包. } if(strcmp("0806",pf_buf) == 0)//arp类型 { 分析arp数据包; } 2、分析arp数据包 1)将arp应答的mac和ip存入缓存链表 申请一个新的节点(malloc) excel查看mac(发送者硬件地址(MAC)前4字节)、ip(发送者IP地址前2字节跟后两个字节); 创建链表; 3、分析ip数据包 分析ip数据包的原因就是修改目的mac、源mac icmp包来实现的转发。从而不同网段通信。 1).网卡1:修改目的mac,修改源mac(memcpy()函数进行修改); 2)网卡2: 修改目的mac,修改源mac(memcpy()函数进行修改); 3)获取网络接口,初始化,然后发送数据包。 4、eth0网络接口发送arp广播 1)初始化arp数据包; 2)设置arp广播数据包 、用memcpy()函数 1.设置源mac (memcpy(send_buf+6,net_interface[1].mac,6);) 2.发送端mac 3.发送端ip 4.接收端ip 5.指定网卡(strncpy) 3)将网络接口赋值给原始套接字地址结构 获取网络接口 初始化 获取本机出去的接口地址 发送arp广播(sendto) 5、eth1网络接口发送arp广播 1)初始化arp数据包; 2)设置arp广播数据包 、用memcpy()函数 1.设置源mac (memcpy(send_buf+6,net_interface[1].mac,6);) 2.发送端mac 3.发送端ip 4.接收端ip 5.指定网卡(strncpy) 3)将网络接口赋值给原始套接字地址结构 获取网络接口 初始化 获取本机出去的接口地址 发送arp广播(sendto) 6、main(主线程) 1.查看获取路由器的网络接口。(getinterface()) 2.... 3.... 4..... 5.创建接收信息线程、分离线程 while(1) { if(memcmp(cmd,cmd_dest[0],strlen(cmd_dest[0])) == 0 )// . . else if . else }
评论
    相关推荐