● SW 개발 보안
개발 과정에서 지켜야할 보안 활동
- SW 개발 보안 생명주기
- 요구사항 명세 -> 설계 -> 구현 -> 테스트 ->유지보수
● SW 개발 보안 3대 요소
- 기밀성(Confidentiality) : 인가된 사용자에게만 접근이 허용
- 무결성(Integrity) : 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있음(결점이 있으면 안됨)
- 가용성(Availability) : 인가받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용할 수 있음
● DoS 공격
시스템을 악의적으로 공격해서 해당 시스템의 자원을 부족하게 만들어, 원래 의도된 용도로 사용하지 못하게 하는 공격
● DoS 공격 종류
(플러딩 : 패킷을 다른 노드로 전송하는 것)
- SYN 플러딩
- 서버의 동시 가용 사용자수를 SYN 패킷만 보내 점유하여, 다른 사용자가 서버를 사용 불가능하게 하는 공격
- UDP 플러딩
- 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송하여, 응답 메시지를 생성하게 하여 지속하게 자원을 고갈시키는 공격
- 스퍼프/스머핑
- 출발지 주소를 대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo패킷을 직접 브로드캐스팅하여 마비시키는 공격
- 죽음의핑(PoD)
- ICMP 패킷을 정상적인 크기보다 아주 크게 만들어 전송하여 정상적인 서비스를 못하도록 하는 공격
- 랜드어택
- 출발지 IP와 목적지 IP를 갖게하여 가용성을 침해하는 공격
- 티어드롭
- IP패킷의 재조합 과정에서 잘못된 정보로 인해 수신 시스템이 문제를 발생하도록 하는 공격
- 봉크/보잉크
- 프로토콜의 오류 제어를 이용한 공격
● DDoS
여러 대의 공격자를 분산 배치하여 동시에 동작하게함으로써 특정 사이트를 공격하는 기법
● DDoS 공격 도구
- Trinoo
- 많은 소스로부터 통합된 UDP flood 서비스 거부 공격을 유발하는 데 사용되는 도구
- Tribe Flood Network
- 많은 소스에서 하나 혹은 여러개의 목표 시스템에 대해 서비스 거부 공격을 수행할 수 있는 도구
- Stacheldraht
- 분산 서비스 거부 에이전트 역할을 하는 리눅스 및 Solaris 시스템용 멀웨어 도구
● DoS와 DDoS의 차이
1. DoS는 직접 공격, DDoS는 공격하도록 지시.
2. DoS는 한 사람이 공격, DDoS는 여러 사람(감염 호스트)이 공격
● DRDoS
공격자는 출발지 IP를 공격대상 IP로 위조하여, 다수의 반사 서버로 요청 정보를 전송, 공격 대상자는 반사 서버로부터 다량의 응답을 받아서 서비스 거부(DoS)가 되는 공격
● 세션 하이재킹
TCP의 세션 관리 취약점을 이용한 공격, 케빈 미트닉이 사용
● 애플리케이션 공격기법
- HTTP GET 플러딩
- 과도한 Get 메시지를 이용하여 웹 서버의 과부하를 유발시키는 공격
- Slowloris
- HTTP Get 메서드를 사용하여 헤더의 최종 끝을 알리는 개행 문자열을 전송하지 않고, 대상 웹 서버와 연결상태를 장시간 지속시키고, 연결자원을 모두 소진시키는 서비스 거부 공격
- RUDY
- 요청 헤더의 Content-Length를 비정상으로 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결 상태를 유지시키는 공격
- Slow HTTP Read DoS
- 다수 HTTP 패킷을 지속적으로 전송하여 웹서버의 연결상태가 장시간 지속, 연결자원을 소진시키는 서비스 거부 공격
- Hulk DoS
- 공격자가 웹 페이지 주소를 지속적으로 변경하면서 다량으로 Get 요청을 발생시키는 서비스 거부 공격
- Hash DoS
- 많은 수의 파라미터를 POST방식으로 웹서버로 전달하여 다수의 해시 충돌을 발생시켜서 자원을 소모시키는 서비스 거부 공격
● 네트워크 공격
(스푸핑 : 다른 사람인 것처럼 위장하여 추적을 피하는 해킹 방법)
- 스니핑
- 공격대상의 데이터만 몰래 들여다보는 수동적 공격 기법
- 네트워크 스캐너, 스니퍼
- 네트워크 하드웨어, 소프트웨어 구성의 취약점을 파악을 위해 공격자가 취약점을 탐색하는 공격 도구
- 패스워드 크래킹
- 사전 크래킹 : ID와 PW가 될수 있는 단어를 파일로 만들어 대입하여 크랙하는 공격 기법
- 무차별 크래킹 : 무작위로 패스워드 자리에 대입하여 패스워드를 알아내는 공격 기법
- 패스워드 하이브리드 공격
- 레인보우 테이블 공격
- IP 스푸핑
- 침입자가 인증된 컴퓨팅 시스템인것 처럼 속여서 인증된 호스트의 IP주소로 위조하여 공격하는 기법
- ARP 스푸핑
- 공격자가 특정 호스트의 MAC 주소를 자신의 MAX 주소로 위조한 ARP Reply를 만들어 희생자에게 지속적으로 전송
- ICMP Redirect 공격
- 스니핑 시스템을 네트워크에 존재하는 또다른 라우터라고 알림으로써, 패킷의 흐름을 바꾸는 공격기법
- 트로이 목마
● 버퍼 플로우 공격
메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 프로세스의 흐름을 변경시켜서 악성 코드를 실행하는 공격기법
● 백도어
허가받지 않고 시스템에 접속하는 권리, 정상적인 인증절차를 우회하는 기법
● 보안 관련 용어
- 스피어 피싱
- 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도하여 사용자의 개인정보를 탈취하는 공격
- 스미싱
- SMS(문자)를 이용하여 개인 비밀정보를 요구하거나 휴대폰 소액 결제를 유도하는 피싱 공격
- 큐싱
- QR코드를 통해 악성 앱을 내려받도록 유도하여 금융 정보 등을 빼내는 공격
- 봇넷
- 악성 프로그램이 감염되어 있는 컴퓨터들이 네트워크로 연결된 형태
- APT 공격
- 다양한 수단을 통한 지속적이고, 지능적인 맞춤형 공격
- 공급망 공격
- SW개발사의 네트워크에 침투하여 악의적 코드를 삽입, 서버 배포하여 사용자가 설치 또는 업데이트시에 자동적으로 감염되도록 하는 공격
- 제로데이 공격
- 보안 취약점이 발견되어 널리 공표되기전에 해당 취약점을 악용하여 이루어지는 보안 공격
- 웜
- 스스로 복제하여 네트워크 등의 연겨을 통하여 전파하는 악성소프트웨어 프로그램
- 악성 봇
- 해커의 명령에 의해 원격에서 제어 또는 실행이 가능한 프로그램 또는 코드
- 사이버 킬체인
- 공격형 방위시스템, APT 공격방어 분석 모델
- 랜섬웨어
- 대상자의 파일을 암호화하여 돈을 요구하는 공격
- 이블 트윈
- 핫스팟에 연결한 무선 사용자들의 정보를 탈취하는 무선 네트워크 공격
● 서버 인증의 기능
스니핑 방지(SSL인증서 설치), 피싱 방지, 데이터 변조 방지, 기업 신뢰도 향상(기업 인증)
● 인증 기술의 유형
- 지식지식 인증 : ID / PW
- 소지기반 인증 : 공인인증서, OTP
- 생체기반 인증 : 홍채, 얼굴, 지문
- 특정기반 인증 : 서명, 몸짓
● 접근 통제 기법
- 식별 : 자신이 누구라고 시스템에 밝히는 행위
- 인증 : 주체의 신원을 검증하기 위한 활동
- 인가 : 인증된 객체에게 접근을 허용하는 활동
- 책임추적성 : 주체의 접근을 추적하고 행동을 기록하는 활동
● 서버 접근 통제 유형
- 임의적 접근 통제(DAC)
- 신분에 근거하여 객체에 대한 접근을 제한하는 방법
- 강제적 접근 통제(MAC)
- 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법
- 역할 기반 접근 통제(RBAC)
- 중앙 관리자가 조직 내 맡은 역할에 기초하여 자원에 대한 접근을 제한하는 방법
● 접근 통제 보호 모델
- 벨-라파듈라 모델(BLP)
- 미 국방부지원 보안 모델, 보안 요소 중 기밀성을 가종하며, 강제적 정책에 의해 접근 통제하는 모델
- No Read Up : 보안수준이 낮은 주체는 보안 수준이 높은 객체를 읽을수 없다
- No Write Down : 보안수준이 높은 주체는 보안 수준이 낮은 객체에 기록할 수 없다
- 비바 모델
- 무결성을 보장하는 최초 모델
- No Read Down : 높은 등급의 주체는 낮은 등급의 객체를 읽을 수 없다
- No Write Up : 낮은 등급의 주체는 높은 등급의 객체를 수정할 수 없다
● 암호 알고리즘
데이터의 무결성 및 기밀성 확보를 위해 정보를 쉽게 해독할 수 없는 형태로 변환하는 기법
- 양방향 방식
- 대칭키 암호방식(개인키)
- 비대칭키 암호방식(공개키)
- 단방향 해시함수 방식
- MDC, MAC
● 대칭키 암호방식
암호화와 복호화 키가 같은 알고리즘
- 블록 암호방식
- 고정 길이의 블록을 암호화하여 반복하는 알고리즘
- SEED : 블록 크기는 128bit, 키 길이는 128, 256
- ARIA : 블록 크기는 128bit, 키 길이는 128, 192, 256
- DES : 블록 크기는 64bit, 키 길이는 56bit
- AES : 블록 크기는 128bit, 키 길이는 128, 192, 256
- 스트림 암호방식
- 매우긴 주기의 난수열열을 발생시켜 평문과 더불어 암호문을 생성하는 방식
- RC4
● 비대칭키 암호방식
- 공개키와 개인키가 있음
- RSA
- 디피-헬만
● 일방향 암호방식
임의 길이의 정보를 입력받아, 고정된 길이의 암호문(해시값)을 출력하는 암호방식
- MAC
- 키를 사용하는 메시지 인증 코드로 메시지의 무결성과 송신자의 인증 보장
- MDC
- 키를 사용하지 않는 변경 감지 코드로 메시지의 무결성 보장
● 대칭키 암호화 알고리즘
- DES : 1975년 IBM 개발, 대칭키 기반
- SEED : 1999년 한국인터넷진흥원(KISA) 개발
- AES : 2001년 미국 표준기술 연구소(NIST) 개발
- ARIA : 2004년 국가정보원과 산학연구협회가 개발
- IDEA : DES 대체, 스위스 연방기술기관 개발
- LFSR : 선형함수로 계산되는 구조로 되어있는 스트림 암호화 알고리즘
● 비대칭키 암호화 알고리즘
- 디피-헬만 : 최초의 공개키 알고리즘
- RSA : 1977년 MIT 개발
- ElGamal : 1984년 ElGamal 개발
- ECC : 1985년 RSA 대안으로 개발
● 해시 암호화 알고리즘
- MD5 : MD4 개선한 암호화 알고리즘
- SHA-1 : 1993년 NSA에 미국 정부 표준 지정
- SHA-256/384/512 : 256bit의 해시값을 생성하는 해시함수
- HAS-160 : 국내 표준 서명 알고리즘
- HAVAL : 메시지를 1024bit 블록으로 나눔
● IPSec
무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용한 IP보안 프로토콜
● SSL/TLS
클라이언트와 서버간의 웹데이터 암호화, 상호인증 및 전송시 데이터 무결성을 보장하는 보안 프로토콜
● S-HTTP
웹상에서 네트워크 트래픽을 암호화하는 방법
● 시큐어 코딩 가이드
설계 및 구현 단계에서 해킹 등의 공격을 유발할 가능성이 있는 잠재적인 보안 취약점을 사전에 제거하고, 외부 공격으로부터 안전한 소프트웨어를 개발하는 기법
● 입력 데이터 검증 및 표현 취약점
- XSS
- 검증되지 않는 외부 입력 데이터가 포함된 웹페이지를 사용자가 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격
- 사이트 간 요청 위조(CSRF)
- 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
- SQL 삽입
- 악의적인 SQL구문을 삽입, 실행시켜 데이터베이스의 접근을 통해 정보를 탈취하거나 조작하는 공격
● 보안 점검 항목
- 보안 기능
- 인증
- 접근제어
- 기밀성
- 암호화
- 권한관리
- 에러 처리
- 세션 통제
- 코드 오류
- 캡슐화
- API 오용
● 네트워크 보안 솔루션
- 방화벽
- 웹 방화벽(WAF)
- 네트워크 접근제어(NAC)
- 단말기에 내부 네트워크에 접속을 시도할 때, 이를 제어하고 통제하는 기능을 제공하는 솔루션
- 침입 탐지 시스템(IDS)
- 네트워크에 발생하는 이벤트를 모니터링하고, 보안정책 위반 행위를 실시간으로 탐지하는 시스템
- 침입 방지 시스템(IPS)
- 네트워크에 대한 공격이나 침입을 실시간적으로 차단하고, 유해트래픽에 대해 능동적으로 조치하는 시스템
- 무선 침입 방지 시스템(WIPS)
- 통합 보안 시스템(UTM)
- 다양한 보안 장비의 기능을 하나의 장비로 통합하여 제공하는 시스템
- 가상사설망(VPN)
- 인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 활용해 마치 전용망을 사용하는 효과를 가지는 보안 솔루션
● 시스템 보안 솔루션
- 스팸 차단 솔루션
- 보안 운영체제(Secure OS)
● 소프트웨어 개발 보안테스트 유형
- 정적 분석
- 동적 분석
● 비즈니스 연속성 계획(BCP)
각종 재해, 장애, 재난으로부터 위기관리 기반으로 재해복구, 업무복구 및 재개, 비상계획 등을 통해 비즈니스 연속성을 보장하는 체계
● 애플리케이션 테스트
애플리케이션에 잠재되어 있는 결함을 찾아내는 행위
● 애플리케이션 테스트 원리
- 완벽한 테스팅은 불가능
- 결함을 줄일 수는 있으나, 결함이 없다고 증명할 수 없다
- 파레토 법칙
- 전체 80%가 전체 원인의 20%에서 일어나는 현상
- 살충제 패러독스
- 동일한 테스트를 반복하면 더이상 결함이 발견되지 않는 현상
- 정황 의존성
- 소프트웨어 성격에 맞게 테스트 실시
- 오류-부재의 궤변
- 요구사항을 만족하지 못한다면, 결함이 없다고 해도 좋은 것은 아니다
● 프로그램 실행 여부에 따른 분류
- 정적 테스트
- 테스트 대상을 실행하지 않고, 구조를 분석하여 논리성을 검증하는 테스트
- 리뷰
- 정적 분석
- 테스트 대상을 실행하지 않고, 구조를 분석하여 논리성을 검증하는 테스트
- 동적 테스트
- 소프트웨어를 실행하는 방식으로 테스트를 수행하며, 결함을 검출하는 테스트
- 화이트박스 테스트
- 블랙박스 테스트
- 경험기반 테스트
- 소프트웨어를 실행하는 방식으로 테스트를 수행하며, 결함을 검출하는 테스트
● 화이트박스 테스트
원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법(구조 검사)
● 화이트박스 테스트 유형
(커버리지 : 테스트케이스가 얼마나 충족되었는지 나타내는 지표)
그림문제 나올수 있음!
- 구문(문장)커버리지 : 프로그램 내의 모든 명령문을 적어도 한 번 수행하는 커버리지
- 결정 커버리지 : 결정 포인트 내의 전체 조건식이 적어도 한번은 참과 거짓의 결과가 되도록 수행되는 커버리지
- 조건 커버리지 : 결정 포인트 내의 각 개별 조건식이 적어도 한번은 참과 거짓의 결과가 되도록 수행하는 커버리지
- 조건/결정 커버리지 : 전체 조건식&개별 조건식 모두 참 한번, 거짓 한번 결과가 되도록 수행하는 커버리지
- 변경 조건/결정 커버리지 : 개별 조건식이 다른 개별 조건식에 영향을 받지 않고, 전체 조건식에 독립적으로 영향ㅇ르 주도록 하는 커버리지
- 다중 조건 커버리지 : 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100%보장하는 커버리지
- 기본 경로 커버리지 : 수행 가능한 모든 경로를 테스트 하는 기법
- 제어흐름 테스트 : 프로그램 제어 구조를 그래프 형태로 나타내어 내부 로직을 테스트하는 기법
- 데이터흐름 테스트 : 제어 흐름 그래프에 사용현황 추가한 테스트 기법
● 블랙박스 테스트
사용자의 요구사항 명세를 보면서 수행하는 테스트(기능 검사)
● 블랙박스 테스트 유형
- 동등 분할 테스트
- 입력 데이터의 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대표값 테스트 케이스를 도출하는 테스트 하는 기법
- 경계값 분석 테스트
- 결정 테이블 테스트
- 상태 전이 테스트
- 유스케이스 테스트
- 분류 트리 테스트
- 페어와이즈 테스트
- 원인-결과 그래프 테스트
- 비교 테스트
● 테스트 시각에 따른 분류
- 검증 : 개발 과정을 테스트, 개발자 시점
- 확인 : 결과를 테스트, 사용자 시점
● 테스트 목적에 따른 분류
- 회복 테스트
- 시스템에 고의적으로 실패를 유도하고, 정상적으로 복구하는지를 테스트하는 기법
- 안전 테스트
- 불법적인 소프트웨어가 접근하여 시스템을 파괴하지 못하도록, 소스코드 내의 보안적인 결함을 미리 점검하는 테스트 기법
- 성능 테스트
- 시스템이 응답하는 시간, 특정 시간내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 측정하는 테스트 기법
- 부하 테스트 : 부하를 증가시켜, 시스템의 임계점을 찾는 테스트
- 강도 테스트 : 임계점 이상의 부하를 가하여 비정상적인 상황에서의 처리 테스트
- 스파이크 테스트 : 짧은 시간에 사용자가 몰릴때, 시스템의 반응 측정 테스트
- 내구성 테스트 : 오랜 시간 동안 시스템에 높은 부하를 가하는 테스트
- 시스템이 응답하는 시간, 특정 시간내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 측정하는 테스트 기법
- 구조 테스트
- 시스템의 내부 논리경로, 소스 코드의 복잡도를 평가하는 테스트 기법
- 회귀 테스트
- 시스템의 변경 도는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트 기법
- 병행 테스트
- 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후, 결과를 비교하는 테스트 기법
● 테스트 종류에 따른 분류
- 명세기반 테스트(블랙박스 테스트)
- 구조기반 테스트(화이트박스 테스트)
- 경험기반 테스트(블랙박스 테스트)
● 테스트케이스
사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 테스트 항목에 대한 명세서
● 테스트오라클
테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법
● 테스트오라클 종류
- 참 오라클
- 모든 입력값에 대하여 기대하는 결과를 제공하는 오라클
- 샘플링 오라클
- 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해주는 오라클
- 휴리스틱 오라클
- 특정 입력값에 올바른 결과를 제공하고, 나머지 값들에 대해서는 추정으로 처리하는 오라클
- 일관성 오라클
- 애플리케이션 변경이 있을 때, 수행 전과 후의 결과값이 동일한지 확인하는 오라클
● 테스트 레벨
함께 편성되고 관리되는 테스트 활동의 그룹
● 테스트 레벨 종류
- 단위 테스트
- 통합 테스트
- 시스템 테스트
- 인수 테스트
● 테스트 단계
- 단위 테스트 -> 통합 테스트 -> 시스템 테스트 -> 인수 테스트
● 인수 테스트
- 사용자 인수테스트
- 운영상의 인수테스트
- 계약 인수테스트
- 규정 인수테스트
- 알파 테스트
- 개발자의 장소에서 사용자와 개발자가 함께하는 테스트
- 베타 테스트
- 사용자의 실제 환경에서 테스트
● 테스트 시나리오
테스트 수행을 위한 여러 테스트 케이스의 집합, 케이스의 동작 순서를 기술한 문서이며, 테스트를 위한 절차를 명세한 문서
● 단위 테스트
모듈을 테스트
● 목(Mock) 객체 생성 프레임워크
- 더미 객체
- 테스트 스텁
- 테스트 드라이버
- 테스트 스파이
- 가짜 객체
● 통합테스트
모듈을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트
● 통합 테스트 수행방법 간 비교
- 빅뱅 테스트
- 모든 모듈을 동시에 통합 후 테스트 수행
- 드라이버/스텁 없이 실제 모듈로 테스트
- 하향식 테스트
- 스텁 필요
- 상향식 테스트
- 드라이버 필요
- 샌드위치 테스트
- 상위는 하향식, 하위는 상향식 테스트
- 스텁 + 드라이버 필요
● 테스트 자동화 도구
테스트 작업을 스크립트 형태로 구현함으로써, 쉽고 효율적인 테스트를 수행할 수 있는 도구
● 테스트 자동화 도구 유형
- 정적 분석도구
- 만들어진 애플리케이션을 실행하지 않고 분석하는 도구
- 테스트 실행도구
- 테스트를 위해 작성된 스크립트를 실행하고, 스크립트 언어를 사용하여 테스트를 실행하는 도구
- 성능 테스트도구
- 가상의 사용자를 생성하고 테스트를 수행하여 목표를 달성했는지 확인하는 도구
- 테스트 통제도구
- 테스트 계획 및 관리, 테스트 수행, 결함 관리 등을 수행하는 도구
- 테스트 하네스도구
- 테스트가 실행될 환경을 시뮬레이션하여 컴포넌트 및 모듈이 정상적으로 테스트되도록 하는 도구
● 테스트 하네스 구성요소
- 테스트 드라이버
- 테스트 스텁
- 테스트 슈트
- 테스트 케이스
- 테스트 시나리오
- 테스트 스크립트
- 목 오브젝트
● 결함 분석 방법
- 구체화
- 결함의 원인을 찾기 위해 결함을 발생시킨 입력값, 테스트 절차, 테스트 환경을 명확히 하는 방법
- 고립화
- 입력값, 테스트 절차, 테스트 환경 중 어떤 요소가 결함 발생에 영향을 미치는지 파악하는 방법
- 일반화
- 결함 발생에 영향을 주는 요소를 최대한 일반화 시키는 방법
● 테스트 커버리지
주어진 테스트케이스에 의해 수행되는 소프트웨어 테스트 범위를 측정하는 테스트 품질 측정 기준
● 테스트 커버리지 유형
- 기능기반 커버리지
- 전체 기능을 모순으로 설정하고, 실제 테스트가 수행된 기능의 수를 측정하는 방법
- 라인 커버리지
- 전체 소스 코드의 라인수를 모순으로 테스트 시나리오가 수행한 소스 코드의 라인수를 측정하는 방법
- 코드 커버리지
- 소스 코드의 구문, 조건, 결정 등의 구조 코드 자체가 얼마나 테스트되었는지를 측정하는 방법
● 결함 심각도별 분류
- 단순 결함 : 미관상 안좋음
- 경미한 결함 : 표준위반
- 보통 결함 : 사소한 기능 오작동
- 주요 결함 : 기능 장애
- 치명적 결함 : 데이터 손실
● 결함 우선순위
- 낮음
- 보통
- 높음
- 결정적
● 애플리케이션 성능 측정 지표
- 처리량
- 응답 시간
- 경과 시간
- 자원 사용률
● 데이터베이스 성능 저하 원인
- 데이터베이스 락(DB Lock)
- 불필요한 데이터베이스 패치(DB Fetch)
- 연결 누수
- 부적절한 커넥션 풀 크기
- 확정 관련
● 배드 코드
- 외계인 코드 : 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수가 어려운 코드
- 스파게티 코드 : 소스 코드가 복잡하게 얽힌 모습, 정상작동은 하지만 코드의 작동을 파악하기 어려운 코드
● 클린 코드
- 가독성
- 단순성
- 의존성 최소
- 중복성 제거
- 추상화
● 리팩토링
기능의 변경 없이, 코드를 보완하는 기법
● 운영체제(OS)
- 종류
- 윈도우
- 유닉스
- 리눅스
- 맥
- 안드로이드
● 메모리 관리 기법
- 최초 적합(First-fit)
- 최적 적합(Best-fit)
- 최악 적합(Worst-fit)
● 프로세스 상태
- 생성
- 준비
- 대기
- 실행
- 완료
● 프로세스 스케줄링의 유형
- 선점형 스케줄링 : 우선순위가 높은 프로세스부터 스케줄링
- 라운드로빈 : 프로세스는 같은 크기의 CPU 시간을 할당
- SRT : 가장 짧은 시간이 소요되는 프로세스를 먼저 수행
- 다단계 큐 : 여러개의 큐를 이용하여 상위단계 작업에 의한 하위단계 작업이 선점
- 다단계 피드백 큐 : 큐마다 서로 다른 CPU시간 할당량을 부여(FIFO + 라운드로빈 혼합형)
- 비선점형 스케줄링 : 프로세스가 작업 종료 전까지 다른 프로세스가 작업을 못하는 스케줄링
- 우선순위 : 프로세스별 우선순위에 따라 CPU 할당
- 기한부 : 작업들이 명시된 기한 내에 완료되도록 계획
- FCFS : 먼저 큐에 도착한 놈이 먼저 할당
- SJF : 가장 짧은 작업부터 수행, 평균대기 시간 최소화, 기아현상 발생
- HRN : 대기중인 프로세스 중 현재 응답률이 가장 높은것을 선택, 기아현상 최소화
● 가상화
물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 하나의 물리적인 리소스를 여러 개로 보이게 하는 기술
● 클라우드 컴퓨팅
인터넷을 통해 가상화된 컴퓨터 시스템 리소스 제공
● 클라우드 컴퓨팅 유형
- 인프라형 서비스(IaaS) : 자원을 클라우드로 제공하는 서비스
- 플랫폼형 서비스(PaaS) : 개발, 실행, 관리할 수 있게 플랫폼을 제공하는 서비스
- 소프트웨어형 서비스(SaaS) : 클라이언트를 통해 접속해서 소프트웨어 서비스 형태로 이용하느 ㄴ서비스
● 네트워크
원하는 정보를 수신자 또는 기기에 정확하게 전송하기 위한 기반 인프라
- WAN
- LAN
● OSI 7계층(물데네전세표응)
응용 계층 | 사용자와 네트워크 간 응용 서비스 연결 및 데이터 생성 | -HTTP -FTP |
데이터 | 호스트 |
표현 계층 | 데이터 형식 설정, 부호교환, 암복호화 | -JPEG -MPEG |
||
세션 계층 | -송수신 간의 논리적인 연결 -연결접속, 동기제어 |
-RPC -NetBIOS |
||
전송 계층 | -송수신 프로세스 간의 연결 -신뢰성 있는 통신 보장 -데이터 분할, 재조립, 흐름제어, 오류 제어, 혼잡 제어 |
-TCP -UDP |
세그먼트 | L4 스위치 |
네트워크 계층 | 단말기 간 데이터 전송을 위한 최적화된 경로 제공 | -IP -ICMP |
패킷 | 라우터 |
데이터링크 계층 | -인접 시스템 간 데이터 전송 및 전송 오류 제어 -동기화,오류제어,흐름제어,회선제어 |
-HDLC -PPP |
프레임 | 브리지, L2 스위치 |
물리 계층 | 0과1로 비트정보를 회선에 보내기 위한 전기적 신호 변환 | RS-232C | 비트 | 허브, 리피터 |
- 허브 : 하나의 네트워크로 수신된 정보를 여러 대의 컴퓨터로 송신하기 위한 장비
- 리피터 : 디지털 신호를 증폭시켜주는 역할
- 브리지 : LAN을 연결해주는 장치
- L2 스위치 : MAC주소 기반으로 빠르게 전송시키는 데이터링크 계층의 통신장치
- L4 스위치 : 4계층에서 네트워크 단위들을 연결해주는 통신 장비
- 라우터 : 최적의 경로를 찾아주는 장비
- 게이트웨이 : 프로토콜을 서로 다른 통신망에 접속할 수 있게 해주는 장치
● 프로토콜 3요소
- 구문 : 시스템 간의 정보 전송을 위한 데이터 형식, 코딩, 신호레벨 등의 규정
- 의미 : 시스템 간의 정보 전송을 위한 제어 정보로 조정과 에러 처리를 위한 규정
- 타이밍 : 시스템 간의 정보 전송을 위한 속도 조절과 순서 관리 규정
● 네트워크 프로토콜
컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고받는 양식과 규칙의 세계
● 데이터링크 계층 프로토콜(2계층)
- HDLC : 점대점 방식이나 다중방식 통신에 사용되며, 동기식 비트 중심
- PPP(Point-to-Point Protocol) : 네트워크 분야에서 두 통신 노드 간의 직접적인 연결
- 프레임 릴레이
- ATM : 53바이트 셀 단위로 전달하는 비동기식 시분할 다중화 방식의 패킷형 전송 기술
● 네트워크 계층 프로토콜(3계층)
- IP : 송수신 간의 패킷 단위로 데이터를 교환하는 네트워크에서 정보를 주고 받는데 사용
- ICMP : IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜
- IGMP : 그룹 멤버쉽을 구성하는데 사용하는 프로토콜
- ARP : IP주소를 MAC주소(물리주소)로 변환하는 프로토콜
- RARP : MAC주소를 IP주소로 역변환하는 프로토콜
- 라우팅 프로토콜 : 최적의 경로를 찾아주는 프로토콜
● IPv4
- 32bit
- 8bit x 4
- 0 ~ 255
- 유니캐스트, 멀티캐스트, 브로드캐스트
● IPv4 클래스 분류
- A 클래스 : 0 ~ 127
- B 클래스 : 128 ~ 192
- C 클래스 : 193 ~ 223
- D 클래스 : 224 ~ 239
- E 클래스 : 연구를 위해 예약된 주소
● IPv6
- 128bit
- 16bit x 8으로 나눈 16진수
- 유니캐스트, 멀티캐스트, 애니캐스트
● IPv4 -> IPv6 전환 방법
- 듀얼스택
- 터널링
- 주소변환방식
● 라우팅 프로토콜
- 내부 라우팅 프로토콜(IGP)
- RIP : AS(자율시스템)내에서 사용하는 거리벡터 알고리즘에 기초하여 개발된 내부 라우팅 프로토콜
- OSPF : 자신을 기준으로 링크상태 알고리즘을 적용하여 최단 경로를 찾는 라우팅 프로토콜
- 외부 라우팅 프로토콜(EGP)
- BGP : AS(자율시스템)상호 간에 경로 정보를 교환하기 위한 라우팅 프로토콜
● TCP
- 신뢰성 보장
- 연결 지향적 특징
- 흐름제어
- 혼잡제어
● UDP
- 비신뢰성
- 순서화되지 않은 데이터그램 서비스 제공
- 실시간 응용 및 멀티캐스트 가능
- 단순 헤어
● 표현계층 프로토콜(6계층)
- JPEG : 이미지
- MPEG : 멀티미디어(비디오,오디오)
● 응용계층 프로토콜(7계층)
- HTTP : 텍스트 기반의 통신규약, 하이퍼텍스트를 빠르게 교환하기 위한 프로토콜
- FTP : 파일 전송을 위한 프로토콜
- SMTP : 이메일 전송 프로토콜
- POP3 : 이메일 받는 프로토콜
- IMAP : 이메일 받는 프로토콜
- Telnet : 로컬 영역에서 네트워크 연결에 사용되는 프로토콜
- SSH(Secure Shell) : 서로 연결되어 있는 컴퓨터 간 원격 명령 실행이나 쉘 서비스 등을 수행
- SNMP : 라우터나 허브 등 네트워크 장치로부터 정보를 수집 및 관리
● 패킷교환 방식
작은 블록의 패킷으로 데이터를 전송하여 데이터를 전송하는 동안만 네트워크 자우너을 사용하도록 하는 통신 방식
● 패킷 교환 방식 기술
- X.25 : 통신을 원하는 두 단말장치가 패킷 교환망을 통해 패킷을 원활히 전달하기 위한 통신 프로토콜
- 프레임 릴레이 : ISDN을 사용하기 위한 프로토콜로써, ITU-T에 의해 표준으로 작성
- ATM : 비동기 전송모드, 광대역 전송에 쓰이는 스위칭 기법
● 서킷 교환 방식
네트워크 리소스를 특정 사용층이 독점하도록 하는 통신 방식
ex) 영상, 비디오
● 애드 혹 네트워크
노드들에 의해 자율적으로 구성되는 기반 구조가 없는 네트워크
● 개발환경 인프라 구성 방식
- 온프레미스 방식 : 외부 인터넷망이 차단된 상태에서 인트라넷만 사용하여 개발환경을 구축하는 방식
- 클라우드 방식 : 클라우드 서비스를 임대하여 개발환경을 구축하는 방식
- 하이브리드 방식 : 온프레미스와 클라우드를 혼합한 방식
'정보처리기사' 카테고리의 다른 글
[정보처리기사] SQL 문법 종합 정리 (0) | 2022.05.06 |
---|---|
[정보처리기사] 정처기 헷갈리는 단어 정리 (0) | 2022.05.06 |
[정보처리기사] 구성요소, 프로세스(절차) 모음 (0) | 2022.05.04 |
[정보처리기사] 실기 정리 ( 2 / 3 ) (0) | 2022.05.03 |
[정보처리기사] 실기 정리 ( 1 / 3 ) (0) | 2022.05.02 |