KR101880705B1 - 인터넷을 이용하여 장치정보를 수집하는 시스템 및 그 방법 - Google Patents

인터넷을 이용하여 장치정보를 수집하는 시스템 및 그 방법 Download PDF

Info

Publication number
KR101880705B1
KR101880705B1 KR1020170148318A KR20170148318A KR101880705B1 KR 101880705 B1 KR101880705 B1 KR 101880705B1 KR 1020170148318 A KR1020170148318 A KR 1020170148318A KR 20170148318 A KR20170148318 A KR 20170148318A KR 101880705 B1 KR101880705 B1 KR 101880705B1
Authority
KR
South Korea
Prior art keywords
packet
response information
response
information
address
Prior art date
Application number
KR1020170148318A
Other languages
English (en)
Inventor
박관영
김준호
Original Assignee
주식회사 모비젠
한국인터넷진흥원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 모비젠, 한국인터넷진흥원 filed Critical 주식회사 모비젠
Priority to KR1020170148318A priority Critical patent/KR101880705B1/ko
Application granted granted Critical
Publication of KR101880705B1 publication Critical patent/KR101880705B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명의 일 실시 예는, 복수의 IP(internet protocol)주소를 생성하고, 상기 생성된 복수의 IP주소로 패킷을 송신하는 패킷생성단계; 상기 송신된 패킷에 대응되는 응답패킷을 수신하고, 상기 IP주소별로 수신된 응답패킷을 통합한 응답정보를 산출하는 응답정보산출단계; 상기 산출된 응답정보를 미리 설정된 프로세스(process)의 수에 따라 분할하고, 상기 분할된 응답정보를 각 프로세스에 포함된 복수의 스레드(thread)를 통해 분할처리하는 분할처리단계; 및 상기 분할처리된 응답정보를 복수의 핑거프린팅 프로세스를 통해서 처리한 결과를 기초로 하여 상기 응답패킷을 송신한 각 장치들의 장치정보를 파악하는 장치정보파악단계를 포함하는 장치정보를 수집하는 방법을 제공한다.

Description

