본문 바로가기

카테고리 없음

정보처리기사 실기 정리본 _ 아너무어렵다

반응형

정ㅇ처기 여태 보면서 디지털로 정리해둔것만 백업 목적으로 업로드해둡니다.

틀릴 수 있기때문에 감안하시구

2022~2024 1회까지 정리해둔거입니다

 

근데 어떻게 공부했는지는 네이버블로그로 따로 올릴거임

 

 

https://getupnote.com/share/notes/kCe5pUAQrSVxgwnBg9eb25PxoJm1/90b4cc71-9577-4f7c-ac37-eab24f3a3152

 

정처기 기출 틀린거

 

getupnote.com

 

https://getupnote.com/share/notes/kCe5pUAQrSVxgwnBg9eb25PxoJm1/f57c34fa-712d-4bae-9108-10c299c75188

 

흥달쌤 라이브

흥달쌤 라이브 SW공학 : 품질 높은 SW를 효율적으로 개발하기 위한 학문SW공학의 3R :  역공학(Reverse Engineering) : 소스코드보면서 다시 만들기재공학(Re-Engineering) 분석 → 재구성 → 역공학 → 이관

getupnote.com

https://getupnote.com/share/notes/kCe5pUAQrSVxgwnBg9eb25PxoJm1/0e73b94f-f515-47b8-b60d-e107aac9c0c5

 

파이널 예상

파이널 예상 피코넷(piconet) 여러개 독립된 통신 장치가 블루투스 기술이나 UWB통신기술 사용 통신망 형성 장비간 사전 네트워크 정의와 곟획이 없이, 상황에 따라 조정 프로토콜에 의해 마스터

getupnote.com

 

https://getupnote.com/share/notes/kCe5pUAQrSVxgwnBg9eb25PxoJm1/015f7f95-5691-49c5-b4d3-93ace1b8993a

 

모의고사 문제 중 기억할만한거

[학생] 테이블에 학번이 98, 성명 수제비, 학년이 3학년, 수강과목은 컴퓨터인 학생을 삽입하는 쿼리문 작성하기 -→ insert into 학생(학번, 성명, 학년, 수광과목) values(98,’수제비’,3,’컴퓨터’);

getupnote.com

 

https://getupnote.com/share/notes/kCe5pUAQrSVxgwnBg9eb25PxoJm1/16097552-0cc2-40b9-b3a9-990b42683457

 

데일리 문제중 기억할만한거

제어(Control)다른 모듈 내부의 논리적인 흐름을 제어하기 위해, 제어 통신하거나 제어 요소(FLAG)를 전달

getupnote.com

https://getupnote.com/share/notes/kCe5pUAQrSVxgwnBg9eb25PxoJm1/fae5c3f8-dc0c-4764-8aaf-1d917329d333

 

1. 다음은 C언어 코드이다. soojebi 라는 문자열을 입력하였다. 실행결과를 쓰시오.

정답) {'학번': 23, '학점': 3.0} 리스트 출력 포멧: [ ] 튜플 출력 포멧: ( ) 딕셔너리 출력 포멧: { }

