본문 바로가기

Basic Theory/Term

웜홀 공격(Worm hole)이란? 메시지가 공격자가 포획한 노드를 지나가게 되면 공격자는 이 메시지를 도청, 위조 또는 삭제함으로써 중요한 메시지의 내용을 가져가거나 메시지를 제대로 전달하지 못하게 하여 네트워크에 심각한 피해를 줄 수 있다. 출처 : 무선 센서 네트워크에서 웜홀 공격 방어기법의 에너지 효율향상을 위한 TTL 결정 기법 더보기
위치 독립 코드(position independent code)란? 임의의 주소에 로드 가능한 코드. 데이터 액세스나 점프는 상대 주소로 수행한다. [출처] 재철꾸러기의 초심으로 대동단결[상세 내용] 위키백과 [관련 자료] 1. Binary Hacks - 공유라이브러리에 PIC 를 사용하는 이유 2. Position Independent Code 더보기
디렉토리 스트림(directory stream)이란? 디렉토리 함수들은 dirent.h 헤더 파일에 선언되어 있다.이들은 디렉토리 조작의 기반 수단으로 쓰이는 DIR 구조체를 사용한다. 이 구조체에 대한 포인터(DIR *)를 흔히 디렉토리 스트림(directory stream)이라고 부르는데, 이 디렉토리 스트림은 정규 파일 조작을 위한 파일 스트림(FILE *)과 상당히 비슷한 방식으로 쓰인다. 디렉토리에 담긴 개별 항목에 해당하는 구조체는 dirent로, 역시 dirent.h에 선언되어 있다. 디렉토리 항목을 위한 구조체가 따로 존재하는 이유는, 프로그램에서 DIR 구조체의 필드들을 직접 변경할 수가 없기 때문이다. 출처 : Beginning Linux Programming 4th edition 더보기
컴퓨터 리소스(Resource)란? 일반적으로 리소스(Resource)란, 사용될 수 있는 어떤 항목을 말한다. 프린터나 디스크 드라이브와 같은 장치들이 리소스가 될 수 있으며, 메모리도 마찬가지이다. 마이크로소프트 윈도우나 매킨토시와 같은 많은 운영체제에서, 리소스라는 용어는 특히 프로그램들이 활용할 수 있는 데이터나 루틴들을 가리킨다. 이런 것들을 다른 말로는 시스템 리소스라고도 부른다. 커다란 시스템의 일부를 이루는 하드웨어, 소프트웨어, 또는 데이터의 한 구성요소를 말한다. 예를 들어, 네트웍 리소스는 네트웍 상에서 활용 가능한 서버나 프린터 등을 지칭한다. 소프트웨어 리소스에는 프로그램, 유틸리티, 또는 심지어 프로그램 내의 작은 구성요소를 지칭할 수 있다. 데이터 리소스는 액세스 할 수 있는 파일이나 데이터베이스 등이 포함된다... 더보기
DNS resolver resolver(리졸버)는 DNS를 이용하는 클라이언트(PC)를 말한다. 리졸버의 역할은?: 네임서버(Nameserver)로 원하는 호스트(Host)에 대한 쿼리(Query)를 보내고 네임서버로 받은 응답을 해석하고 정보를 요구한 클라이언트에 정보를 전달한다. => 인터넷 상의(외부) 도메인의 이름풀이를 제공하는 것이 주 목적이다. 리졸버의 설정은?: /etc/resolv.conf 파일에서 이루어진다.domain 지시자, search 지시자, nameserver 지시자, sortlist 지시자, 그리고 option 이라는 다섯 개의 지시자를 resolv.conf 파일에서 이용할 수 있다. 명심해야 할 중요한 사항: 내부 사용자는 DNS advertiser를 사용하여 이름풀이를 사용할 수 없고, 외부 사용.. 더보기
Race Condition(경쟁 상태란?) Race 라는 단어를 보자마자 '경쟁'이라는 의미가 떠오르지 않는다. 단어만 놓고보면 '달린다'라는 의미가 생각난다. 그런데 다르게 생각해 보면 마라톤이나 자동차 경주에서 Race 라는 용어를 사용한다. 그리고 Race를 통하여 1등을 향한 경쟁을 하고 결과에 대한 순위를 정하게 된다. 컴퓨터공학에서 사용(이야기)하는 Race Condition(경쟁 상태)란?=> 한정된 자원을 동시에 이용하려는 여러 프로세스가 동시에 접근을 시도하는 상태를 말한다. 동시에 접근할 때 자료의 일관성을 해치는 결과가 나타날 수 있다. 이를 방지하기 위해서는 프로세스 협력 기법이 필요하다.경쟁 상태는 때로 입력값 간에 충돌을 일으켰을 때 논리 회로에서도 발생할 수 있다. [출처] : 텀즈, 위키피디아[참조] : [NH-mai.. 더보기
메모리(Memory)영역 - 스택영역(stack segment) 스택 영역(stack segment)은 아주 잠깐 사용하고 삭제할 데이터를 저장하는 공간이다. 잊어버리지 않게 금방 사용하고 버리는 '일회용품'이라고 기억하고 있으면 좋을 것 같다. 좀더 구체적으로 이야기하면 함수 호출과 관련된 정보들이 위치하게 되는 영역이다. 함수의 인자들, 리턴 어드레스, 그리고 함수 내에서 사용되는 지역 변수(매개변수)들이 바로 이 곳에 저장된다. 그리고 그 외에도 몇 가지 값들이 스택 영역에 저장되어 있는데, 대표적인 예가 쉘의 환경변수(environment) 값이다. 이러한 값들은 모두 버퍼 오버플로우 공격과 밀접한 관계를 가지고 있는 것들이기 때문에, 우리가 가장 큰 관심을 갖고 들여다 봐야 할 영역이다. 그리고 스택 세그먼트(SS) 레지스터는 스택 세그먼트의 주소를 포함한다.. 더보기
가상 메모리(virtual memory) 운영체제(OS)는 레지스터(register), 캐쉬(cache), 램(RAM), 하드디스크(hard disk) 를 하나의 커다란 메모리로 보이게끔 도와준다. 이렇게 운영체제가 통으로 구성해주는 메모리는 가리켜 가상 메모리(virtual memory)라 한다. 가상이라고 하는 이유는? 물리적인 메모리(하드웨어 관점에서 메모리)를 기반으로 가상으로 구성된 메모리이기 때문이다. 그리고 우리가 흔히 이야기 하는 메모리의 주소 또한 Linux 나 Windows 와 같은 운영체제가 만들어주는 가상메모리 주소이다. [출처] 도서 : 난 정말 C Programming을 공부한 적이 없다구요! (윤성우 지음) 더보기
메모리(Memory)영역 - 코드영역(code segment) 메모리 영역을 공부하기 전에 '세그먼트'(segment) 와 '영역'이라는 표현에 대해서 같은것인지에 대해서 긴가민가 했었는데 공부를 하면서 아래 그림과 같이 이렇게 나누어진 영역을 세그먼트(segment)라고 한 다는 것에 대해서 알 수 있었다. CPU가 읽어 해설할 수 있는 기계어들이 위치하게 되는 영역을 말한다. 우리가 작성한 메인 프로그램의 기계어 코드가 바로 이 영역에 위치하게 된다. 보통 첫번째로 실행 가능한 명령어는 이 세그먼트(segment)의 맨 처음에 위치하며, 운영체제(OS)는 프로그램 실행을 시작하기 위해 그 위치를 알고 있다. 이름이 의미하듯이, 코드 세그먼트(CS) 레지스터는 코드 세그먼트의 주소를 의미한다. 그리고 우리가 코딩한 것을 실행을 시키면 CPU가 알아서 코드영역에 저.. 더보기
Console(콘솔) 데이터의 입력을 담당하는 키보드와 출력을 담당하는 모니터를 총칭하는 단어. 이중에서 키보드를 가리켜 '콘솔 입력 장치'라 하고, 모니터를 가리켜 '콘솔 출력 장치'라 한다. 따라서 데이터를 모니터로 출력하는 printf 함수는 '콘솔 출력 함수'가 되고, 데이터를 키보드로부터 입력 받는 scanf 함수는 '콘솔 입력 함수'가 된다. C언어에는 printf 함수와 scanf 함수 이외에 다양한 콘솔 입출력 함수가 정의되어 있다. 다만 이 두 함수가 대표적은 콘솔 입출력 함수일 뿐이다.[출처] 도서 : 난 정말 C Programming을 공부한 적이 없다구요! (윤성우 지음) 더보기