인터넷을 이용하여 장치정보를 수집하는 시스템 및 그 방법 {System for collecting device information using internet and method thereof}
본 발명은 인터넷을 이용하여 장치정보를 수집하는 시스템 및 그 방법에 대한 것으로서, 보다 상세하게는, 인터넷에 연결되어 있는 사물인터넷 장치(IoT device)의 정보를 신속하게 수집하기 위한 시스템 및 그 방법에 관한 것이다.
인터넷에 연결되어 동작하는 것을 특징으로 하는 사물인터넷 장치(사물인터넷 서비스 단말)가 널리 보급되면서, 사물인터넷 장치에 대한 해킹의 위험도 함께 늘어나고 있다.
사물인터넷 장치에 대한 보안을 유지하기 위해서, 사물인터넷 장치의 보안 취약성을 주기적으로 검사하여 보안이 취약한 점이 발견되면, 즉각적인 보안 패치의 업데이트를 통해서, 사물인터넷 장치가 안정적인 서비스를 제공할 수 있도록 해야 한다.
위와 같이 진화하는 보안 위협에 신속하게 대응하기 위해서는, 사물인터넷 장치의 보안과 관련된 정보를 짧은 주기를 통해서 수집할 필요가 있다. 즉, 42억개의 IP 주소(Internet Protocol Address)를 포함하는 IPv4 공간에서 실제 유효한 37억개의 인터넷 장치의 정보를 초고속으로 수집해야만 한다.
도 1은 종래의 인터넷 장치의 정보를 수집하는 방법을 도식적으로 나타낸 도면이다.
종래의 장치정보를 수집하는 장치는 IP 주소마다 패킷(packet)을 송신하고, 그 송신된 패킷에 대한 응답패킷을 수신한다. 응답패킷에는 사물인터넷 장치의 운영체제정보, 보안 업데이트 패치의 버전정보 등이 포함되어 있다. 수신된 정보들은 그 내용이 파악되기에 앞서 IP스캔결과파일이라는 하나의 데이터파일을 형성하게 되며, IP 스캔결과파일은 복수의 핑거프린팅 프로세스(fingerprinting process) 과정을 통해 처리되어 최종적으로 장치정보를 수집하는 장치가 파악해야 하는 사물인터넷 장치의 정보가 된다.
보다 구체적으로, 기존 구조에서의 핑거프린팅 프로세스는 IP 주소의 스캔 결과에서 데이터를 파싱(parsing)하여 그 파싱결과를 하나의 긴 문자열 변수로 만들고, 사물인터넷 장치에 운영체제 정보의 검색을 위해서 미리 저장된 규칙파일(Rule File)에 문자열 변수와 매칭되는 부분이 있는지 여부를 검색하는 프로세스이다. 이때, 데이터를 파싱하는 작업과 규칙파일을 검색하는 과정에서 장치정보를 수집하는 장치의 성능의 병목현상이 발생한다. 이 과정에서 발생하는 장치정보를 수집하는 장치의 성능의 병목현상은 규칙파일에 정의되어 있는 필드 순서와 동일하게 IP 주소의 스캔 결과를 파싱해서 문자열 변환을 해야하고, 변환된 문자열을 규칙파일의 모든 내용과 문자열 비교 연산을 수행하기 때문에 발생하는 문제점이다.
위와 같은 이유로, 사물인터넷 장치의 정보를 신속하게 수집할 수 있을 뿐만 아니라, 종래의 장치가 갖고 있는 성능의 병목현상을 극복한 장치정보를 수집하는 장치의 필요성이 대두된다.
대한민국 등록특허 제10-1767454호 (2017.05.23 공개)
Electronics and Telecommunications Trends. Vol. 30, No. 2, April 2015, pp. 87-94, 최강일 선임연구원 외 1인 저술(14-000-05-001, 스마트 네트워킹 핵심 기술개발).
본 발명이 해결하고자 하는 기술적 과제는, 종래의 장치보다 더 신속하게 동작하는 장치정보를 수집하는 방법을 제공하는 데에 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시 예에 따른, 인터넷을 이용하여 장치정보를 수집하는 방법은, 복수의 IP(internet protocol)주소를 생성하고, 상기 생성된 복수의 IP주소로 패킷을 송신하는 패킷생성단계; 상기 송신된 패킷에 대응되는 응답패킷을 수신하고, 상기 IP주소별로 수신된 응답패킷을 통합한 응답정보를 산출하는 응답정보산출단계; 상기 산출된 응답정보를 미리 설정된 프로세스(process)의 수에 따라 분할하고, 상기 분할된 응답정보를 각 프로세스에 포함된 복수의 스레드(thread)를 통해 분할처리하는 분할처리단계; 및 상기 분할처리된 응답정보를 복수의 핑거프린팅 프로세스를 통해서 처리한 결과를 기초로 하여 상기 응답패킷을 송신한 각 장치들의 장치정보를 파악하는 장치정보파악단계를 포함한다.
상기 기술적 과제를 해결하기 위한 본 발명의 다른 일 실시 예에 따른 인터넷을 이용하여 장치정보를 수집하는 시스템은, 복수의 IP(internet protocol)주소를 생성하고, 상기 생성된 복수의 IP주소로 패킷을 송신하는 패킷생성부; 상기 송신된 패킷에 대응되는 응답패킷을 수신하고, 상기 IP주소별로 수신된 응답패킷을 통합한 응답정보를 산출하는 응답정보산출부; 상기 산출된 응답정보를 미리 설정된 프로세스(process)의 수에 따라 분할하고, 상기 분할된 응답정보를 각 프로세스에 포함된 복수의 스레드(thread)를 통해 분할처리하는 분할처리부; 및 상기 분할처리된 응답정보를 복수의 핑거프린팅 프로세스를 통해서 처리한 결과를 기초로 하여 상기 응답패킷을 송신한 각 장치들의 장치정보를 파악하는 장치정보파악부를 포함한다.
본 발명의 일 실시 예는, 인터넷을 이용하여 장치정보를 수집하는 방법을 실행시키기 위한 프로그램을 저장하고 있는 컴퓨터 판독가능한 기록매체를 제공한다.
본 발명에 따르면, 사물인터넷 장치의 정보를 신속하게 수집할 수 있을 뿐만 아니라, 사물인터넷 장치들의 IP주소 스캔의 결과를 처리하는 과정에 있어서, 성능의 병목현상이 발생되지 않는다.
도 1은 종래의 인터넷 장치의 정보를 수집하는 방법을 도식적으로 나타낸 도면이다.
도 2는 본 발명에 따른 시스템의 전체 구성을 개략적으로 나타낸 도면이다.
도 3은 본 발명에 따른 장치정보를 수집하는 시스템의 일 예의 블록도를 도시한 도면이다.
도 4는 패킷생성부가 IP 주소를 순열 및 미리 설정된 소수를 변수로 하는 수학식으로 IP 주소를 생성하는 일 예를 도식적으로 나타낸 도면이다.
도 5는 응답정보산출부가 응답패킷을 커널 영역을 통과시켜 사용자단에서 처리하는 것을 도식적으로 나타낸 도면이다.
도 6은 복수의 프로세스내에 생성된 복수의 스레드가 응답정보를 분할하여 처리하는 구조를 도식화한 도면이다.
도 7은 응답정보가 고속병렬구조에서의 프로세스내에 생성된 스레드에서 처리되기 위해서 스레드에 할당되는 과정을 도식화한 도면이다.
도 8은 복수의 핑거프린팅 프로세스를 통해서 큐에 쌓인 정보가 병렬적으로 처리되는 과정을 도식화한 도면이다.
도 9는 본 발명에 따라 인터넷을 이용하여 장치정보를 수집하는 방법의 일 예의 흐름도를 도시한 도면이다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 본 발명의 효과 및 특징, 그리고 그것들을 달성하는 방법은 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 다양한 형태로 구현될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 실시 예들을 상세히 설명하기로 하며, 도면을 참조하여 설명할 때 동일하거나 대응하는 구성 요소는 동일한 도면부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
이하의 실시 예에서, 제1, 제2 등의 용어는 한정적인 의미가 아니라 하나의 구성 요소를 다른 구성 요소와 구별하는 목적으로 사용되었다.
이하의 실시 예에서, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
이하의 실시 예에서, 포함하다 또는 가지다 등의 용어는 명세서상에 기재된 특징, 또는 구성요소가 존재함을 의미하는 것이고, 하나 이상의 다른 특징을 또는 구성요소가 부가될 가능성을 미리 배제하는 것은 아니다.
어떤 실시 예가 달리 구현 가능한 경우에 특정한 공정 순서는 설명되는 순서와 다르게 수행될 수도 있다. 예를 들어, 연속하여 설명되는 두 공정이 실질적으로 동시에 수행될 수도 있고, 설명되는 순서와 반대의 순서로 진행될 수 있다.
도 2는 본 발명에 따른 시스템의 전체 구성을 개략적으로 나타낸 도면이다.
도 2를 참조하면, 본 발명에 따른 전체시스템(10)은 장치정보를 수집하는 시스템(100)이 통신망(600)을 통해서, 카메라(200), 냉장고(300), 에어컨(400) 및 드론(500)과 각종 정보를 송수신하는 것을 알 수 있다.
먼저, 장치정보를 수집하는 시스템(100)은 카메라(200), 냉장고(300), 에어컨(400) 및 드론(500)에 패킷을 송신하고, 그에 따른 응답패킷을 수신하여, 카메라(200), 냉장고(300), 에어컨(400) 및 드론(500)의 장치정보를 파악하고, 보안의 취약점이 있는지 여부를 판단한다.
카메라(200), 냉장고(300), 에어컨(400) 및 드론(500)은 모두 사물인터넷 장치로서, 장치정보를 수집하는 시스템(100)으로부터 패킷을 수신하면, 그에 따라 응답패킷을 생성하여 송신할 수 있는 통신장치를 포함하고 있다. 도 2의 전체시스템(10)은 도시된 카메라(200), 냉장고(300), 에어컨(400) 및 드론(500) 외에도 통신망(600)을 통해서 각종 정보를 송수신할 수 있는 다른 장치를 더 포함할 수 있다.
통신망(600)은 장치정보를 수집하는 시스템(100)과 사물인터넷 장치들을 연결시켜주는 기능을 수행하고, 데이터망, 이동통신망, 인터넷 등 각종 무선 통신망을 포함한다.
도 3은 본 발명에 따른 장치정보를 수집하는 시스템의 일 예의 블록도를 도시한 도면이다.
도 3을 참조하면, 본 발명에 따른 장치정보를 수집하는 시스템(100)은 패킷생성부(110), 응답정보산출부(130), 분할처리부(150) 및 장치정보파악부(170)를 포함하는 것을 알 수 있다. 이하에서, 도 3의 장치정보를 수집하는 시스템(100)은 도 2의 장치정보를 수집하는 시스템(100)과 동일한 장치인 것으로 간주하며, 설명의 편의를 위해서 도 2를 참조하여 설명하기로 한다.
패킷생성부(110)는 복수의 IP(Internet Protocol) 주소를 생성하고, 생성된 복수의 IP 주소로 패킷을 송신한다.
먼저, 패킷생성부(110)는 복수의 IP 주소를 생성한다. 패킷생성부(110)가 생성한 IP 주소는, 패킷생성부(110)가 그 IP 주소를 갖는 사물인터넷 장치에 패킷을 보내기 위해 생성한 주소이다. 현재 이용되고 있는 IPv4(Internet Protocol version 4)에 따르면, 유효한 IP 주소는 37억개 정도이며, 패킷생성부(110)는 37억개의 유효한 주소 중에서 미리 설정된 범위와 개수내에서 IP 주소를 다양하게 생성하며, 그 생성된 IP 주소에 패킷을 송신한다.
선택적 일 실시 예로서, 패킷생성부(110)는 복수의 IP 주소를 순열 및 미리 설정된 소수를 변수로 하는 수학식을 통해서 IP 주소를 생성할 수도 있다.
도 4는 패킷생성부가 IP 주소를 순열 및 미리 설정된 소수를 변수로 하는 수학식으로 IP 주소를 생성하는 일 예를 도식적으로 나타낸 도면이다.
IPv4하에서 정의될 수 있는 IP 주소의 전체 개수는 약 42억개(2의 32제곱에 의해 산출된 값)이며, 이중 유효 주소는 약 37억개이다. 패킷생성부(110)는 도 4에서 도시된 것과 같이 순열(circulation) 및 미리 설정된 소수(prime number)를 변수로 하는 수학식을 기초로 하여 매번 다른 IP 주소를 생성할 수 있으며, 생성되는 IP 주소는 순열 및 수학식의 특성에 따라 중복되지 않게 된다.
Figure 112017111008058-pat00001
수학식 1은 패킷생성부(110)가 IP 주소를 생성하기 위해서 이용하는 수학식의 일 예를 나타낸다. 수학식 1에서, g는 순열을 구성하는 순열결정인자이고, p는 현재 이용되고 있는 인터넷프로토콜 버전에서 정의될 수 있는 IP 주소의 전체 개수에 가장 가까운 소수(prime number)를 의미한다. 설명의 편의를 위해서, 이하에서는, g는 순열결정인자, p는 결정소수라고 호칭하기로 한다.
예를 들어, IPv4하에서 p는 2의 32제곱과 가장 가까운 소수인 4294967311(2의 32제곱에 15를 더한 값)이 될 수 있고, 도 4에 따르면 순열결정인자 g는 6이 될 수 있다.
또한, 수학식 1에서
Figure 112017111008058-pat00002
Figure 112017111008058-pat00003
는 각각 i번째 10진수 및 i+1번째 10진수로서, 1부터 인터넷프로토콜 버전에서 정의될 수 있는 IP 주소의 전체 개수와 같은 수 중 어느 하나의 수가 될 수 있다. 예를 들어, IPv4하에서
Figure 112017111008058-pat00004
는 1에서 4294967296(2의 32제곱) 중 어느 하나의 수가 될 수 있다. 즉, i+1번째 10진수는 i번째 10진수에 순열결정인자 g를 곱한 값을 결정소수 p로 나눈 나머지로 정의된다.
수학식 1에 따라서, 도 4를 순서대로 설명하면 다음과 같다. 먼저, 패킷생성부(110)에 의해 순열을 구성하는 순열결정인자 g는 임의의 값 5로 선택되고,
Figure 112017111008058-pat00005
이 1로 선택되면,
Figure 112017111008058-pat00006
는 수학식 1에 따라 5가 된다. 위와 같은 과정을 반복하면,
Figure 112017111008058-pat00007
는 5,
Figure 112017111008058-pat00008
는 4,
Figure 112017111008058-pat00009
는 6,
Figure 112017111008058-pat00010
은 2,
Figure 112017111008058-pat00011
은 3,
Figure 112017111008058-pat00012
Figure 112017111008058-pat00013
과 같은 1이 산출된다. 즉,
Figure 112017111008058-pat00014
Figure 112017111008058-pat00015
이 같은 값을 같은 것은 결정소수가 7이기 때문이며, 결정소수가 달라지면 그만큼 최초의
Figure 112017111008058-pat00016
과 같은 값이 산출되기 위해서 앞선 과정보다 더 많은 반복과정이 필요하다. 도 4에 따르면, 결정소수가 7이므로, 결정소수보다 더 작은 수가 나머지값들로 산출된 것을 알 수 있다.
이하에서는, 패킷생성부(110)가 수학식 1을 통해서 매번 다른 IP 주소를 생성하는 과정을 보다 더 구체적인 예를 들어 설명하기로 한다. 먼저, 패킷생성부(110)는 순열결정인자 g를 3으로 결정하고, 결정소수를 4294967311(2의 32제곱에 15를 더한 수)로 결정하고, 첫 번째 10진수가 2598이라고 가정한다. 그러면, 두 번째 10진수는 2598에 3을 곱한 값을 4294967311로 나눈 나머지인 7794가 된다. 패킷생성부(110)는 10진수 7794를 IPv4 주소로 변환하여, IP 주소 0.0.30.114를 생성한다. 즉, 패킷생성부(110)가 생성한 첫 번째 IP 주소는 0.0.30.114이다. 본 실시 예에서, 패킷생성부(110)가 10진수를 도트 10진수 IP 주소로 변환하는 방법에 대한 설명은 종래에 널리 알려진 방법이므로 그에 대한 설명은 생략하기로 한다.
이어서, 패킷생성부(110)는 세 번째 10진수인 23382, 네 번째 10진수인 70146을 IP 주소로 변환하여, 0.0.91.86 및 0.1.18.2를 각각 생성한다. 위와 같은 과정을 계속 반복하다보면, 첫 번째 10진수인 2598와 동일한 10진수가 수학식 1의 좌변값으로 산출되며, 패킷생성부(110)는 생성될 수 있는 모든 IP 주소가 생성된 것으로 보고 해당 순열에 대한 IP 주소 생성을 중지한다.
종래기술처럼 IPv4 주소 공간에서 생성될 수 있는 IP 주소를 순서대로 생성하고, 그 IP 주소에 대해 스캐닝 작업을 하면, 목적지 네트워크의 과부하를 유발할 수 있으며, 일시적인 네트워크 오류에 의해 스캐닝 결과가 불일치할 가능성이 있으나, 본 선택적 실시 예에 따라 임의 순열(random circulation) 방식을 통해 IP 주소를 생성하면 전술한 문제점이 최소화되는 이점이 있다. 본 선택적 실시 예는, 패킷생성부(110)가 실행시킨 프로세스 내에 정의된 주소생성 스레드(address generating thread)에 의해서 수행될 수 있다.
패킷생성부(110)는 위와 같은 과정을 통해 생성한 복수의 IP 주소로 패킷을 생성하여 송신한다. 패킷생성부(110)는 각 IP 주소로 패킷을 생성하여 송신할 때, 각 IP 주소에 위치한 장치의 장치정보를 스캐닝하는 동안, 변경되지 않는 이더넷 헤더(ethernet header)의 체크섬(check sum)을 제거하여, 리눅스 커널(Linux Kernel)이 모든 패킷마다 불필요한 점검을 하는 것을 방지함으로써, 리눅스 커널의 오버헤드를 감소시킨다. 패킷생성부(110)는 전술한 주소생성 스레드와는 별개의 스레드를 통해서 이더넷 헤더의 체크섬을 제거하는 작업이 수행되도록 한다.
이어서, 응답정보산출부(130)는 복수의 IP 주소로 송신된 패킷에 대응되는 응답패킷을 수신하고, IP 주소별로 수신된 응답패킷을 통합한 응답정보를 산출한다. 응답패킷은 그 IP 주소에 해당하는 사물인터넷 장치의 장치정보를 포함하고, 응답정보는 패킷생성부(110)에 의해 생성된 모든 IP 주소에 해당하는 사물인터넷 장치들의 장치정보를 포함한다.
실시 예에 따라서, 전술한 것과 달리, 사물인터넷 장치들로부터 송신되는 응답패킷은 장치정보를 송신하기에 앞서 통신체계를 확립하기 위한 확인정보만 포함할 수도 있다. 이 경우, 추후에 반응형 스캔 스레드에서 다시 한번 사물인터넷 장치에게 장치정보의 송신을 요청하게 된다.
일반적으로, 원격지에 있는 장치간의 패킷의 송수신은 전송 제어 프로토콜(TCP: Transmission Control Protocol)에 의하므로, 이를 기초로 설명하면, 패킷생성부(110)가 패킷을 생성하여 각 IP 주소에 송신할 때의 각 패킷은 동기화 요청메시지(SYN)에 해당한다. 동기화 요청메시지(SYN)를 수신한 각 IP 주소에 대응되는 사물인터넷 장치는 동기화 승인메시지(SYN-ACK)를 생성하여 응답정보산출부(130)에 송신한다. 패킷생성부(110) 또는 응답정보산출부(130)는 3-way 핸드셰이킹(handshaking)에 따라, 승인메시지(ACK)를 각 사물인터넷 장치에 송신해야 하나, 본 발명에서는 승인 메시지를 보내지 않고 동기화를 위한 통신을 종료하며, 이는 최소한의 패킷 교환으로 사물인터넷 장치의 응답여부를 검증할 수 있도록 해준다.
선택적 일 실시 예로서, 응답정보산출부(130)는 응답패킷을 커널(kernel) 영역을 통과하여 사용자단에서 처리하는 방식을 통해서, 응답정보를 산출할 수도 있다. 본 선택적 실시 예에 따르면, 응답패킷을 처리하기 위해서 매번 복사하는 과정이 생략되어, 응답정보산출부(130)의 오버헤드를 줄일 수 있다.
도 5는 응답정보산출부가 응답패킷을 커널 영역을 통과시켜 사용자단에서 처리하는 것을 도식적으로 나타낸 도면이다.
도 5를 참조하면, 응답패킷이 하드웨어(510) 및 커널 영역(530)을 그대로 통과하여 라이브러리(550)를 거쳐서 바로 사용자단(570)에서 처리되는 것을 알 수 있다. 여기서, 사용자단(570)은 응답패킷을 라이브러리를 통하여 수신하고, 응답패킷의 데이터 처리결과를 공유하는 적어도 하나 이상의 어플리케이션으로 구성된다.
도 5에서 라이브러리(550)는 데이터 플레인 가속화(DPA: Data Plane Acceleration)기술에 따른 DPA 라이브러리일 수도 있다. 데이터 플레인 가속화 기술의 예는 이미 공개된 문헌(선행기술문헌 중 비특허문헌 목차에 기재된 문헌)에 다양하게 기재되어 있으므로, 이에 대한 자세한 설명은 생략하기로 한다.
이하에서는, 도 3에 대한 설명을 이어서 하기로 한다.
분할처리부(150)는 응답정보산출부(130)가 산출한 응답정보를 미리 설정된 프로세스의 수에 따라 분할하고, 분할된 응답정보를 각 프로세스에 포함된 복수의 스레드를 통해서 분할처리한다.
먼저, 분할처리부(150)는 응답정보를 응답정보산출부(130)로부터 수신하고, 응답정보를 프로세스의 수에 따라 분할한다. 프로세스의 수는 미리 설정된 값으로서, 본 발명에 따른 시스템의 관리자에 의해서 특정 시점에서 최적의 값으로 변경될 수도 있고, 또한, 다른 예로서, 분할처리부(150)에 포함된 연산장치가 응답정보의 크기를 기초로 하여, 응답정보를 분할하여 처리하기에 적절한 프로세스의 수를 임의로 결정할 수도 있다.
프로세스(process)는 분할처리부(150)에 미리 저장되어 있는 응답정보처리 프로그램이 실행되면, 적어도 하나 이상 생성되어 프로그램의 코드 또는 스크립트에 따른 작업을 수행한다. 분할처리부(150)는 프로세스의 수가 몇 개인지 파악하고, 응답정보를 프로세스의 수에 따라 분할한다. 예를 들어, 응답정보의 크기가 1기가바이트(giga bytes)짜리 파일이고, 4개의 프로세스가 있다면, 각 프로세스가 담당하는 분할된 응답정보의 크기는 250메가바이트(mega bytes)가 될 수 있다. 각 프로세스는 독립적이고, 별개의 메모리를 차지하므로, 각 프로세스의 특성에 따라 서로 다른 작업량을 할당받아 수행할 수도 있다.
이어서, 분할처리부(150)는 분할된 응답정보를 각 프로세스에 포함된 복수의 스레드를 통해서 처리하도록 한다. 프로세스 내부에는 적어도 하나 이상의 스레드(thread)가 포함된다. 스레드는 프로세스 내부에 존재하는 일련의 실행코드로서, 프로세스가 생성될 때 하나의 주 스레드(main thread)가 생성되어 대부분의 작업을 처리하고, 주 스레드가 종료되면, 프로세스도 종료된다. 본 발명에서는 멀티스레드(multi thread)방식을 통해서 응답정보를 처리하며, 멀티스레드는 멀티프로세스와는 달리 스레드간에 프로세스내의 메모리를 공유하여 사용할 수 있어서, 전환속도가 우수하고, 분할처리부의 CPU가 멀티코어 CPU(Central Processing Unit)일 경우, 각각의 CPU마다 스레드를 하나씩 담당하도록 하여 전체적인 작업속도를 높이는 것이 가능하다.
선택적 일 실시 예로서, 분할처리부(150)는 응답정보를 서로 다른 크기로 분할하되, 스레드가 분할처리하는 분할된 응답정보의 크기는 모두 동일할 수도 있다. 전술한 과정을 통해서 분할처리부(150)는 응답패킷을 하나로 통합한 응답정보를 프로세스의 수로 분할하며, 이 분할과정에서 분할처리부(150)는 응답정보를 서로 다른 크기로 분할한다. 이때, 분할처리부(150)가 응답정보를 서로 다른 크기로 분할하는 기준은 여러가지가 될 수 있다. 일 예로서, 분할처리부(150)는 프로세스가 사용하는 메모리의 크기를 기초로 하여 응답정보를 서로 다른 크기로 분할할 수 있다. 즉, 80MB의 메모리를 사용하는 프로세스가 처리하는 응답정보의 크기는 40MB의 메모리를 사용하는 프로세스가 처리하는 응답정보의 크기의 두 배가 되도록, 응답정보가 서로 다른 크기로 분할될 수 있다.
일단, 위와 같은 과정을 통해서 프로세스별로 분할된 응답정보가 할당되고 나면, 프로세스내에 생성된 복수의 스레드는 분할처리부(150)에 의해 분할된 응답정보를 재차 스레드의 수로 분할하여 처리한다. 일 예로서, 50MB의 응답정보를 처리하는 프로세스내에 5개의 스레드가 생성되어 있다면, 각 스레드는 10MB의 응답정보를 처리하게 된다.
도 6은 복수의 프로세스내에 생성된 복수의 스레드가 응답정보를 분할하여 처리하는 구조를 도식화한 도면이다.
도 6은 도 1에서 설명한 중복적인 핑거프린팅 프로세스로 인한 시스템의 성능병목현상을 방지하기 위해서 고안된 구조로서, 설명의 편의를 위해서, 도 1 및 도 3을 참조하여 설명하기로 한다.
먼저, 응답정보는 IP 주소를 스캔한 결과로서 생성되는 정보로서, 인터넷에서 데이터를 주고 받을 때에 데이터를 표현하는 방법 중 가장 일반적인 제이슨(JSON : JavaScript Object Notation)포맷이 될 수 있다. 응답정보는 분할처리부(150)에 의해서, 프로세스의 수만큼 분할되고, 분할된 응답정보는 서로 다른 크기를 가질 수 있다.
각 프로세스에 할당된 응답정보는 프로세스내에 생성된 복수의 스레드에 의해서 처리된다. 보다 구체적으로, 프로세스내의 스레드는 분할된 응답정보에 대해서 데이터 검색(search)의 부하를 감소시키기 위한 인덱싱(indexing) 작업 및 데이터 파싱(parsing)의 부하를 감소시키기 위한 포맷변환 작업을 수행한다. 복수의 프로세스에서의 복수의 스레드에 의한 인덱싱 작업 및 포맷변환 작업을 수행하기 위한 고속병렬구조(610)는 도 1에서 설명한 각 프로세스에서의 성능병목현상을 방지하기 위한 구조이다.
이하에서는, 고속병렬구조(610)에서의 프로세스 1의 반응형스캔 스레드 1(이하, "대상 스레드")의 처리과정에 대해서 기술하기로 한다. 분할처리부(150)는 응답정보를 프로세스의 수인 10개로 분할하여, 각 프로세스에 할당한다. 프로세스 1 내지 프로세스 10은 프로세스내에 복수의 스레드를 생성하고, 할당받은 응답정보가 복수의 스레드에 의해 처리되도록 한다.
일 예로서, 대상 스레드는 프로세스별로 분할된 응답정보를 재차 N으로 나눈 결과를 수신하여 처리한다. 대상 스레드는 응답정보로부터 패킷생성부(110)로부터 패킷을 수신하고 난 뒤에 응답패킷을 송신한 사물인터넷 장치의 IP주소를 특정하고, 그 사물인터넷 장치로부터 운영체제 정보(장치정보)를 추가적으로 요청하여 수신한다. 대상 스레드는 운영체제 정보가 미리 저장되어 있는 규칙 파일(Rule File)에 정의된 필드 순서와 동일한 순서로 조정하고, 이 과정에서 수집된 운영체제 정보의 필드 수를 운영체제 정보의 메타데이터(metadata)로서 운영체제 정보에 추가한다. 여기서, 규칙 파일은 후술하는 핑거프린팅 프로세스에서 이용되는 참조파일로서, 배경기술에서 설명한 바 있다.
대상 스레드는 최종적으로 수집된 반응형 스캔 결과를 파싱(parsing)하여, 큐(queue)에 송신하며, 큐에는 복수의 스레드로부터 송신된 반응형 스캔 결과가 순서에 맞춰서 누적된다.
대상 스레드가 운영체제 정보를 규칙 파일에 정의된 필드 순서와 동일한 순서로 조정하는 과정 및 수집된 필드의 수를 운영체제 정보의 메타데이터로 추가하는 과정은 핑거프린팅프로세스에서의 데이터 검색의 부하 감소를 위한 인덱싱 작업이며, 대상 스레드가 반응형 스캔 결과를 파싱하여 큐에 송신하는 과정은 핑거프린팅프로세서에서의 데이터 파싱 감소를 위한 포맷 변환 과정에 해당한다.
도 7은 응답정보가 고속병렬구조에서의 프로세스내에 생성된 스레드에서 처리되기 위해서 스레드에 할당되는 과정을 도식화한 도면이다.
도 7을 참조하면, IP 스캔결과파일 1(710), 프로세스 1(730), IP 스캔결과파일 N(750), 프로세스 N(770)을 포함하는 것을 알 수 있으며, 설명의 편의를 위해서, 도 3을 참조하여 설명하기로 한다.
먼저, IP 스캔결과파일 1(710)은 분할처리부(150)에 의해서 프로세스의 수에 따라서 분할된 응답정보 중 하나를 의미한다. 분할처리부(150)는 응답정보를 프로세스의 수인 N개로 분할하고, 분할된 응답정보의 크기는 각 프로세스가 차지하는 메모리에 따라서 서로 다를 수 있다. 도 7에서 IP 스캔결과파일 1(710)의 크기는 125MB이다.
프로세스 1(730)은 IP 스캔결과파일 1(710)을 처리한다. 프로세스 1(730)은 100개의 반응형 스캔스레드를 생성하고, 각 스레드가 IP 스캔결과파일 1(710)을 분할하여 처리하도록 제어한다. 보다 구체적으로, 프로세스 1(730)은 IP 스캔결과파일 1(710)을 누락 또는 중복없이 균등하게 처리할 수 있도록, IP 스캔결과파일 1(710)의 크기를 스레드의 수인 100으로 나누고, 그 크기만큼의 오프셋(offset)으로 파일에 접근하여 처리하도록 제어한다. 일 예로서, 프로세스 1(730)내에 생성된 반응형 스캔스레드 1은 IP 스캔결과파일 1(710)의 0MB에서 1.25MB까지의 구간을 할당받아서 처리하고, 프로세스 1(730)내에 생성된 반응형 스캔스레드 100은 IP 스캔결과파일 1(710)의 123.75MB부터 125MB까지의 구간을 할당받아서 처리한다.
IP 스캔결과파일 N(750)은 분할처리부(150)에 의해서 프로세스의 수에 따라서 분할된 응답정보 중 IP 스캔결과파일 1(710)과 서로 다른 하나를 의미한다. 도 7에서 IP 스캔결과파일 N(750)의 크기는 120MB이다.
프로세스 N(770)은 IP 스캔결과파일 N(750)을 처리한다. 프로세스 N(770)은 100개의 반응형 스캔스레드를 생성하고, 각 스레드가 IP 스캔결과파일 N(750)을 분할하여 처리하도록 제어한다. 일 예로서, 프로세스 N(770)내에 생성된 반응형 스캔스레드 2는 IP 스캔결과파일 N(750)의 1.2MB에서 2.4MB까지의 구간을 할당받아서 처리하고, 프로세스 N(770)내에 생성된 반응형 스캔스레드 100은 IP 스캔결과파일 N(750)의 123.8MB부터 125MB까지의 구간을 할당받아서 처리한다.
도 7에 도시된 것과 같이, 프로세스가 차지하는 메모리 등에 따라서 프로세스별로 처리하는 분할된 응답정보의 크기는 서로 다를 수 있고, 같은 프로세스내에서 생성되어 반응형 스캔 작업을 수행하는 반응형 스캔스레드가 처리하도록 할당받는 응답정보의 크기는 서로 동일하다. 프로세스내의 반응형 스캔스레드들은 응답정보로부터 IP 주소를 파악하고, 그 IP 주소에 해당하는 사물인터넷 장치와 추가적인 통신을 거쳐서 운영체제 정보를 수신하고, 핑거프린팅 프로세스를 일괄적으로 진행하기 위해서, 인덱싱 및 파싱 작업을 수행하게 된다.
이하에서는, 도 3에 대한 설명을 계속하기로 한다.
장치정보파악부(170)는 분할처리된 응답정보를 복수의 핑거프린팅 프로세스를 통해서 처리한 결과를 기초로 하여 응답패킷을 송신한 각 장치들의 장치정보를 파악한다.
먼저, 장치정보파악부(170)는 분할처리부(150)로부터 복수의 스레드를 통해서 분할처리된 응답정보를 수신한다. 여기서, 분할처리된 응답정보는 복수의 스레드에 의해서 핑거프린팅 프로세스를 진행하기 위한 인덱싱 및 파싱이 완료된 정보이며, 핑거프린팅 프로세스에서의 규칙 파일과의 매칭을 통해서 응답패킷을 보낸 사물인터넷 장치들의 장치정보가 파악될 수 있다.
핑거프린팅 프로세스에서는 분할처리된 응답정보를 미리 저장되어 있는 규칙 파일과 매칭되는 결과가 있는지 검색하는 방식으로 응답패킷을 보낸 사물인터넷 장치들의 장치정보가 파악된다. 도 1의 기존 구조에서의 핑거프린팅 프로세스에 따르면, 반응형 스캔 결과에서 데이터를 파싱하고, 그 파싱 결과를 하나의 문자열 변수로 만든 후, 규칙 파일의 모든 내용과 문자열 비교 연산을 하게 되어 성능의 병목현상이 발생하지만, 본 발명에 따르면, 도 6에서 설명한 고속 병렬 구조에 따라 복수의 스레드가 핑거프린팅 프로세스를 위한 사전 작업으로서, 데이터 검색의 부하 감소를 위한 인덱싱 작업 및 데이터 파싱의 부하 감소를 위한 포맷 변환을 수행함으로써, 핑거프린팅 프로세스가 진행될 때에 성능의 병목현상(입출력이 지연되면서 처리속도가 현저히 느려지는 현상)이 방지된다.
선택적 일 실시 예로서, 장치정보파악부(170)는 복수의 핑거프린팅 프로세스가 큐(queue)에 쌓인 분할처리된 응답정보를 병렬적으로 처리하고, 병렬적으로 처리된 응답정보를 통합하고, 통합된 응답정보를 기초로 각 장치들의 장치정보를 파악할 수도 있다.
도 8은 복수의 핑거프린팅 프로세스를 통해서 큐에 쌓인 정보가 병렬적으로 처리되는 과정을 도식화한 도면이다.
먼저, IP 스캔결과는 고속병렬구조에서의 10개의 프로세스, 총 10에 n을 곱한 수의 스레드에 의해서 분할처리되고, 분할처리된 결과는 큐 1(queue 1)에 누적된다. 장치정보파악부(170)는 복수의 핑거프린팅프로세스를 생성하여, 큐 1에 쌓인 정보들을 병렬적으로 처리하도록 제어한다.
도 8에서 복수의 핑거프린팅 프로세스가 병렬적으로 진행될 때, 큐 1에 반응형 스캔스레드가 처리한 정보들이 규칙 파일에 정의된 필드 순서와 동일한 순서에 따라 데이터가 수집되었고, 규칙 파일과의 매칭과정에서 검색의 범위를 줄이기 위해 수집 필드의 개수가 분할처리된 응답정보의 메타데이터로서 포함되어 있으므로, 핑거프린팅 프로세스가 진행되는 과정에서 성능의 병목현상이 발생하지 않는다.
반응형 스캔스레드가 처리한 정보는 파싱(parsing)이 완료되어 문자열 변수(string variable)로 표현되는데, 이러한 문자열 변수는 특정한 정보를 포함하고 있지만, 일반적으로 규칙 파일에 정의된 필드 순서와 동일한 순서가 아니다. 그리고, 반응형 스캔스레드가 처리한 정보에서 일부 필드에 대한 정보가 생략되어 있다면, 핑거프린팅 프로세스에서 그 필드에 대해서는 규칙 파일과 일일이 매칭을 하지 않아도 된다.
간단한 숫자로 예를 들면, 규칙 파일의 정보가 12345의 필드 순서에 따라 기록되어 있고, 반응형 스캔스레드가 처리하기 전의 어떤 장치의 장치정보가 531이라면, 반응형 스캔스레드는 531을 규칙 파일의 필드 순서에 맞춰서 135로 바꾸고, 수집된 필드 수는 5개 중 3개라는 정보를 추가로 산출하게 된다. 이후, 장치정보파악부(170)는 병렬적으로 처리되는 핑거프린팅 프로세스 중 하나가 규칙 파일과 반응형 스캔스레드가 처리한 정보를 매칭하는 방식으로 장치의 장치정보를 파악할 수 있으며, 이 과정은 기존의 핑거프린팅 프로세스와 달리, 필드의 순서 및 개수에 대한 정보가 이미 존재함에 따라, 성능의 병목현상없이 빠르게 처리될 수 있다.
복수의 핑거프린팅 프로세스가 병렬적으로 처리되고 나면, 장치정보파악부(170)는 각 프로세스가 처리한 결과를 큐 2(queue 2)에 보내도록 하고, 장치정보파악부(170)는 새로운 프로세스를 통해서 큐 2에 쌓인 순서를 기초로 하여 병렬적으로 처리된 응답정보를 하나로 통합한다. 위와 같은 과정으로 통합된 응답정보를 통해 장치정보파악부(170)는 패킷생성부(110)가 패킷을 보냈을 때, 응답패킷을 송신하고, 반응형 스캔스레드의 장치정보의 송신요청에 따라서 장치정보를 송신한 장치들의 장치정보를 일괄적으로 파악할 수 있으며, 파악된 장치정보를 각 장치에 대한 JSON 형태의 결과파일을 생성할 수도 있다.
본 발명에서, 복수의 핑거프린팅 프로세스를 전후로 하여 큐 1 및 큐 2를 통해 데이터를 처리하는 것은, 복수의 프로세스가 메모리를 공유하면서 빠른 속도로 입력되는 데이터를 처리하기 위함이다. 복수의 프로세스가 여러 개의 파일에 쓰기 작업을 할 경우, 빈번한 디스크 입출력(I/O)으로 인한 성능 저하가 발생하므로, 도 8에서 도시된 것 같은 메모리 큐(memory queue)로 처리하여 성능 저하 요소를 제거하는 것이다.
도 9는 본 발명에 따라 인터넷을 이용하여 장치정보를 수집하는 방법의 일 예의 흐름도를 도시한 도면이다.
도 9에 따른 방법은 도 3에 따른 시스템에 의해 구현될 수 있으므로, 이하에서는, 도 3에서 설명한 내용과 중복된 설명은 생략하기로 하며, 설명의 편의를 위해서, 도 3을 참조하여 설명하기로 한다. 본 발명에 따른 시스템은 패킷생성부, 응답정보산출부, 분할처리부 및 장치정보파악부를 포함한다.
먼저, 패킷생성부는 복수의 IP 주소를 생성하고 생성된 IP 주소로 패킷을 송신한다(S910).
단계 S910의 선택적 일 실시 예로서, 패킷생성부는 순열(circulation) 및 미리 설정된 소수(prime number)를 변수로 하는 수학식을 통해서 IP 주소를 생성할 수도 있다. 본 선택적 실시 예에서 이용될 수 있는 수학식은 수학식 1에서 이미 설명한 바 있다.
이어서, 응답정보산출부는 패킷을 송신한 IP 주소의 장치로부터 응답패킷을 수신하고, IP 주소별로 수신된 응답패킷을 통합한 응답정보를 산출한다(S930).
단계 S930의 선택적 일 실시 예로서, 응답정보산출부는 패킷을 송신한 IP 주소의 장치로부터 수신한 응답패킷을 커널 영역을 통과시켜서 사용자단에서 처리하는 방식으로 응답정보를 산출할 수도 있다.
단계 S930의 다른 선택적 일 실시 예로서, 응답정보산출부는 데이터 플레인 가속화(DPA)를 통해서 응답정보를 산출할 수도 있다.
단계 S930의 또 다른 선택적 일 실시 예로서, 패킷생성부가 IP 주소의 장치에게 송신한 패킷은 전송제어프로토콜의 동기화 요청패킷(SYN 패킷)이고, 응답정보산출부는 동기화 요청패킷에 대한 응답패킷으로서, 동기화 승인패킷(SYN-ACK 패킷)을 수신한 다음, 승인패킷(ACK)패킷을 재차 송신하지 않고, 리셋(RST)플래그를 통해서 해당 IP 주소의 장치와의 연결을 종료하여, 최소한의 패킷 교환으로 응답여부를 검증할 수도 있다.
분할처리부는 응답패킷을 통합한 응답정보를 미리 설정된 프로세스의 수에 따라서 분할하고, 분할된 응답정보를 각 프로세스에 포함된 복수의 스레드를 통해서 분할처리하도록 제어한다(S950).
먼저, 응답패킷을 통합한 응답정보는, 패킷생성부에서 생성한 수많은 IP 주소 중에서, 패킷생성부로부터 패킷을 수신하고 난 후, 응답패킷까지 송신한 장치의 IP 주소에 대한 정보를 포함한다. 분할처리부는 응답패킷을 통합한 응답정보를 미리 설정된 프로세스의 수에 따라서 분할하고, 분할된 응답정보가 프로세스 내에서 다시 한번 스레드의 수로 균등하게 분할되어 처리되도록 제어한다.
이 과정에서, 각 스레드는 응답정보에 포함된 IP 주소스캐닝 결과를 통해서, IP 주소를 파악한 후, 그 IP 주소에 해당하는 장치로부터 장치정보를 수신한다. 스레드는 장치정보를 수신하고, 핑거프린팅프로세스에서 규칙 파일과의 빠른 매칭을 통해서 최종적으로 모든 장치에 대한 장치정보가 신속하게 파악될 수 있도록, 규칙 파일의 필드 순서와 동일하게 장치정보를 수집하고, 수집 필드의 개수를 각 장치정보의 메타데이터로서 추가로 기록한다.
단계 S950의 선택적 일 실시 예로서, 분할처리부가 응답패킷을 통합한 응답정보를 프로세스의 수에 따라 분할시킬 때, 분할된 응답정보의 크기가 서로 다르고, 스레드가 분할처리하는 분할된 응답정보의 크기는 모두 동일할 수도 있다. 본 선택적 실시 예는, 멀티프로세스와 멀티스레드의 기능적인 특성에 기인한다. 프로세스가 복수 존재할 때에는 각 프로세스는 독립적이고 별개의 메모리를 차지하지만, 프로세스 내에 복수의 스레드가 생성된 경우, 각 스레드는 프로세스내의 메모리를 공유하여 사용할 수 있어서 전환속도가 더 빠르기 때문이다.
분할처리부가 프로세스의 수에 따라 분할시킨 응답정보를 제1분할응답정보라고 호칭할 수 있고, 프로세스의 수에 따라 분할된 응답정보를 스레드의 수에 따라 균등하게 분할한 응답정보를 제2분할응답정보라고 호칭할 수 있다.
장치정보파악부는 분할처리부의 각 스레드가 분할처리한 응답정보를 복수의 핑거프린팅 프로세스를 통해서 처리하고, 그 처리한 결과를 기초로 하여 응답패킷을 송신한 각 장치들의 장치정보를 파악한다(S970).
핑거프린팅 프로세스는 IP 스캐닝 결과 및 반응형 스캔 스레드의 반응형 스캐닝 처리결과를 모두 수신하여, 해당 IP 주소의 장치정보(운영체제정보)를 파악하기 위한 과정이다. 빠른 데이터 처리를 위해서, 장치정보파악부는 복수의 핑거프린팅 프로세스를 생성하여 데이터를 처리하도록 하고, 핑거프린팅 프로세스가 처리한 결과를 기초로 하여 각 장치들의 장치정보를 파악한다.
단계 S970의 선택적 일 실시 예로서, 장치정보파악부는 복수의 핑거프린팅 프로세스가 큐에 쌓인 응답정보를 병렬적으로 처리하고, 병렬적으로 처리된 응답정보를 통합하여, 통합된 응답정보를 기초로 각 장치들의 장치정보를 파악할 수도 있다. 본 선택적 실시 예에서, 장치정보파악부는 각 장치들의 장치정보를 JSON(JavaScript Object Notation)형태의 결과파일을 생성할 수 있다는 것을 도 8을 통해서 설명한 바 있다.
인터넷에 연결된 방대한 양의 사물인터넷 서비스 단말의 경우, CPU, 메모리 등의 성능상의 제한으로서 소프트웨어의 업데이트 및 관리에 한계가 있고, 제한적인 연산능력으로 인해서 보안 위협에 취약하다는 문제점이 있다. 사물인터넷 서비스 단말의 보안의 취약성을 발견하여 즉각적인 보안패치를 하기 위해서는, 인터넷에 연결되어 있는 단말의 정보가 빠른 주기로 수집, 관리되어야 한다. 본 발명에 따르면, 인터넷에 연결되어 있는 사물인터넷 장치들의 장치정보를 수많은 경량 스레드를 이용하여 수집처리하고, 별도의 병렬적인 프로세스를 통해서, 수집된 장치정보를 파악할 수 있게 되어, 인터넷상의 수많은 IoT 서비스 단말의 운영체제의 최신 업데이트 상태를 유지하도록 하는데에 도움을 주는 서비스를 제공할 수 있다.
이상 설명된 본 발명에 따른 실시 예는 컴퓨터상에서 다양한 구성요소를 통하여 실행될 수 있는 컴퓨터 프로그램의 형태로 구현될 수 있으며, 이와 같은 컴퓨터 프로그램은 컴퓨터로 판독 가능한 매체에 기록될 수 있다. 이때, 매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치를 포함할 수 있다.
한편, 상기 컴퓨터 프로그램은 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 프로그램의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함될 수 있다.
본 발명에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
본 발명의 명세서(특히 특허청구범위에서)에서 “상기”의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 본 발명에서 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 적용한 발명을 포함하는 것으로서(이에 반하는 기재가 없다면), 발명의 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 본 발명에 따른 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 따라 본 발명이 한정되는 것은 아니다. 본 발명에서 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 본 발명을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 본 발명의 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.