getupnote.com

 

 

 

  •  
  • SW공학 : 품질 높은 SW를 효율적으로 개발하기 위한 학문
  • SW공학의 3R : 
  1. 역공학(Reverse Engineering) : 소스코드보면서 다시 만들기
  2. 재공학(Re-Engineering)
    분석 → 재구성 → 역공학 → 이관
    유지보수 잘하게 만든거, 유지보수의 생산성 위주
  3. 재사용(Re-USE) : 모듈의 독립성을 높여 만들기, 응집도 높이고 결합도 낮추고
    어 이거 잘만들었네 다시써야지
    다른건물을 지을때 잘만든거 가져다쓰는거
  • SW개발 단계
    1. 계획(비용, 일정, 타당성검사)
    2. 분석(요구사항 : 도출분석명세확인)
    3. 설계(모델링 작업 수행)
    4. 구현-실제 개발, StoryBoard보고 그림
    5. 테스트-중요함
    6. 유지보수

  • SW개발방법론
  1. 폭포수 모델(Waterfall Model):선형 순차 모델, 역으로 못돌림
  2. 프로토타이핑 모델(Prototyping) : 시제품 만들기
  3. 나선형모델(Spiral Model) : 계획/위험분석/개발/평가, 점진적 개발, bohem이 제안
  4. RAD(Rapid App Dev) : 도구로 빨리하겠다
  5. V모형 : 단통시인(단위통합시스템인수테스트)
  6. 4세대기법(4th Gen. Tech)
 
  • 에자일 - 산출물보다는, SW에 힘을 좀 주자 싶어서 나온거.
    XP : 의사소통, 용기, 피드백, 존중, 단순성 - 의피존용단
    스크럼 : 스프린트단위 개발, 매일 10~15분 회의, 백로그(이번에 해야할거 적어두기)
    크리스탈 : 규모에 따른 방법론
    FDD : 기능주도개발
  • 프로젝트관리
    프로젝트 핵심 관리대상 : 3P(People,Problem,Process) : 사람 문제 프로세스
    PMBOK : 프로젝트 관리프로세스 및 지식체계
  • 비용산정
    1. 하향식 : 전문가 판단 기법(경험 많은 사람이 말하는거), 델파이기법(여러 전문가들 모여서 결정)
    2. 상향식 : 원시라인코드 수, 단계별 노력
    3.수학적기법 :
     COCOMO : 조직형(~50,000) 반분리형(~300,000) 내장형(300000~)
     PUTNAM : Rayleigh-Norden, SLIM
     FP:기능에 대해 얼마인지 산정하는 그런 것
     내부논리파일(ILF), 외부연계파일(ELF), 외부입력,외부출력,외부조회

  • 일정산정 :
    WBS : Work Breakdown Structure, 
    CPM네트워크
    임계경로계산
    간트차트:WBS에서 기능 나열한걸 얼마나 걸릴지 표시, 엑셀씀

 

  • 플랫폼 : CPND(Contents, Platform, Network, Device)
    Contents : 텍스트, 이미지, 오디오, 비디오
    Platform:웹사이트, 앱
    Network:통신시스템
    Device:스마트폰, 컴터, 태블릿 등

  • 미들웨어
    원격프로시저 호출(Remote Procedure Call)
    메세지지향 미들웨어(Message Oriented Middleware)
     - 모았다가 처리하는 미들웨어

    ORB(Object Request Broker)
     - 중간에서 매개역할 해줌
    DB접속 미들웨어
     - 데이터베이스 접속 도움
    TP 모니터(Transaction Processing Monitor) : 트랜젝션 관련
    웹앱(web Application Server)
     - WAS : 웹서버 동적(게시판 등) / WEB : 정적(이미지, 구조 등)
    앤터프라이즈 서비스버스(Enterprise Service Bus)

  • 요구사항 개발 프로세스
    (요구공학 : 사용자는 내가 뭘 원하는지 말 잘 못함, 어떤기능인지 뽑아내는거)
    도출(Elicitation) : 인터뷰, 설문조사, 워크샵 등
    분석(Analysis) : DFD(DataFlowDiagram:데이터가 흘러가는거 표현), DataDictionary, Mini-Spec(소단위명세서:하나의 기능들 수행법 나열), ERD, STD(상태전이도),UML(표준화된 그림을 이용한 그림, 객체지향에서 주로 사용)
    명세(Specification) : 정형(수학기호들)/비정형(자연어), 기능/비기능
    확인(Validation&Verification)

  • HIPO
    하향식(절차적인)SW개발을 위한 문서화 도구
    차트 종류 :
      가시적 도표(Visual Table of Content):전반적으로 보기
      총체적 도표(Overview Diagram):여기안에서 Input Output이 어떤게있는지
      세부적 도표(Detail Diagram):총체적도표에서 일부에 대해 상세하기

  • 객체지향 분석 방법론
  • 럼바우(Rumbaugh)
    객체(Object Modeling)모델링 : 객체다이어그램
    동적(Dynamic Modeling)모델링 : 상태다이어그램
    기능(Functional Modeling)모델링 : DFD
  • 부치(Booch) : 미시적 및 거시적 개발 프로세스
  • 제이콥슨(Jacobson) : Use Case 중심 개발 분석법
  • Coad와 Yourdon E-R 다이어그램
  • Wirfs-Brock : 분석과 설계의 구분 없음

  • 설계의 종류
    1. 상위 설계(분석 설계) : 아키텍쳐, 데이터 등
    2. 하위 설계(구현 테스트) : 모듈, 자료구조, 알고리즘
    3. 협약에 의한 설계 : 선행조건, 결과조건, 불변조건 <-빈칸뚫기 조심

  • SW아키텍쳐 4+1뷰(뷰 = 사용자의 관점)
    논리 뷰(Logical View) : 시스템의 기능적 요구사항 -개발자 뷰
    구현 뷰(Implementation View) : 모듈의 구성과 개발자의 관점을 반영 -개발자 뷰
    프로세스 뷰(Process View) : 프로그램 실행 시 시스템들의 관점을 표현 -개발자 뷰
    배치 뷰(Deployment View) : 시스템의 물리적 배치 -개발자 뷰
    유스케이스 뷰(UseCase View) : 아키텍쳐 설계 및 검증을 주도 -사용자 입장 뷰
  • 아키텍쳐 패턴 종류
    계층화패턴 : 계층적으로 패턴이 되는거
    클라이언트 서버 패턴 : 웹서비스(네이버 등)
    마스터슬레이브패턴 : 뭔가 생각안하고 데이터만 전달, 위랑 비슷하긴 함
    파이프필터패턴 : 그냥 일처리끝나면 옆으로 넘기기(순차처리)
    브로커패턴 : 요청이 들어오면 브로커가 정해주는거
    피어투피어 패턴 : 나랑 너랑 연결되어있는 토렌트
    이벤트버스패턴 : 리스너를 구독한사람에게 어쩌구저쩌구, 버스노선있으면 발담그고 있는거, 오다가 뭐 전달해주고 이런거
    모델뷰컨트롤러패턴 : 데이터관련,사물,사칙연산 등
    블랙보드패턴 : 그냥 알려지지 않은것들 하는거
    인터프리터패턴 : 특정언어, 그거에대해 하는거

  • UML(Unified Modeling Lang)
    시스템의 구조와 동작을 명세하는 표준화된 모델링 언어(그림그리는 언어)
    특징 : 가시화 언어, 명세화 언어, 구축 언어, 문서화 언어

  • UI설계 (!=UX:사용자경험)
  1. CLI(Command Line Interface):CUI랑 비슷, 내가 운영체제와 문자로 소통
  2. GUI(Graphic):그래픽, 마우스, 폴더 등
  3. NUI(Natural):자연스러운 움직임
  4. OUI(Organic):장비까지 추가해서 자유롭게
  5. VUI(Voice):목소리를 이용하는거
 
  • UI설계도구
    와이어프레임(기획자와 디자이너가 참고하는 손그림), 스토리보드 (모든 개발자가 다 보는거), 프로토타입(시제품), 목업(정적인 모형) , 유스케이스(기능 명세)

  • UI설계원칙
    직관성:딱 봤을때 기능을 인식할 수 있어야 한다
    유효성:사용자의 목적을 정확하게 달성할 수 있어야 함
    학습성:배우기쉬워야한다
    유연성:사용자요구사항을 받아들여서 확장할 수 있어야 한다, 오류라던지 이런것도

  • 협업도구 : 여러사람들이 프로젝트를 동시에 수행할 수 있도록 도와주는 SW

  • 형상관리도구 : 매우중요
    옛날 : SVN, 요즘 : GIT 많이 사용
    SW개발과정에서 발생하는 모든 변경을 통제하고 관리하는 방법
    변경관리<버전관리<형상관리
    형상관리 절차 :
      - 형상 식별 : 관리항목 구분
      - 형상 통제 : 변경요청을 검토, CCB(형상관리위원회)의 승인을 거쳐 베이스라인에 반영
      - 형상 감사
     : 검토
      - 형상 기록 : 기록
    도구 : CVS(더 예전에 나옴, 느리고 복잡해), SVN(많이씀), GIT(리누스토발즈가 만듦, 분산형 형상관리)
    버전관리도구(=형상관리도구)방식 : 

    대빵 개발자가 갖고 있는 핵심모듈들을 import해서 최초에 한번 실행
    A, B개발자들이 각자 갖고 가는걸 checkout한다고 함
    B 개발자가 만들어서 올릴땐 add 명령어 사용
    개발자가 저장소에 있는걸 수정할땐 commit 함
    한걸 다른 A개발자가 다시 받는건 update

    Trunk : 줄기(지속적인 배포 진행)
    Branch :  중간에 하나 복제해서, 거기다 개발하고 형상관리, 나중에 붙이긴 하겠지(Merge)
    Diff: 트렁크와 브랜치 비교

  • 빌드도구
    실행가능한 SW로 변환해주는 도구
    Make:Unix계열 운영체제에서 사용
    Ant : Java 기반 빌드 도구, XML 기반 빌드 스크립트를 사용
    Maven : 의존성관리(라이브러리를 자기가 가져옴)와 프로젝트 라이프사이클 관리에 강점
    Jenkins : Java기반의 오픈소스, 지속적 통합 도구(이것도 Groovy기반)
    Gradle : Groovy기반 오픈 소스 빌드 자동화 도구(안드로이드 스튜디오, 자바에서도 씀)

  • 프레임워크 : 개발에 필요한 구성요소와 아키텍쳐를 제공하는 반제품형태의 SW
    특징 :
      - 모듈화(Modularity)
      - 재사용성(Reusability)
      - 확장성(Extensibility)
      - 제어의 역흐름(Inversion of Control)
    전자정부 프레임워크(스프링), 스트럿츠, 스프링
    아이바티스, 마이바티스, 하이버네이트
  • 라이브러리 : 프로그램에서 자주 사용되는 루틴이나 리소스(클래스, 템플릿, 함수)를 모아둔거
    내부라이브러리 : 내부에서 자동으로 생성
    외부라이브러리 : 공유정신이 투철한 친구가 공유해주는거

  • API(Application Programming Interface)
    다른 소프트웨어 또는 서비스와 상호작용하는데 사용되는 인터페이스

  • 결합도, 응집도 → 모듈의 독립성을 높이기 위해 하는 것. 응집도는 높이고 결합도는 낮춰야함
    낮  - 자료결합도(Data): 값 → 매개변수로 해서 함수 호출하는, 이런 형태 | func(1,10)
      - 스탬프결합도(Stamp) : 배열 등 전달 | func(a)
      - 제어결합도(Control) : 제어 요소 전달 | if(x>10)
      - 외부결합도(External) : 다른 모듈 변수 사용
      - 공통결합도(Common) : 전역번수 사용 | 전역변수 int a;
    높  - 내용결합도(Content) : 다른 모듈 기능 이용

    높  - 기능적응집도(Functional) : 단일목적 수행
      - 순차적응집도(Sequential):모듈내부에서 하나의 활동으로 나온 값을 다음 입력으로 쓰는거
      - 통신적응집도(Communication):동일한 입력, 동일출력
      - 절차적응집도(Procedual) : 순차적 수행
      - 시간적응집도(Temporal) : 같은 시간 기능 수행
      - 논리적응집도(Logical) : 유사한 성격
    낮  - 우연적응집도(Coincidental) : 연관관계없음

  • 팬인, 팬아웃 : 뭐 들어오고 나가고니까 그냥 숫자 세라

  • MVC 모델 계층 -보기
      - 프레젠테이션 계층(뷰) : 사용자 인터페이스
      - 제어 계층(Control) : 요청을 분석하고, 적절한 비지니스 로직 호출
      - 비지니스 로직 계층(Business Logic)(Control) : 핵심업무로직을 처리
      - 퍼시스턴스 계층(Persistence Layer) : 데이터관리, DB관리
      - 도메인모델 계층 : 데이터 전달

  • 시큐어코딩
    OWASP : 오픈소스 웹 애플리케이션 보안 프로젝트
    시큐어코딩 가이드
      - 입력데이터 검증 및 표현 : SQL Injection, XSS, 자원삽입 등
      - 보안기능 : 부적절한 인가, 취약한 암호화 알고리즘, 패스워드 평문저장 등

    (깨진암호 : DES, MD5 ... 등)
      - 시간 및 상태 : 경쟁조건, 종료되지 않는 반복문
      - 에러처리 : 오류메세지 정보 노출, 부적절한 예외 등
      - 코드 오류 : 널 포인터 역참조 등
      - 캡슐화 : 
      - API 오용 : 

  • 배치 프로그램
    데이터를 모았다가 일괄로 처리하는 작업, 실시간과 반대
    필수요소
      - 대용량 데이터
      - 자동화
      - 견고함
      - 안정성
      - 성능

  • 인터페이스 : 서로 다른 시스템간에 정보를 주고 받는 시스템
    구성
      - 송신시스템 : 보내는거
      - 수신시스템 : 받는거
      - 중계시스템 : 중간에서 받는데, 없어두 괜찮음, 있으면 뭐 로그라던가 볼 수 있음, 안정성 유효성 보장 가능

    데이터식별
      - 전문공통부 : IP라던지 어디서왔는지 이런거
      - 전문개별부 : 데이터 들어있는 곳
      - 전문종료부 : 컴퓨터는 끝을 몰라서 종료처리를 해줘야함

  • EAI : 기업 내 어플리케이션 통합하는 솔루션
      - Point to Point :
      - Hub & Spoke :
      - Message Bus(ESB방식) :
      - Hybrid : 허브앤스포크와 메세지버스 합침

  • 전송데이터
      - JSON : 이름 값 쌍 - { } 중괄호로 묶임
      - XML : 구조화된 문서 표현, 마크업 언어
           → 태그를 이용하는 구조화된 언어: html(마크업 언어), sgml, xml
      - YAML : 데이터 직렬화 언어
      - CSV : 콤마로 구분 ← 나올일없음

  • AJAX : 비동기방식 데이터 교환
    페이지 일부만 변경 가능

  • SOAP :
    HTTP, HTTPS, SMTP등 메세지 교환
    SOAP : 메세지 교환 프로토콜 (실제 데이터를 주고받을 수 있는 프로토콜)
    UDDI : 비즈니스 업체 목록 등록 (설명서 모여있는 도서관)
    WSDL : 서비스의 기술적 세부사항 기술 (설명서)
  • 보안프로토콜
      - SAML : 인증/권한관리
      - XKMS:키관리
      - XACML:접근제어

  • REST
    HTTP URL을 통한 자원 명시와 HTTP Method를 통한 CRUD Operation 적용
    구성
      - 자원(Resource):URL을 통해 식별
      - 행위(Method):GET, POST, PUT, DELETE
      - 표현(Representation): 데이터 표현
    RESTful : REST의 원리를 따르는 시스템
  • 인터페이스 보안
    패킷공격기법 : 스니핑(지켜보기), 스푸핑(속이기)
    보안 지켜야하는곳 : 소스코드(시큐어코딩), DB(암호화), 네트워크 선로(암호화해야함)
    보안기능적용
      - 네트워크 영역 : IPSec, SSL, S-HTTP, TLS
      - 애플리케이션 영역 : 시큐어코딩
      - DB영역 : 암호화

  • 인터페이스 구현 검증 도구
    xUnit : 다양한 언어 지원
    STAF : 서비스 호출 및 컴포넌트 재사용
    FitNesse:웹기반 테스트 프레임워크
    NTAF:피트니스하고 STAF 장점만 합친건데 폐기
    Selenium : 웹 앱 테스트 프레임워크
    watir : RUBY사용하는 앱 테스트 프레임워크

  • 객체지향 구성요소
      - 클래(Class) : 속성과 연산을 정의하여 만든 틀
      - 객체(Object) : 클래스의 인스턴스
      - 속성(Attribute) : 객체들이 가지고 있는 고유한 데이터
      - 메서드(Method) : 작업을 수행하기 위한 명령문의 집합
      - 메시지(Message) : 객체에게 어떤 행위를 하도록 지시

  • 객체지향 특징
      - 정보 은닉(Information Hiding) : 내부 데이터에 직접 접근할 수 없도록 제한
    Private int a; → get()메소드를 통해 사용가능
      - 캡슐화(Encapsulation) :속성과 메서드를 하나로 묶은것
    private int a;
    public int getA(); ...
      - 상속(Inheritance) : 부모로부터 물려받아 부모껄 사용할 수 있는것
      - 다형성(Polymorphism) 하나의 메세지에 여러 방법으로 응답
      - 추상화(Abstraction) : 실체의 핵심적인 개념만 추출

  • SOLID 객체지향 설계 원칙
    단일책임원칙(SRP) : 한 클래스는 한 책임만
    개방폐쇄원칙(OCP) : 확장엔 열려있고 수정엔 닫혀있어야 한다
    리스코프 치환 원칙(LSP) : 자식클래스는 언제나 부모 클래스 대체
    인터페이스 분리 원칙(ISP) : 사용하지 않는 인터페이스는 구현하지 말아야 한다
    의존성 역전 원칙(DIP) : 변화가 거의 없는곳에 의존


  • 디자인패턴 : 재사용할 수 있도록 만들어놓은 패턴들의 모음
    Gof 디자인패턴
      - 생성 : 객체생성과 관련한 패턴
      - 구조 : 객체를 조합해 더 큰 구조를 만드는 패턴
      - 행위 : 알고리즘이나 책임분배 관련된 패턴

  • 테스트의 필요성
      - 오류발견관점
      - 오류예방관점
      - 품질향상관점
    발견하고 예방하면 향상된다


