ARP jsleenetwk hannam ac kr HANNAM Univ Network

  • Slides: 28
Download presentation
ARP의 실험 발표자 : 이직수 jslee@netwk. hannam. ac. kr HANNAM Univ.

ARP의 실험 발표자 : 이직수 jslee@netwk. hannam. ac. kr HANNAM Univ.

Network Lab. 목차 q ARP의 개요 q ARP의 동작 q 같은 IP 주소가 있을

Network Lab. 목차 q ARP의 개요 q ARP의 동작 q 같은 IP 주소가 있을 때 ARP의 동작 q Arpupdate의 개요 q Arpupdate 함수 구조도 q Arpupdate 처리의 흐름 q Arpupdate 프로그램 리스트 q Arpupdate의 실행 예 HANNAM Univ. 2

Network Lab. ARP 개요 q ARP 패킷 포맷 HANNAM Univ. 4

Network Lab. ARP 개요 q ARP 패킷 포맷 HANNAM Univ. 4

Network Lab. ARP 개요 q ARP 구조체 Struct arphdr{ U_short ar_hrd; /* 하드웨어 주소

Network Lab. ARP 개요 q ARP 구조체 Struct arphdr{ U_short ar_hrd; /* 하드웨어 주소 U_short ar_pro; /* 프로토콜 주소 U_char ar_hln; /* 하드웨어 주소 U_char ar_pln; /* 프로토콜 주소 U_short ar_op; /* 오퍼레이션 */ }; Struct ether_arp{ struct arphdr ea_hdr; u_char arp_sha[ETHER_ADDR_LEN]; u_char arp_spa[4]; u_char arp_tha[ETHER_ADDR_LEN]; u_char arp_tpa[4]; }; 포맷 포맷 길이 길이 // // */ */ 송신자 물리 주소 송신자 논리 주소 타깃 하드 주소 타깃 논리 주소 HANNAM Univ. 5

Network Lab. ARP 개요 q ARP 패킷 구조 HANNAM Univ. 6

Network Lab. ARP 개요 q ARP 패킷 구조 HANNAM Univ. 6

Network Lab. ARP의 동작 q 호스트 A측 HANNAM Univ. 7

Network Lab. ARP의 동작 q 호스트 A측 HANNAM Univ. 7

Network Lab. ARP의 동작 q 호스트 B측 HANNAM Univ. 8

Network Lab. ARP의 동작 q 호스트 B측 HANNAM Univ. 8

Network Lab. ARP의 동작 q ARP 테이블 HANNAM Univ. 10

Network Lab. ARP의 동작 q ARP 테이블 HANNAM Univ. 10

Network Lab. 같은 IP 주소가 있을 때 q ARP 요구 패킷 전송 HANNAM Univ.

Network Lab. 같은 IP 주소가 있을 때 q ARP 요구 패킷 전송 HANNAM Univ. 11

Network Lab. arpupdate의 개요 HANNAM Univ. 14

Network Lab. arpupdate의 개요 HANNAM Univ. 14

Network Lab. arpupdate의 개요 HANNAM Univ. 16

Network Lab. arpupdate의 개요 HANNAM Univ. 16

Network Lab. arpupdate의 개요 HANNAM Univ. 17

Network Lab. arpupdate의 개요 HANNAM Univ. 17

Network Lab. arpupdate의 개요 HANNAM Univ. 18

Network Lab. arpupdate의 개요 HANNAM Univ. 18

Network Lab. arpupdate 함수 구조도 HANNAM Univ. 19

Network Lab. arpupdate 함수 구조도 HANNAM Univ. 19

Network Lab. arpupdate 처리 흐름 HANNAM Univ. 20

Network Lab. arpupdate 처리 흐름 HANNAM Univ. 20

Network Lab. arpupdate 프로그램 리스트 HANNAM Univ. 21

Network Lab. arpupdate 프로그램 리스트 HANNAM Univ. 21

Network Lab. arpupdate 프로그램 리스트 q 명령어 인수 해석, 옵션 설정 flag = NORMAL;

Network Lab. arpupdate 프로그램 리스트 q 명령어 인수 해석, 옵션 설정 flag = NORMAL; if(argc == 5) if(strcmp(argv[OPTION], "reply") == 0) flag = REPLY; else if (strcmp(argv[OPTION], "request") == 0) flag = REQUEST; else { help(argv[CMD_NAME]); return EXIT_FAILURE; } } else if ((argc != 4) { help(argv[CMD_NAME]); return EXIT_FAILURE; } q 명령어 인수로부터 IP 주소와 MAC 주소 넣음 strcpy(ifname, argv[IFNAME]); dst_ip = inet_addr(argv[DST_IP]); if ((sscanf(argv[MAC_ADDR], "%x: %x: %x: %x", &tmp[0], &tmp[1], &tmp[2], &tmp[3], &tmp[4], &tmp[5]) !=6) { printf("MAC Address error %sn", argv[MAC_ADDR]); return EXIT_FAILURE; } HANNAM Univ. 22

Network Lab. arpupdate 프로그램 리스트 q 데이터 링크 액세스 인터페이스 열기 if((s=socket(PF_PACKET, SOCK_PACKET, htons(ETH_P_ALL)))

Network Lab. arpupdate 프로그램 리스트 q 데이터 링크 액세스 인터페이스 열기 if((s=socket(PF_PACKET, SOCK_PACKET, htons(ETH_P_ALL))) < 0) { perror("socket"); return EXIT_FAILURE; } memset(&sa, 0, sizeof sa); sa. sa_family = PF_PACKET; strcpy(sa. sa_data, ifname); if(bind(s, &sa, sizeof sa)<0){ perror("bind"); return EXIT_FAILURE; } if((s=open_bpf(ifname))<0) return EXIT_FAILURE; bpf_len=0; HANNAM Univ. 23

Network Lab. arpupdate 프로그램 리스트 q MAC 주소 타입 검사 if ((memcmp (eth->ether_dhost, mac_addr,

Network Lab. arpupdate 프로그램 리스트 q MAC 주소 타입 검사 if ((memcmp (eth->ether_dhost, mac_addr, 6) != 0 && memcmp(eth->ether_shost, mac_addr, 6) !=0 && ntohs(eth->ether_type) == ETHERTYPE_ARP){ q Reply 설정 처리 make_arp((struct ether_arp *)sp, ARPOP_REPLY, mac_addr, arp->arp_tpa, arp->arp_sha, arp->arp_spa); make_ethernet((struct ether_header *)send_buff, arp->arp_sha, mac_addr, ETHERTYPE_ARP); q Request 설정 처리 make_arp((struct ether_arp *)sp, ARPOP_REQUEST, mac_addr, arp->arp_spa, zero, arp->arp_tpa); make_ethernet((struct ether_header *)send_buff, arp->arp_sha, mac_addr, ETHERTYPE_ARP); HANNAM Univ. 24

Network Lab. arpupdate 실행 예 - reply HANNAM Univ. 25

Network Lab. arpupdate 실행 예 - reply HANNAM Univ. 25

Network Lab. arpupdate 실행 예 - request HANNAM Univ. 26

Network Lab. arpupdate 실행 예 - request HANNAM Univ. 26

Network Lab. arpupdate 실행 예 - normal HANNAM Univ. 27

Network Lab. arpupdate 실행 예 - normal HANNAM Univ. 27

Thank you… Q&A mailto: //jslee@netwk. hannam. ac. kr HANNAM Univ.

Thank you… Q&A mailto: //jslee@netwk. hannam. ac. kr HANNAM Univ.