Claims (15)

  1. 패킷생성부가 복수의 IP(internet protocol)주소를 순열(circulation) 및 미리 설정된 소수(prime number)를 변수로 하는 수학식을 통해서 생성하고, 상기 생성된 복수의 IP주소로 패킷을 송신하는 패킷생성단계;
    응답정보산출부가 상기 송신된 패킷에 대응되는 응답패킷을 수신하고, 상기 IP주소별로 수신된 응답패킷을 통합한 응답정보를 산출하는 응답정보산출단계;
    분할처리부가 상기 산출된 응답정보를 미리 설정된 프로세스(process)의 수에 따라 분할하고, 상기 분할된 응답정보를 각 프로세스에 포함된 복수의 스레드(thread)를 통해 분할처리하는 분할처리단계; 및
    장치정보파악부가 상기 분할처리된 응답정보를 복수의 핑거프린팅 프로세스를 통해서 처리한 결과를 기초로 하여 상기 응답패킷을 송신한 각 장치들의 장치정보를 파악하는 장치정보파악단계를 포함하고,
    상기 패킷생성단계는,
    패킷생성부가 실행시킨 프로세스 내에 정의되어 있는 주소생성스레드(address generating thread)에 의해 IPv4에 따라 생성될 수 있는 IP주소 중 유효한 IP주소의 범위가 파악되면, 상기 주소생성스레드가 상기 파악된 범위의 유효한 주소 중에서 미리 설정된 개수 내로 IP 주소를 생성하고,
    상기 미리 설정된 소수는,
    IPv4에서 정의될 수 있는 전체 IP주소의 수와 가장 가까운 소수이고,
    상기 송신된 패킷은,
    상기 패킷생성부가 변경되지 않는 이더넷 헤더(ethernet header)의 체크섬(check sum)을 제거한 패킷이고,
    상기 분할처리단계는,
    상기 복수의 스레드가 상기 분할된 응답정보에 대해서 데이터 검색의 부하를 감소시키기 위한 인덱싱(indexing) 작업 및 데이터 파싱(parsing)의 부하를 감소시키기 위한 포맷변환 작업을 수행하는 방식을 통해 상기 분할된 응답정보를 처리하고,
    상기 생성된 복수의 IP주소는, 다음과 같은 수학식을 통해 결정되고,
    Figure 112018032740346-pat00026

    상기 g는 상기 패킷생성부에 의해 결정된 상기 미리 설정된 소수보다 더 작은 수이고,
    상기 p는 상기 미리 설정된 소수이고,
    상기
    Figure 112018032740346-pat00027
    Figure 112018032740346-pat00028
    는 각각 i번째 및 i+1번째 10진수로서, 상기 IP주소는 상기 i+1번째 10진수를 상기 IPv4에 따라 변환한 주소인 것을 특징으로 하는 인터넷을 이용하여 장치정보를 수집하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 응답정보산출단계는,
    상기 수신된 응답패킷을 커널 영역을 통과시켜서 사용자단에서 처리하는 방식으로 상기 응답정보를 산출하는 것을 특징으로 하는 인터넷을 이용하여 장치정보를 수집하는 방법.
  4. 제1항에 있어서,
    상기 응답정보산출단계는
    데이터 플레인 가속화(DPA: Data Plane Acceleration)를 통해 상기 응답정보를 산출하는 것을 특징으로 하는 인터넷을 이용하여 장치정보를 수집하는 방법.
  5. 제1항에 있어서,
    상기 분할처리단계는,
    상기 분할된 응답정보의 크기가 서로 다르고,
    상기 스레드가 분할처리하는 분할된 응답정보의 크기는 모두 동일한 것을 특징으로 하는 인터넷을 이용하여 장치정보를 수집하는 방법.
  6. 제1항에 있어서,
    상기 장치정보파악단계는,
    복수의 핑거프린팅 프로세스가 큐(queue)에 쌓인 상기 분할처리된 응답정보를 병렬적으로 처리하고, 상기 병렬적으로 처리된 응답정보를 통합하고, 상기 통합된 응답정보를 기초로 각 장치들의 장치정보를 파악하는 것을 특징으로 하는 인터넷을 이용하여 장치정보를 수집하는 방법.
  7. 제1항에 있어서,
    상기 송신된 패킷은 전송제어프로토콜(Transmission Control Protocol)의 SYN 패킷이고,
    상기 응답정보산출단계는,
    상기 SYN 패킷에 대한 응답패킷으로서 SYN-ACK 패킷을 수신하고, RST 플래그를 통해 상기 IP주소에 해당하는 장치와의 연결을 종료하는 것을 특징으로 하는 인터넷을 이용하여 장치정보를 수집하는 방법.
  8. 제1항, 제3항 내지 제7항 중 어느 한 항에 따른 방법을 실행시키기 위한 프로그램을 기록하고 있는 컴퓨터 판독가능한 기록매체.
  9. 순열(circulation) 및 미리 설정된 소수(prime number)를 변수로 하는 수학식을 통해서 복수의 IP(internet protocol)주소를 생성하고, 상기 생성된 복수의 IP주소로 패킷을 송신하는 패킷생성부;
    상기 송신된 패킷에 대응되는 응답패킷을 수신하고, 상기 IP주소별로 수신된 응답패킷을 통합한 응답정보를 산출하는 응답정보산출부;
    상기 산출된 응답정보를 미리 설정된 프로세스(process)의 수에 따라 분할하고, 상기 분할된 응답정보를 각 프로세스에 포함된 복수의 스레드(thread)를 통해 분할처리하는 분할처리부; 및
    상기 분할처리된 응답정보를 복수의 핑거프린팅 프로세스를 통해서 처리한 결과를 기초로 하여 상기 응답패킷을 송신한 각 장치들의 장치정보를 파악하는 장치정보파악부를 포함하고,
    상기 패킷생성부가 실행시킨 프로세스 내에 정의되어 있는 주소생성스레드(address generating thread)에 의해 IPv4에 따라 생성될 수 있는 IP주소 중 유효한 IP주소의 범위가 파악되면, 상기 주소생성스레드가 상기 파악된 범위의 유효한 주소 중에서 미리 설정된 개수 내로 IP 주소를 생성하고,
    상기 미리 설정된 소수는,
    IPv4에서 정의될 수 있는 전체 IP주소의 수와 가장 가까운 소수이고,
    상기 송신된 패킷은,
    상기 패킷생성부가 변경되지 않는 이더넷 헤더(ethernet header)의 체크섬(check sum)을 제거한 패킷이고,
    상기 분할처리부는,
    상기 복수의 스레드가 상기 분할된 응답정보에 대해서 데이터 검색의 부하를 감소시키기 위한 인덱싱(indexing) 작업 및 데이터 파싱(parsing)의 부하를 감소시키기 위한 포맷변환 작업을 수행하는 방식을 통해 상기 분할된 응답정보를 처리하고,
    상기 생성된 복수의 IP주소는, 다음과 같은 수학식을 통해 결정되고,
    Figure 112018032740346-pat00029

    상기 g는 상기 패킷생성부에 의해 결정된 상기 미리 설정된 소수보다 더 작은 수이고,
    상기 p는 상기 미리 설정된 소수이고,
    상기
    Figure 112018032740346-pat00030
    Figure 112018032740346-pat00031
    는 각각 i번째 및 i+1번째 10진수로서, 상기 IP주소는 상기 i+1번째 10진수를 상기 IPv4에 따라 변환한 주소인 것을 특징으로 하는 인터넷을 이용하여 장치정보를 수집하는 시스템.
  10. 삭제
  11. 제9항에 있어서,
    상기 응답정보산출부는,
    상기 수신된 응답패킷을 커널 영역을 통과시켜서 사용자단에서 처리하는 방식으로 상기 응답정보를 산출하는 것을 특징으로 하는 인터넷을 이용하여 장치정보를 수집하는 시스템.
  12. 제9항에 있어서,
    상기 응답정보산출부는
    데이터 플레인 가속화(DPA: Data Plane Acceleration)를 통해 상기 응답정보를 산출하는 것을 특징으로 하는 인터넷을 이용하여 장치정보를 수집하는 시스템.
  13. 제9항에 있어서,
    상기 분할처리부는,
    상기 분할된 응답정보의 크기가 서로 다르고,
    상기 스레드가 분할처리하는 분할된 응답정보의 크기는 모두 동일한 것을 특징으로 하는 인터넷을 이용하여 장치정보를 수집하는 시스템.
  14. 제9항에 있어서,
    상기 장치정보파악부는,
    복수의 핑거프린팅 프로세스가 큐(queue)에 쌓인 상기 분할처리된 응답정보를 병렬적으로 처리하고, 상기 병렬적으로 처리된 응답정보를 통합하고, 상기 통합된 응답정보를 기초로 각 장치들의 장치정보를 파악하는 것을 특징으로 하는 인터넷을 이용하여 장치정보를 수집하는 시스템.
  15. 제9항에 있어서,
    상기 송신된 패킷은 전송제어프로토콜(TCP: Transmission Control Protocol)의 SYN 패킷이고,
    상기 응답정보산출부는,
    상기 SYN 패킷에 대한 응답패킷인 SYN-ACK 패킷을 수신하고, RST 플래그를 통해 상기 IP주소에 해당하는 장치와의 연결을 종료하는 것을 특징으로 하는 인터넷을 이용하여 장치정보를 수집하는 시스템.