(*p)[2] → 2열로 만듦
  • 테스트 오라클
    테스트의 결과가 참인지 거짓인지 판단하기 위해서 미리 정의된 참값을 입력하여 비교하는 기법및 비교하는 활동
      - 참오라클 : 다 테스트 하는거
      - 샘플링오라클 : 샘플들 때서 테스트
      - 휴리스틱 오라클:샘플링하고 나머지는 추정
      - 일관성 검사 오라클 : 추정을 하고, 다른데 영향 미치는지 테스트

  • 테스트레벨(V레벨)
    단위테스트 :
      - 정적테스트 : 소스코드 내부 보고
      - 동적테스트 : 입력값넣고 출력값보고
    통합테스트
    시스템테스트 :기능과 비기능 테스트
    인수테스트 : 알파와 베타테스트

  • 테스트기법 
    프로그램 실행 여부
      - 정적테스트 
      - 동적테스트
  • - 화이트박스 테스트 : 소스코드 내부
    - 블랙박스 테스트 :
      - 동등분할기법 : 테스트케이스를 줄이는 기법
      - 경계값분석 : 0일경우 -1,0,1
      - 원인효과그래프 : 입력출력간 상관관계
      - 오류예측검사 : 경험많은사람이 오류 예측
      - 비교검사 : 여러컴퓨터 가져다놓고 동일한결과 나오는지
      - 상태전이검사 : 상태가 바뀌는거 테스트

  • 테스트 목적
      - 회복 : 고의로 실패 유도
      - 안전 : 보안 결함 점검
      - 강도(Stress) : 과부하 테스트
      - 성능 : 응답시간, 처리량, 반응속도
      - 구조 : 소스코드의 복잡도를 평가
      - 회기 : 변경코드에 대한 새로운 결함 여부 평가
      - 병행 : 변경시스템과 기존 시스템에 동일 데이터 입력 후 비교 / 여러대 있을때 같은 입력값을 넣고 똑같이 나오는지 체크
      - A/B테스트 : 기존 서비스 대비 효과 테스트
      - 스모크 테스트 : 테스트 환경의 테스트

  • 테스트 커버리지 : 테스트를 얼마만큼 수행했는지 나타내는 척도
    유형
      - 기능기반커버리지
      - 라인커버리지
      - 코드커버리지
        - 구문커버리지 : 구문에 대해 한번이상 수행 x>0
        - 조건커버리지 : 개별 조건식에 대해 수행 x>0
        - 결정커버리지 : 결정포인트 내 모든 분기문에 대해 수행 x>0 && y>0
        - 조건/결정커버리지 : 결정포인트 T/F, 개별조건식 T/F
        - 변경 조건/결정 커버리지 : 모든 결정포인트 내의 개별조건식은 적어도 한번 T/F
        - 다중 조건 커버리지 : 가능한 조합을 100% 보장

  • 결함관리 : 발생한 결함을 추적하고 관리할 수 있게 하는 도구
    결함관리 프로세스
      에러발견 → 에러등록 → 에러분석 → 결함 확정 →
      → 결함 할당 → 결함 조치 → 결함 조치 검토 및 승인

  • 테스트 장치
    테스트 드라이버 : 상향식
    테스트 스텁 : 하향식
    테스트 슈트 : 테스트케이스 집합
    테스트케이스 : 입력값, 실행조건, 기대결과 등의 집합
    테스트 스크립트 : 자동화된 테스트 실행 절차
    목 오브젝트 : 조건부로 상황에 예정된 행위를 수행하는 객체에서 발생한 결함을 추적하고 관리할 수 있개 해주는 도구

  • 통합테스트
      - 점증적 방식 : 하나씩 하나씩 한다
        - 상향식 통합테스트 : 밑에서 위로 with DRIVER
        - 하향식 통합테스트 : 아래서 위로 with STUB
        ->두개 같이하면 백본테스트 라고 함

      - 비점증적 방식 : 그렇지않다
        - 빅뱅테스트

  • 리팩토링 : 기능의 변경 없이 이 소스코드 내부를 변경하는거(DB에선 튜닝이라고 함)
    품질분석
      - 동료검토(Peer Review) : 친구가 봐주는거
      - 워크스루(Walkthrough) : 팀 회의, 발표를 내가 함
      - 인스팩션(Inspection) : 계획→ 사전교육->준비->인스팩션->수정->후속조치

 

