본문 바로가기

Heap 힙이란, 특정한 규칙을 만족하도록 구성된 이진 트리이다. 힙의 대소관계 규칙 부모 노드가 항상 자식 노드보다 크거나 같다 (자식 노드 index = 부모 노드 index / 2 (+1)) 즉, 가장 큰 원소는 항상 힙의 루트에 있다. 힙의 모양 규칙 마지막 레벨을 제외한 모든 레벨에 노드가 꽉 차 있어야 한다 마지막 레벨에 노드가 있을 때는 항상 가장 왼쪽부터 순서대로 채워져 있어야 한다 이러한 특성 덕분에 힙은 최대 원소를 빠르게 찾을 수 있다 6개의 정수를 저장하는 힙의 예 16 삽입 삭제 * 대소관계 규칙을 반대로 적용하면 최소 원소를 빠르게 찾을 수 있다 연산을 편하게 하기 위해서 0번에는 최소 혹은 최대값을 넣어주고 1번부터 값을 채운다 public abstract class Heap { fin..
순열 (java) - ex) 0 ~ 9로 구성된 정수 list를 가지고, 만들 수 있는 모든 숫자 구하기 (list에 중복된 숫자가 있으므로 결과에도 중복이 발생할 수 있다) public class Main { public static void main(String[] arg) { List number = Arrays.asList(1, 2, 3, 3, 2, 1); for (int i = 1; i
보안기사 - 서비스 거부 공격(DoS, DDoS) 서비스 거부 (DoS: Denial of Service) 공격 Target 시스템이 정상적인 서비스를 할 수 없도록 만드는 공격 = 가용성을 떨어트리는 것이 목적 파괴 공격 : 디스크, 데이터, 시스템 파괴 시스템 자원 소진 공격 : CPU, 메모리, 디스크 등의 자원에 과도한 부하 발생 네트워크 자원 소진 공격 : 과도한 트래픽으로 네트워크 대역폭을 소진 Ping of Death Attack ICMP 패킷(ping)을 아주 크게 만들어 전송하면 MTU에 의해 다수의 IP 단편화(fragment)가 발생 (이더넷의 경우 MTU가 1500 bytes이므로, IP헤더를 제외하면 ICMP 패킷은 최대 1480bytes) => 수신측에서는 재조합 부하, 재조합 버퍼 오버플로우가 발생 ~ 정상적인 서비스를 하지 ..
보안기사 - Port Scanning 포트 스캐닝 (Port Scanning) 어떤 포트가 열려있는지 확인하는 것으로 침입전 취약점을 분석하기 위한 사전 작업 중 하나 대상 서버의 동작 여부, 제공하는 서비스 등을 확인할 수 있으며, nmap 툴을 많이 사용 nmap nmap [scan type] [options] Scan Type -sS : TCP SYN(Half-Open) Scan -sT : TCP Connect(Open) Scan -sU : UDP Scan -sF : TCP FIN Scan (FIN 플래그 패킷을 이용한 스캔) -sX : TCP Xmas Scan (FIN, PSH, URG 플래그 조합 패킷을 이용한 스캔) -sN : TCP NULL Scan (Null 패킷을 이용한 스캔) -sA : TCP ACK Scan -sP : P..
보안기사 - 네트워크 관리 명령어 ping 명령 end 노드 간에 네트워크 상태를 관리하기 위한 명령어 target 시스템에 대한 접근성, 해당 구간에 대한 네트워크 속도 및 품질(손실률)을 검사 ICMP Echo Request(type 8), ICMP Echo Reply(type 0) 메시지 이용 윈도우 -n 패킷 전송 횟수 설정 (default 4) -l 패킷 크기 설정 (default 32bytes) 리눅스 -c 패킷 전송 횟수 (default 무한) -s 패킷 크기 설정 (default 56bytes) traceroute/tracert 명령 end 노드 사이에 있는 여러 중계 노드(L3장비/라우터), 각 구간에 대한 네트워크 상태를 관리하기 위한 명령어 네트워크의 라우팅 문제점을 찾아내는 목적으로 많이 사용 최종 목적지 노드에 도..
보안기사 - TCP, UDP TCP Connection Oriented Protocol (연결 지향 프로토콜) 물리적으로 전용회선이 연결되어 있는 것처럼 가상의 (논리적인) 연결통로를 설정해서 통신하는 방식 = 가상회선방식(Virtual Circuit) 논리적 연결통로를 통해 데이터를 주고받음으로써 데이터의 전송순서를 보장 = 순서제어(Sequence Control) Stream 기반의 전송방식 (데이터를 정해진 크기로 전송하는 것이 아니라 임의의 크기로 나누어 연속해서 전송) Reliabe Protocol (신뢰할 수 있는 프로토콜) Flow Control (흐름 제어) 상대방이 받을 수 있을 만큼만 데이터를 효율적으로 전송 Sliding window 제어 방식 사용 (상대방이 수신 가능한 크기(window size) 내에서 데이..
보안기사 - IPv4, IPv6, ICMP IP (IPv4) 비연결형(Connectionless) 프로토콜. ~ 패킷 전송 순서 보장 X 비신뢰적(Unreliable) 프로토콜. ~ 신뢰성 있는 통신 보장 X (신뢰성 최초 출발지에 "ICMP Destination Unreachable") => 목적지에 도달할 수 없는 패킷이 무한히 생존하여 네트워크 대역만 차지하는 상태 방지하기 위함 OS 별로 부여하는 기본 TTL 값이 달라 해당 필드를 'OS 핑거프린트' 목적으로 사용 가능 Protocol 상위 프로토콜 식별 위함 -> Multiplexing, Demultiplexing ex - ICMP(1), TCP(6), UDP(17) Header checksum 데이터부 제외 헤더 부분의 오류 검사값 Source IP address 출발지..
보안기사 - TCP/IP 프로토콜, ARP/RARP 프로토콜 TCP/IP 프로토콜 * MTU(Maximum Transmission Unit) - L2에서 한번에 전송할 수 있는 데이터 크기 제한 Application Layer (응용 계층) 네트워크 서버/클라이언트 프로그램을 담당 사용자와의 인터페이스를 담당 주요 프로토콜 HTTP(80/tcp) : Hyper-Text Transfer Protocol FTP(20/21/tcp) : File Transfer Protocol, data port(20), control port(21) SSH(22/tcp) : Secure Shell, 암호화된 원격 터미널 접속 프로토콜 SFTP(22/tcp) : SSH File Tranfer Protocol TELNET(23/tcp) : TELe NETwork, 암호화X 원격 터미널 접..