KR1020170148318A 2017-11-08 2017-11-08 인터넷을 이용하여 장치정보를 수집하는 시스템 및 그 방법 KR101880705B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170148318A KR101880705B1 (ko) 2017-11-08 2017-11-08 인터넷을 이용하여 장치정보를 수집하는 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170148318A KR101880705B1 (ko) 2017-11-08 2017-11-08 인터넷을 이용하여 장치정보를 수집하는 시스템 및 그 방법

Publications (1)

Publication Number Publication Date
KR101880705B1 true KR101880705B1 (ko) 2018-07-20

Family

ID=63103382

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170148318A KR101880705B1 (ko) 2017-11-08 2017-11-08 인터넷을 이용하여 장치정보를 수집하는 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR101880705B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102143593B1 (ko) 2019-10-18 2020-08-11 주식회사 모비젠 오토인코더 기반 IoT기기의 이상징후 탐지 방법 및 그 시스템
KR102370661B1 (ko) 2021-07-02 2022-03-07 주식회사 모비젠 각 세대에 배치된 IoT기기들의 이상트래픽 탐지 방법 및 그 시스템
CN116800618A (zh) * 2023-08-24 2023-09-22 明阳时创(北京)科技有限公司 一种网络ip画像构建方法、***、介质及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101374721B1 (ko) * 2012-12-27 2014-03-19 전자부품연구원 데이터 수집 장치 및 방법
US20140078913A1 (en) * 2012-09-20 2014-03-20 Hewlett-Packard Development Company, L.P. Data packet stream fingerprint
KR101767454B1 (ko) 2015-11-12 2017-08-14 주식회사 엔젠소프트 다양한 웹 서비스 환경에서 사용자의 행위 패턴 분석을 통한 이상행위 탐지 방법과 그를 위한 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140078913A1 (en) * 2012-09-20 2014-03-20 Hewlett-Packard Development Company, L.P. Data packet stream fingerprint
KR101374721B1 (ko) * 2012-12-27 2014-03-19 전자부품연구원 데이터 수집 장치 및 방법
KR101767454B1 (ko) 2015-11-12 2017-08-14 주식회사 엔젠소프트 다양한 웹 서비스 환경에서 사용자의 행위 패턴 분석을 통한 이상행위 탐지 방법과 그를 위한 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Electronics and Telecommunications Trends. Vol. 30, No. 2, April 2015, pp. 87-94, 최강일 선임연구원 외 1인 저술(14-000-05-001, 스마트 네트워킹 핵심 기술개발).

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102143593B1 (ko) 2019-10-18 2020-08-11 주식회사 모비젠 오토인코더 기반 IoT기기의 이상징후 탐지 방법 및 그 시스템
KR102370661B1 (ko) 2021-07-02 2022-03-07 주식회사 모비젠 각 세대에 배치된 IoT기기들의 이상트래픽 탐지 방법 및 그 시스템
CN116800618A (zh) * 2023-08-24 2023-09-22 明阳时创(北京)科技有限公司 一种网络ip画像构建方法、***、介质及设备
CN116800618B (zh) * 2023-08-24 2023-10-20 明阳时创(北京)科技有限公司 一种网络ip画像构建方法、***、介质及设备