클린코드 : 알고리즘 개선, 병목현상 제거, 실행시간 단축, 메모리사용 최소화
코드스멜 : 잘못짜둔 코드, 잠재적인 문제점, 스파게티 코드(소스코드를 엮어놔서, goto문같은거 써서 소스코드분석 힘들게 해둔거), 외계인코드(오래지나서 문서도 없고 개발자도 없는거), 레거시 시스템(오래지나서 뭐 없는거) 등작성원칙
  - 가독성, 단순성, 의존성배제, 중복성 최소화, 추상화

  • 유지보수 - 영어 보기
    수정보수(Corrective Maintenance) : 오류수정
    적응보수(Adaptive) : 환경변화
    향상보수(Perfective) : 기능추가
    예방보수(Preventive) : 잠재적 오류 대비

  • 앱 배포 - 토이블라스터?
    최종 사용자에게 소프트웨어를 전달하는 전체 과정
    CI(Continuous Integration) : 지속적인 통합
    CD(Continuous Delivery & Continuous Deployment) : 지속적인 배포
    릴리즈노트 : 소프트웨어 제품과 함께 배포되는 문서

  • DRM
    디지털컨텐츠의 불법사용을 제한하고, 승인된 사용자에게만 컨텐츠사용을 허용하는 기술
      - 콘텐츠 제공자 : 콘텐츠를 제공하는 저작권자
      - 콘텐츠 분배자 :암호화된 콘텐츠 제공
      - 패키저 : 컨텐츠와 메타데이터를 합치는 기능
      - 보안 컨테이너 :안전한 유통을 위한 전자적 보안 장치
      - DRM컨트롤러 : 컨텐츠 이용 권한을 통제
      - 클리어링하우스 : 키 관리 및 라이선스 발급 관리

  • 저작권 보호 기술
      - 암호화 기술 : 특정 키를 가진 사용자만 컨텐츠 이용
      - 위변조방지(Temper-Proofing) 콘텐츠에 무단 조작시 감지하고 오류 유발
      - 워터마킹(Watermarking)컨텐츠에 저작권정보를 은닉 
       - 워터마킹 : 불법복제방지 - 이거 내가 만들었다~
       - 핑거프린팅 : 불법유통방지 - 이거 내가만들었고, 너가 샀다~



    DB~~
  • 데이터베이스 정의 - 공장통운
      - 공유데이터 : 여러 사용자가 공동으로 사용하는 데이터
      - 저장데이터 : 저장매체에 저장된 데이터
      - 통합데이터 : 중복이 최소화된 데이터 모임
      - 운영데이터 : 조직의 목적을 위한 필수 데이터

  • 데이터언어
      - DDL(Data Definition Lang) : 구조와 제약조건 정의 Create, D, A, T
      - DML(Data Manipulation Lang) : 데이터 처리 및 조작 Insert Update Delete Select
      - DCL(Data Control Lang) : 보안 권한 무결성 및 병행제어 Grant Revoke Commit Rollback Savepoint
  • -→ 하나의 웹툰 가지고 여러 스키마 보여주는거 : 외부스키마
    외부스키마 : 위에 설명
    – 논리적독립성 – 
    개념스키마 : 데이터베이스의 전체적인 구조와 제약조건
    – 물리적독립성 – 
    내부스키마 : 저장장치 입장에서 본 스키마 구조(name varchar(20))

  • DBMS
    데이터베이스를 효과적으로 관리하고 조작하기 위한 전용 소프트웨어
      - 계층형 : 트리구조
      - 네트워크형 : 다대다 관계 가능, CODASYL
      - 관계형 : 테이블구조의 모델
      - 객체지향형 : 객체지향 프로그래밍 개념에 기반
      - 객체관계형 : 관계형 + 객체지향 합친거
      - NoSQL(Not Only SQL): 비정형데이터(영상, 음원 등), 다양한 특성 지원
      - NewSQL : RDBMS, NoSQL 장점 결합
