본문 바로가기
코스웨어/11년 내장형하드웨어

[내장형]김동화_2011년10월5일 일일보고서

by 알 수 없는 사용자 2011. 10. 5.
728x90
반응형

- ARP 기본 형식

→ 총 28 btye를 갖는다

→ Hardware type : Mac주소의 타입을 정의 함 (2 byte) 
        0X0001 = Ethernet v2 
        0X0002 = Ethernet 802.3 
        0X0003 = Localtalk 
        0X0004 = Frame-relay
그 외 다수 : http://www.iana.org/assignments/arp-parameters/arp-parameters.xhtml

→ Protocol type : 맵핑될 프로토콜 타입을 정의 한다. (2 byte) 
        0X0800 : IPv4 
        Ethernet head 타입과 일치 http://www.iana.org/assignments/ethernet-numbers 참조 
        Hardware address size : 하드웨어 주소의 크기 MAC이라서 6바이트임 48bit (1 byte) 
        Protocol address size : 변환될 프로토콜의 크기 4바이트 32bit (1 byte)

→ Opcode : ARP에는 두가지 타입이 있다. 그 타입을 나타낸다. (2 byte)
        0X0001 = ARP Request 
        0X0002 = ARP Reply 
        0X0003 = RARP request 
        0X0004 = RARP reply
→ Sender MAC address : 송신지 MAC 주소 ( 6 byte)
→ Sender IP address : 송신지 IP 주소 (4 byte)
→ Target MAC address : 수신지 MAC 주소 (6 byte)
→ Target IP address : 수신지 IP 주소 (4 byte)
 

※ IP 주소 형식으로 출력하는 방법에 대해 잠시 살펴보면
unsigned int A = 0x70 00 12 13;
이라고 생각했을 때 이를 70.00.12.1으로 출력한다.
이를 위해서 캐스팅을 하면 *((unsigned char *)&A)로 캐스팅 하여 출력 하였을 때 13이 출력된다.(little endian이기 때문)
이것을 한번 출력해 보면 아래와 같다.

#include<stdio.h>
int main()
{
     int A = 0x70001213;
     printf("%02X.%02X.%02X.%02X\n", *((unsigned char *)&A+3), *((unsigned char *)&A+2),
        *((unsigned char *)&A+1), *((unsigned char *)&A));

     return 0;#include<stdio.h>
int
 main()
{
     int A = 0x70001213;
     printf("%02X.%02X.%02X.%02X\n", *((unsigned char *)&A+3), *((unsigned char *)&A+2),
        *((unsigned char *)&A+1), *((unsigned char *)&A)); 
     return 0;
}

-> 출력 결과
70.00.12.13




- 소스 작성
 → L2_ARP.c


→ main.c
→ 출력해 보면

 


 

→ 위와 같이 패킷에서 ARP의 정보를 출력할 수 있다.
 

WINAPI - SIMPLEPAINT2

- 이전에 만든 SimplePaint 예제의 그리기 옵션인 색상과 굵기값 선택 컨트롤들을 대화상자로 옮겨본다.
- 메인 윈도우는 흰색 바탕의 컨버스로만 구성하고 옵션은 오른쪽 마우스 버튼을 누를 때 대화상자를 열어 선택 받는다.
- 화면을 지우는 기능은 옵션이 아니라 명령이므로 대화상자로 옮기는 것은 부적절 하며 공백키가 입력 되었을 때 지우는 것으로 한다.


→ 위의 작성한 소스를 실행시켜보면


 

→ 위와 같이 마우스 우클릭을 통해 대화상자를 호출하여 옵션을 지정할 수 있다.
→ 메인 윈도우에서 스페이스를 입력하면 화면이 클리어 된다.

 

 


728x90