Similar Documents

Publication Publication Date Title
US9906630B2 (en) Processing data packets in performance enhancing proxy (PEP) environment
US8681819B2 (en) Programmable multifield parser packet
US8009672B2 (en) Apparatus and method of splitting a data stream over multiple transport control protocol/internet protocol (TCP/IP) connections
WO2023005773A1 (zh) 基于远程直接数据存储的报文转发方法、装置、网卡及设备
US9473380B1 (en) Automatic parsing of binary-based application protocols using network traffic
US10630758B2 (en) Method and system for fulfilling server push directives on an edge proxy
US20170054640A1 (en) Device and method for establishing connection in load-balancing system
KR101880705B1 (ko) 인터넷을 이용하여 장치정보를 수집하는 시스템 및 그 방법
US20060112422A1 (en) Data transfer using hyper-text transfer protocol (HTTP) query strings
CN110581812A (zh) 一种数据报文的处理方法和装置
CN108833450B (zh) 一种实现服务器防攻击方法及装置
US10178033B2 (en) System and method for efficient traffic shaping and quota enforcement in a cluster environment
WO2016091402A1 (en) Fragmented packet processing resource determination
EP2916516A1 (en) Packet processing method and apparatus
CN108011850B (zh) 数据包的重组方法及装置、计算机设备及可读介质
CN110545230B (zh) 用于转发vxlan报文的方法和装置
CN113810337A (zh) 用于网络报文去重的方法、装置、以及存储介质
CN115499230A (zh) 网络攻击检测方法和装置、设备及存储介质
CN106209680B (zh) 信息处理装置以及信息处理方法
CN108595574B (zh) 数据库集群的连接方法、装置、设备及存储介质
Danelutto et al. Deep packet inspection on commodity hardware using fastflow
CN103746768A (zh) 一种数据包的识别方法及设备
EP3408989B1 (en) Detecting malware on spdy connections
US20210306357A1 (en) Sorting device, communication system, and sorting method
CN115550470A (zh) 工控网络数据包解析方法、装置、电子设备与存储介质

Legal Events

Date Code Title Description
N231 Notification of change of applicant
GRNT Written decision to grant