DB설계
  - 요구사항 분석
  - 개념적 설계 : 개념적 스키마 구성 (ERD)
  - 논리적설계 :
      목표 데이터 모델 기반 설계(객체지향인지, 관계형인지, 망형(관계형)인지
      정규화, 트랜젝션 인터페이스(하나의 일처리 단위) 설계
  - 물리적설계
       구조 및 성능에 대한 설계
            (오라클인지 뭔지~~, 파티션 만들고 클러스터 이용하고, 뷰 만들고, 인덱스라는 공간도 만들고)       반정규화
  - 구현

  • 데이터모델
    복잡한 데이터 구조를 단순화, 추상화 하여 체계적으로 표현한 개념적 모형
      - 구조(Structure) : 데이터 구조 및 개체 간 관계
      - 연산(Operation) : 데이터 처리방법
      - 제약조건(Constraint) : 논리적 제약조건
  • 이상현상 : 데이터중복으로 인해 릴레이션(테이블)조작 시 발생하는 예기치 못한 문제점
      - 삽입이상 : 불필요한 데이터가 함께 삽입되는 현상
      - 삭제이상 : 연쇄 삭제 현상으로 인해 정보 손실
      - 갱신이상 : 일부 정보만 갱신되어 정보에 모순이 생기는 현상
    //쓸줄알아야함
  • 함수적 종속
      - 완전 함수적 종속(Full Functional Dependency)
        - 종속자가 기본키에만 종속
      - 부분 함수적 종속(Partial Functional Dependency)
        - 기본키를 구성하는 속성 중 일부만 종속
      - 이행적 함수 종속(Transitive Functional Dependency)
        - X→ Y/ Y → Z 일때, X→ Z가 성립하는 경우

  • 정규화
    도부이결다조 (실무는 3정규형까지만 함)

 

  • 반정규화
    성능향상이나 개발 및 운영의 편의성을 위해 의도적으로 정규화에 위배된 행위를 하는것
    (중복을 허용하거나 데이터를 재구성하는 기법)

  • 데이터베이스 이중화 → 왜 하느냐? 가용성을 위해서 함. 高가용성
    장애에 대비하여 동일한 데이터베이스를 중복하여 관리하는 방식
    장애나 재해 발생시 빠른 서비스 재개(고가용성)
      - Eager 기법 : 트랜잭션 발생시 즉시 반영
      - Lazy 기법 : 트랜잭션 완료 후 반영

  • DB백업
      - 전체백업(Full) : 모든 데이터를 백업
      - 증분백업 : 변경/추가된 데이터 백업
      - 차등백업 : 모든 변경/추가된 데이터 백업
      - 합성백업 : 전체 백업본과 여러개의 증분 백업본을 합치어 새로운 전체 백업 만들기

  • RTO : 복구시간목표 : 서비스를 사용할 수 없는 상태로 허용되는 시간

  • RPO : 복구시점목표 : 마지막 백업 이후 허용되는 최대 데이터 손실 시간
    ex)새벽2시에 백업 떴고, 새벽4시에 손실이 났을때, 이 사이 데이터 손실 범위 량

  • DB암호화
      - API 방식 : 앱에서 수행
      - Plug-in방식 : DB서버에 설치 후 수행(유료)
      - TDE방식 : DBMS 내부의 기본 모듈로 수행

  • 물리속성설계
      - 파티셔닝
             - DB의 특정부분((데이터)를 여러 섹션으로 분할
             - 범위, 목록, 해시, 라운드로빈, 합성
      - 클러스터 : 자주 사용되는 테이블의 데이터를 디스크 상 동일한 위치에 저장
      - 인덱스 : 테이블 검색 속도 향상을 위한 저장 공간 활용 자료구조
      - 뷰 : 기본테이블에서 유도된 이름이 있는 가상 테이블

  • 시스템카탈로그 : 데이터베이스의 데이터베이스
    (PCB, File Descripter : 운영체제에서 사용하는 비슷한거)
      - DB의 모든 데이터 개체들에 대한 정보를 저정한 시스템 테이블
      - 데이터사전(Data Dictionary)이라고도 함

  • 관계데이터릴레이션 구조
      - 릴레이션
        - 릴레이션 스키마 : 릴레이션의 논리적 구조
        - 릴레이션 인스턴스 : 스키마에 실제로 저장된 데이터의 집합
      - 속성 : 릴레이션의 열, 개체의 특성
      - 튜플 : 릴레이션의 행, 속성들의 모임
      - 도메인 :속성이 가질 수 있는 값의범위
      - 차수 : 속성의 총 갯수 (열)
      - 카디널리티 : 튜플의 총 갯수 (행)

  • 관계대수
      - 순수관계연산자 : SELECT(시그마), PROJECT(파이), JOIN(보타이), DIVISION(나누기)
      - 일반집합연산자 : 합집합(u), 교집합(n), 차집합(-), 교차곱(X)

  • 관계해석
    원하는 정보가 무엇이라는것만 정의하는 비절차적 특성
    V : or연산
    ^ : and 연산
    ㄱ : not 연산

  • 속성
    컬럼이라고하기도 하고, 열이라고도 함, 정보의 최소 단위
      - 기본속성 : 업무로부터 추출한 모든 속성
      - 설계속성 : 코드성 데이터
      - 파생속성 : 다른 속성에 영향을 받아 발생하는 속성


  • 튜플을 식별하고 구별하는데 사용되는 칼럼
    슈퍼키 : 유일성
       ㄴ 후보키 : 유일성, 최소성
             ㄴ 기본키(유일성, 최소성), 대체키(유일성, 최소성)

무결성제약조건
  - 개체무결성(Entity Integrity)
        NULL불가, 중복불가
  - 참조무결성
         외래키는 NULL이거나 참조릴레이션의 기본키와 일치해야함
         Restrict(제한), Cascade(연쇄삭제)
  - 도메인무결성
         속성값은 정의된 도메인에 속해야한다
고유무결성 : 특정속성값은 서로 달라야한다키 무결성 : 각 릴레이션은 하나의 키를 가져야한다릴레이션무결성 : 삽입 삭제 갱신등의 연산은 릴레이션의 무결성을 해치지 않도록 수행되어야한다

  • CRUD
    해당 업무에 어떤 데이터가 존재하는지 무엇이 영향을 받는지 분석
    Create Read Update Delete 생성 읽기 갱신 삭제
  • 옵티마이저 : 최적의 실행방법 결정
      - 규칙기반 옵티마이저(Rule Based) : 우선순위(연산자 우선순위, 인덱스 유무)
      - 비용기반 옵티마이저(Cost Based) : 통계정보(이전에 수행한 정보 가지고, 없으면 비효율적)

  • 튜닝 - DB에서의 리팩토링
    SQL문을 최적화하여 시스템의 처리량과 응답속도를 개선하는 작업

  • 분산데이터베이스
    여러곳에 분산된 데이터베이스를 하나의 논리적인 시스템처럼 사용할 수 있는 데이터베이스
    (유튜브도 CDN이라는걸로 해서 비슷하게 처리, 나라마다 가져다두고 가까운곳에서 땡겨옴)
      - 분산처리기
      - 분산데이터베이스
      - 통신네트워크

  • 분산데이터베이스 - 투명성 조건
      - 위치투명성 : 실제 위치를 모르고 엑세스 가능
      - 분할투명성 : 여러 단편으로 분할
      - 지역사상 투명성 : 각 지역시스템 이름과 무관하게 사용(Ex. 코리아1, 코리아2,,,,)
      - 중복투명성 :데이터의 중복을 사용자에게 숨김
      - 병행투명성 : 다수의 트랜젝션들이 동시에 실행되어도 영향을 주지 않음
      - 장애투명성 : 다양한 장애에도 트랜젝션 처리(서버 하나 나가도 괜찮아(

  • CAP 이론
    일관성(C) 가용성(A) 분단허용성(P)중 두가지만 가질 수 있다

  • 트랜잭션
    하나의 논리적 기능을 수행하는 작업단위
    성질(ACID)
      - Atomicity 원자성 : 모두 반영되거나 반영되지 않아야 한다
      - Consistency 일관성 : 트랜잭션의 완료 후, 데이터베이스가 일관된 상태를 유지해야 한다
      - Isolation 독립성 : 동시에 실행되는 여러 트랜잭션은 서로 간섭할 수 없다
      - Durability 영속성 : 결과는 시스템이 고장나도 영구적으로 반영되어야 한다


  • 트랜잭션 상태
      - 활동(active) : 트랜잭션 실행중
      - 실패(Failed) : 트랜잭션 실행에 오류가 발생하여 중단
      - 철회(Aborted) : 비정상적으로 종료되어 Rollback연산 수행
      - 부분완료(Partially Committed) :Commit 연산이 실행되기 직전의 상태
      - 완료(Committed): 트랜잭션이 성공적으로 완료된 상태

  • 절차형 SQL
    트리거 : 이벤트에 반응해 자동으로 실행
        Insert, Update, Delete를 했을때 다른테이블이 자동으로 바뀌는것

  • 병행제어
    여러 트랜잭션이 동시에 실행되면서도 데이터베이스의 일관성을 유지하는 기법
    병행제어를 안하면...
      - 갱신 분실(Lost Update) : 연산중 덮어쓰기가 된거, 날라간거
      - 비완료의존성(Uncommitted Dependency)
      - 모순성(Inconsistency)
      - 연쇄복귀(Cascading Rollback)

  • 병행제어 기법
      - 로킹 : 화장실문잠근거
      - 2단계 로킹 규약 
      - 타임스탬프 : 시간 정해놓기
      - 낙관적 병행제어 : 나중에 체크하기
      - 다중버전 병행제어

  • 회복기법
      - 로그기반 회복기법 : 지연갱신(REDO), 즉시갱신(REDO + UNDO)
      - 검사점회복기법(Checkpoint Recovery)
      - 그림자 페이징 회복기법(Shadow Paging Recovery) : 시작전 복사본 떠두기
      - 미디어 회복기법(Media Recovery) : CD백업
      - ARIES회복기법(Algorithems for Recovery and ~~~ : 그냥 알고리즘 쓴다


  • 시스템 소프트웨어
      - 로더 : 프로그램을 메모리에 적재
      - 링커 : 목적파일을 실행파일로 변환 ← 모으는거
      - 번역기 : 프로그래밍 언어를 다른언어로 변환 ← 기계어로 번역
      - 운영체제 : 하드웨어 관리와 통신 등 다양한 기능을 제공
  • 제어프로그램 - 감작데
      - 감시프로그램 : 프로그램 실행과 시스템상태 감시/감독
      - 작업관리 프로그램 : 스케줄 관리 및 시스템 자원 할당을 감당
      - 데이터관리 프로그램 : 데이터전송 및 파일조작을 관리

  • 운영체제 운영기법
      - 일괄처리 시스템Batch Processing
      - 실시간처리 시스템 Real-Time Processing
      - 다중프로그래밍시스템 Multi-Programming ← 우리컴퓨터
      - 시분할시스템 Time Sharing sys
      - 다중처리시스템 CPU 여러개
      - 다중모드시스템 Multi-Mode
      - 분산처리시스템

  • 유닉스 파일 시스템 - 장비까지 묶어팔아서 고가임, 기계 다루는데 씀
      - 부트블록 : 부팅 시 필요한 코드 저장
      - 슈퍼블록 : 전체파일 시스템에 대한 정보
      - I-node 블록 : 파일이나 디렉토리에 대한 모든 정보(데이터블록이 어디있는지 가르킴,
                            우리가 삭제하는거는 이거임)
      - 데이터블록 : 실제 파일 데이터가 저장
    파일디스크립터(File Descriptor) : 유닉스가 알아서 만듦
      - 유닉스시스템에서 파일에 접근할 때 사용

  • 기억장치 관리 전략
      - 반입(Fetch)전략 : 요구반입, 예상반입
      - 배치(Placement)전략 : 최초(First)적합, 최적(Best Fit)적합, 최악(Worst Fit)접합
      - 교체(Replacement)전략 : FIFO(선입선출), OPT(예상, 계산X), LRU(최근 안쓴거), LFU(참조 가장 덜된거), NUR(참조와 변형 횟수 세서 교체), SCR(FIFO 개선)

  • 단편화
    주기억장치에 프로그램 할당과 반납시 발생하는 빈공간
      - 내부단편화
      - 외부단편화

단편화 해결법
  - 통합(Coalescing)기법 : 인접한 분할 공간
  - 압축(Compaction)기법 : 분산된 여러 단편화 공간
  - 재배치기법(Reloaction) : 프로그램의 주소를 새롭게 지정

  • 가상기억장치
    보조기억장치의 일부를 주기억장치처럼 사용하는 기법
      - 페이징기법 : 같은크기의 블록, 내부단편화 발생
      - 세그먼테이션 기법 : 가변크기의 블록, 외부단편화 발생

    기타용어
      - 페이지폴트 : 필요한 페이지가 주기억장치에 없는 상황
      - 지역성 : 프로세스가 실행되는동안 일부페이지만 집중 참조(시간지역성, 공간지역성)
      - 워킹 셋 : 일정시간동안 자주 참조되는 페이지의 집합
      - 스래싱 : 프로세스 처리 시간보다 페이지교체에 소요되는 시간이 더 많아지는 현상
  • 프로세스
    컴퓨터에서 실행중인 프로그램
      - 코드영역 : 실행할 프로그램의 코드가 저장
      - 데이터영역 : 전역변수 정적변수
      - 스택영역 :  지역변수와 함수의 매개변수
      - 힙영역 : 동적할당

  • 스레드 : 프로그세스 내에서 실행되는 흐름의 단위

  • IPC(InterProcess Communicatiopn, 프로세스 간 통신)
    프로세스들이 서로 데이터를 주고받거나 상태조정
  • PCB(Process Control Block, 프로세스 제어 블록)
    운영체제가 프로세스의 정보를 저장하는 공간
  •   - 문맥교환(COntext Switching)
  • 하나의 프로세스가 cpu 사용을 마치고 다른 프로세스가 사용하도록 하는거
  • 프로세스 스케줄링
    메모리에 올라온 프로세스 중 어느프로세스를 먼저 사용할지 순서를 정하는거
      - 선점형 스케줄링(Preemptive) : 운영체제가 실행중에 CPU를 강제로 가져오는거
    RoundRobin, SRT, MLQ, MLFQ
      - 비선점형 스케줄링(Non-”) : 그런권한 없음
    FCFS, SJF, HRN, 우선순위, 기한부등

  • 기아현상 / 에이징기법
      - 기아현상 : 우선순위가 낮은 프로세스가 무한정 기다리는거
      - 에이징기법 :기아현상을 해결하기 위한 기법
    선점형 : SRT, MLQ
    비선점형 : HRN, 우선순위

  • 병행프로세스
    두개이상의 프로세스가 동시에 존재하며 실행상태에 있는 것
    한정된 자원에 대한 사용순서 등의 문제가 발생할 수 있다
    해결책
      - 임계구역 : 오직 하나만 접근 가능
      - 상호배제기법(데커, 피터슨, 다익스트라, 램포트의 베이커리)
      - 동기화기법(세마포어(들어가나? 나와라), 모니터(프로그래밍단에서 제어))

  • 교착상태
    프로세스가 자원을 점유한 상태에서 다른 프로세스의 자원을 요구하며 무한정 기다리는 현상
    발생요건
      - 상호배제(Mutual Exclusion)
      - 점유와 대기(Hold & Wait)
      - 비선점(Nonpreemption)
      - 환형대기(Circular Wait)

    해결법
      - 예방, 회피(은행원 알고리즘 : 은행에서 대출해줄때, 잔액만큼 조절하는거), 발견, 회복

  • 디스크 스케줄링
    하드디스크에 저장된 데이터에 접근하기 위헤 데이터헤드의 움직임을 최적화
      - FCFS
      - Shortest Seek Time First
      - SCAN, C-SCAN :있는위치부터 처리 / 한쪽을 끝까지, 다시 처음으로 되돌아가서 다시
      - LOOK, C-LOOK : 요청있는지 없는지 계산하고, SCAN처럼 작동
      - N-STEP SCAN : 보다가 나중에 처리하는거, 특히 스캔하고 안헷갈리게
      - 에션바흐 기법(Eschenbach) :항공기에서 사용하는 그런거

  • 스토리지
    데이터를 저장하는 저장소
      - DAS : 컴터에 바로 연결
      - NAS : 네트워크에 연결
      - SAN : 전용 네트워크로 연결, 광채널

  • RAID
      - 0 : 스트라이핑
      - 1 : 미러링
      - 2 : 해밍코드
      - 3 : 디스크하나가 패리티 저장용
      - 4 : 3과 유사하나 블록단위 분산 저장
      - 5 : 각 디스크에 패리티 정보 포함
      - 6 : 두개의 패리티정보를 디스크에 분산 저장

  • 네트워크 토폴로지(Network Topology)
      - 계층형(Tree) : 계층적구조
      - 버스형(Bus) : 모든노드가 하나의 중앙버스라인에 연결
      - 성형(Star) : 모든 노드가 중앙에 연결
      - 링형(Ring) : 순환형태로 인접노드와 연결
      - 망형(Mesh) :서로 광범위하게 연결

  • 데이터전송
      - 아날로그/디지털 전송
      - 단방향 : 한쪽방향
      - 반이중 : 양쪽 다 전송은 가능한데, 한번에 한쪽만, 무전기
      - 전이중 : 양쪽 다 실시간 전송 가능
      - 동기식(syn, stx, etx) : 시작을 딱 맞춰서 하나씩 보내는거 syn은 하나씩, stx : start,etx: 끝
      - 비동기식(start, stop) : 그때끄때 보내는거

  • LAN : 가까운범위 한정된 망
    베이스밴드 : 근거리
    브로드밴드 : 원거리

  • 802.X
    .1 : LAN의 전체 구성
    .2 : LLC에 대한 규약
    .3 : CSMA/CD, 유선랜 → 충돌예방
    .4 : 토큰, 버스
    .5 : 토큰 링
    .11 : CSMA/CA, 무선랜
    .15 : 무선 개인 통신망(WPAN)표준, 블루투스

  • HDLC
    데이터링크 계층에서 사용되는 비트 지향 프로토콜
    프레임을 전송함
      - 프레임구조 : 플래그, 주소필드, 제어필드, 데이터, FCS(오류체크)
      - 프레임유형 :정보프레임(데이터), 감독프레임(오류 및 제어), 비순서프레임(추가제어목적)
      - 스테이션 : 주국(명령), 종국(응답만), 혼성국
      - 전송모드 :
        - 정규응답모드 : 하나의 주국과 한개 이상의 종국
        - 비동기 균형 모드 : 모든 단말이 주국 기능을 수행
        - 비동기 응답 모드 : 종국도 자체적으로 데이터전송을 시작할 수 있는 모드
  •  - 회선교환 : 옛날 전화국에서 쓰는거
    패킷교환을 쓰는 이유 : 실시간임
  • 다중화
    하나의 통신 회선을 여러 가입자가 동시에 사용할 수 있게
      - 주파수 분할 다중화기(Frequency Division Multiplexer) : 중간에 가드밴드를 둬서 낭비
      - 시분할 다중화기(TDM, Time Div)
          - 동기식 / 비동기식(지능형 다중화, 통계적 시분할)
             보통 동기식이 좋은데, 여긴 비동기식이 좋아, 안쓰면 할당안해서 낭비안함

      - 코드분할 다중화(CDM, Code Div, CDMA : 퀄컴에서 갖고있는거)
      - 파장 분할 다중화(WDM, Wavelength Div) : 광섬유
      - 공간 분할 다중화(SDM, Space-Div)
     역다중화기(하나의 고속채널을 여러개의 저속처널로 나눠주기), 집중화기(그 반대, 여러개를 하나로)

  •  IP주소 분류
    IPv4
      - 유니캐스트(1:1), 멀티캐스트(1:다), 브로드캐스트(공지같은거)
    IPv6
      - 유니캐스트, 멀티캐스트, 애니캐스트(진보된 브로드캐스트, 옆사람에게 이야기하고..이런거)

  • IP주소 클래스
      - A클래스 : 0으로 시작
      - B클래스 : 10으로 시작
      - C클래스 : 110으로 시작

  • IPv6
    차세대 인터넷 프로토콜 주소
    128비트, 16비트로 8부분, 128비트, 콜론:으로 구분
    IPv4~IPv6 전환기술
      - 듀얼스택 : 두개 다 가능
      - 터널링 : Ipv6를 4로 포장
      - 주소 변환 : 변환하는건

  • NAT(Network Address Translation)
    사설IP를 공인IP로 변환
      - Static NAT : 공인Ip와 사설 IP를 1:1로 매칭
      - Dynamic NAT : 여러 공인IP를 사설IP와 매칭
      - PAT(Port Address Translation) : 포트번호 이용 구분

  • 관련기술
      - DNS : Domain Name System : 도메인이름을 IP주소로 변환하거나 그 반대
      - QoS : 트래픽 성능과 속도 보장
      - VPN : 공용네트워크에서 사설망 구축
      - DHCP : 네트워크 장치를 자동으로 IP주소를 할당하는 프로토콜

  • 프로토콜 : 컴퓨터나 통신장비간 원할한 데이터 교환을 위한 표준화된 통신 규약
      - 구문(Syntax) : 데이터의 형식, 부호화, 신호레벨
      - 의미(Semantics) : 정보전송을 위한 협조사항 및 오류 관리 제어 정보
      - 타이밍(Timing) : 통신속도, 메세지 속도 제어

  • 흐름제어
    수신측의 처리 흐름에 맞춰 송신측에서 데이터의 전송량이나 속도 제어
      - Stop and Wait
      - Sliding Window
      - Piggybacking(피기배킹) : 양방향 통신에서 정보프레임과 응답프레임을 동시에 교차전송

  • 오류제어
    전송중 발생하는 오류를 검출하고 정정
    ARQ 종류
      - Stop and Wait ARQ
      - GO Back N ARQ  : 4번에서 오류나면, 4번부터 다시 전송
      - Selective Repeat ARQ
      - Adaptive ARQ : 동적으로하는겨
    오류원인 : 감쇠, 지연왜곡, 상호변조잡음, 충격잡음 

  • 오류제어 방식
      - 전진오류수정(FEC, Forward Error Correction): 지가 고쳐버리는거, 해밍코드, 상승코드
      - 후진오류수정(BEC) : 오류발생시 재전송 요구, 패리티검사, CRC, 블록합

  • OSI 7계층
    응용
    표현 : 압축
    세션 : 연결
    전송 : 양 종단간 → 세그먼트
    네트워크 : 빠르게 → 패킷 / ROUTER
    데이터링크 : 인접한 노드들 간 신뢰성 → 프레임 / SWITCH, BRIDGE
    물리 : 그냥 데이터쏴주는겨, 비트이용 / NIC, HUB, REPEATER

  • 백본
    기간망으로 알려진 대규모 패킷 통신망
    백본스위치 :모든패킷이 지나가는역할
      - L2 : 데이터링크, 집선장치, 똘똘한 허브
      - L3 :  인터넷, 라우터역할
      - L4 : 전송, 로드밸런싱
      - L7 : 응용, 보안장비
  •  정보보안요소
    기밀성 : 인가된 사용자만 접근
    무결성 : 인가된 사용자가 인가된 방법으로만 변경
    가용성 : 정보자산에 언제든지 공격, DOS공격 등 가용성 해치는거
    인증 : 내가 쓸 수 있는사람인가?
    부인방지 : 오리발 금지

  • AAA
    인증(Authentication) : 신원확인
    권한부여(Authorization):권한과 서비스 허용
    계정관리(Accounting) : 사용자의 자원 사용 정보를 수집

  • 인증제도
    ISMS(정보보호관리체계)
    PIMS(개인정보보호관리체계)
    ISMS-P(정보보호 및 개인정보보호 관리체계
    ITSEC -유럽
    TCSEC -미국
    CC -국제표준

  • Secure SDLC
    CLASP(Comprehensive, Lightweight, Application Security Process)
    SDLC 초기단계
    MS-SDL :마소
    Seven Touchpoints : 보안의 모범사례를 SDLC에 통합

  • 암호 알고리즘 용어
    평문 : 해독가능
    암호문 : 해독불가능
    암호화 : 평문을 암호문
    복호화 :암호문을 평문
    전자서명 : 나를 인증
    양방향 암호화 :암호문에서 평문 왔다갔다
    단방향 암호화 : 해쉬

  • 블록암호 알고리즘
    DES : 64비트 블록, Feistel 구조
    3-DES : 2개의 키, 암호화 복호화 Feistel
    AES : 128비트 블록, SPN구조
    SKIPJACK : 64비트 블록, Feistel 변형
    IDEA : 64비트 블록, Feistel+SPN구조 (스위스)
    SEED(한국) 128비트 블록 Feistel 구조
    ARIA(한국) 128비트 블록 SPN구조
    LEA(한국)128비트 블록 SPN구조

  • 스트림암호알고리즘
    LFSR: 선형 피드백 시프트 레지스터
    RC4 : 인터넷보안프로토콜에서 널리사용
    A5 : GSM 통신

  • 공개키암호 : 
    소인수분해 RSA, Rabin
    이산대수 : Diffie-Hellman, DSA, ELGamal
    타원곡선 : ECC(이산대수도 좀 포함)
  • 단방향 알고리즘
    MD5 : 빠른속도, 취약점발견
    SHA : NIST에서 개발한 해시함수
    HAS-160 : 국산 해시함

  • 해시함수의 결점
      - 무차별대입공격(Brute-Force Attack) : 키 스트레칭으로 보완
      - RainbowTable 공격 : 솔팅

  • 전자우편 보안
    PGP : Phil Zimmerman
    PEM : 메세지 내용 보호
    S/MINE : MINE에 암호화 추가
    DKIM:메일 발신자 인증, 발신정보 위장 방
  • 인증방식
    계정정보를 헤더에 넣거나
    Cookie/Session방식
    토큰기반(JWT)
    OAuth : 웹서비스에 대한 제한된 접근 권한을 안전하게
    SSO : Single Sign-On
    커버로스 : 사용자와 서비스간의 인증을 안전하게 관리하기위한 프로토콜
    아이핀 : 주민등록번호 대체
  • 접근통제 모델
    벨라파둘라 모델 : 기밀성
    비바모델 : 무결성
    클락윌슨 : 업무처리, 무결성
    만리장성 : 이해충돌 방지

  • 보안취약점 점검 분류
      - 관리적관점 , 기술적관점, 물리적관점

  • 보안관제 : 24시간 전달되는 패킷 관측, 침해시 CERT팀이 대응

  • 통합로그 분석 : 
    ESM(Enterprise Security Management)
    SIEM(Security Information & Event Management) : 빅데이터 이런거 나온다

  • 보안솔류션
    방화벽 : 침입차단
    웹방화벽 : 웹 기반 공격
    IDS침입탐지 : 오용탐지, 이상탐지
    IPS침입방지 : 탐지 및 차단
    데이터유출방지(DLP) 내부정보 유출방지
    가상 사설 통신망(VPN) : 공중네트워크를 전용회선으로 사용
    NAC(Network Access Control): 접근통제
    SOAR : 자동화대응
    Sandbox : 응용프로그램이 가상환경에서 독립적으로 실행
    FDS(Fraud Detection System) : 전자금융거래 이상탐지
    Proxy Server: 클라이언트 대신 접속

  • 방화벽
    DMZ구간 : 내부네트워크인데 외부에서도 가능한거
반응형