목차
1.소스코드분석
2.결과 화면 및 설명
3.소감
4.참고문헌
2.결과 화면 및 설명
3.소감
4.참고문헌
본문내용
id;//식별자
unsigned short fl_offset0:4;//플래그의 오프셋
unsigned char flags:3;//플래그는 3비트임
unsigned short fl_offset1:1;
unsigned short fl_offset2:8;
unsigned char ttl;//Time to Live 즉 수명시간
unsigned char protocol;//아이피의 프로토콜
unsigned short checksum;
unsigned long src_ip;//발신지 ip
unsigned long dst_ip;//수신지 ip
};
// TCP 헤더의 구조를 가지는 구조체
struct __attribute__((packed)) tcp_header_t {
//__attribute__((packed)의 의미는 컴파일러 지정어로서 컴파일러에게 각 구조체 필드에 대해서 packing 하라는 이야기이다. 이렇게 packing을 해주면 컴파일러는 구조체의 모든 멤버변수에 대해서 실제 크기만큼만 할당을 하게 된다.
unsigned short src_port;//발신지 port
unsigned short dst_port;//수신지 port
unsigned long seqnum;//sequence number
unsigned long acknum;//acknowledge number 출력
unsigned char reserved2:4;//향후 사용을 위해 예약되 있는 필드
unsigned char hlen:4;//헤더길이
unsigned char flags:6;
unsigned char reserved1:2;
unsigned short window_size;//송수신지의 버퍼의 크기를 나타내는 필드
unsigned short checksum;//데이터가 이상없이 제대로 전송되었는지 확인시 이용
unsigned short urgent_point;//긴급포인터, 수신지로부터 응답이 잘못되었거나 다른이유로 무엇인가 이상이 발견되면 긴급데이터를 실은 세그먼트를 수신지로 보낸다.
};
2.결과 화면 및 설명
위의 코드대로 실행한다면 출력이 무한반복이 된다. 이를 방지하게 위해 소스코드에는 while 문 안에 cnt라는 변수를 넣어 10번이 되면 프로그램을 중지 시켰다.
TCP Header
3.소감
소켓 프로그래밍에 익숙치 않아서 이해하는데 어려움이 있었다. 하지만 책을 읽고 코드 한줄 한 줄을 따져가며 생각하다보니 데이터통신 시간에 배웠던 패킷의 교환의 원리가 생각나면서 이해할 수 있었다. 로소켓이 모든 패킷에 대해서 받아 볼 수 있는 프로그램이다 보니 root 권한을 가져야만 사용할 수 있다는 개념이 생소하고, 더 매력적으로 느껴졌다. 이런 프로그램으로 상대방의 전송 데이터를 가로채는 원리를 알게 되었다. 컴퓨터전공 학생으로써 많은 프로그램을 짜 왔지만 이번처럼 로소켓 프로그램은 처음이었다. 앞으로 보안쪽으로도 공부를 해 보고 싶기 때문에 이런 여러 소켓 프로그램들을 더 배워서 활용해 보고 싶다.
4.참고문헌
TCP/IP 소켓 프로그래밍 /한빛미디어
unsigned short fl_offset0:4;//플래그의 오프셋
unsigned char flags:3;//플래그는 3비트임
unsigned short fl_offset1:1;
unsigned short fl_offset2:8;
unsigned char ttl;//Time to Live 즉 수명시간
unsigned char protocol;//아이피의 프로토콜
unsigned short checksum;
unsigned long src_ip;//발신지 ip
unsigned long dst_ip;//수신지 ip
};
// TCP 헤더의 구조를 가지는 구조체
struct __attribute__((packed)) tcp_header_t {
//__attribute__((packed)의 의미는 컴파일러 지정어로서 컴파일러에게 각 구조체 필드에 대해서 packing 하라는 이야기이다. 이렇게 packing을 해주면 컴파일러는 구조체의 모든 멤버변수에 대해서 실제 크기만큼만 할당을 하게 된다.
unsigned short src_port;//발신지 port
unsigned short dst_port;//수신지 port
unsigned long seqnum;//sequence number
unsigned long acknum;//acknowledge number 출력
unsigned char reserved2:4;//향후 사용을 위해 예약되 있는 필드
unsigned char hlen:4;//헤더길이
unsigned char flags:6;
unsigned char reserved1:2;
unsigned short window_size;//송수신지의 버퍼의 크기를 나타내는 필드
unsigned short checksum;//데이터가 이상없이 제대로 전송되었는지 확인시 이용
unsigned short urgent_point;//긴급포인터, 수신지로부터 응답이 잘못되었거나 다른이유로 무엇인가 이상이 발견되면 긴급데이터를 실은 세그먼트를 수신지로 보낸다.
};
2.결과 화면 및 설명
위의 코드대로 실행한다면 출력이 무한반복이 된다. 이를 방지하게 위해 소스코드에는 while 문 안에 cnt라는 변수를 넣어 10번이 되면 프로그램을 중지 시켰다.
TCP Header
3.소감
소켓 프로그래밍에 익숙치 않아서 이해하는데 어려움이 있었다. 하지만 책을 읽고 코드 한줄 한 줄을 따져가며 생각하다보니 데이터통신 시간에 배웠던 패킷의 교환의 원리가 생각나면서 이해할 수 있었다. 로소켓이 모든 패킷에 대해서 받아 볼 수 있는 프로그램이다 보니 root 권한을 가져야만 사용할 수 있다는 개념이 생소하고, 더 매력적으로 느껴졌다. 이런 프로그램으로 상대방의 전송 데이터를 가로채는 원리를 알게 되었다. 컴퓨터전공 학생으로써 많은 프로그램을 짜 왔지만 이번처럼 로소켓 프로그램은 처음이었다. 앞으로 보안쪽으로도 공부를 해 보고 싶기 때문에 이런 여러 소켓 프로그램들을 더 배워서 활용해 보고 싶다.
4.참고문헌
TCP/IP 소켓 프로그래밍 /한빛미디어
추천자료
컴퓨터 프로그래밍
운영체제에 관한 보고서
c언어로 작성된 다익스트라(dijkstra알고리즘)
자바 달력 출력 프로그램
자바 파일입출력
컴퓨터과학과 - C프로그래밍 레포트(대체)
Overloading과 Overriding의 구별
자료구조(AVL tree, hash 등)을 이용한 패턴 매칭(Pattern Matching) 구현
자료구조(스택, stack)을 이용한 최단 거리 미로 찾기 알고리즘
이미지를 로딩하여 보여주고 그에 따른 히스토그램 정보와 파일의 간단한 정보를 출력해주는 ...
[윈도우프로그래밍] 데이터베이스응용 관리프로그램 - 음원관리 프로그램 : 음악관리,데이터...
assignment3
COPYLEFT 관련 site 조사
안드로이드 내부/외부 디바이스 용량 확인 및 메모리 확인/정리 APP OS_project