본문 바로가기
정보처리기사/필기

정보처리기사 필기 공부 4과목 (프로그래밍 언어 활용)

by 애기 개발자 2024. 1. 31.
반응형

2장 프로그래밍 언어 활용

연산자

연산자 우선순위

증감 연산자(++,--) -> 산술 연산자(* / %) -> 산술 연산자 (+, -)

 

산술 -> 시프트 -> 관계 -> 논리

 

a = 5

++a : 6

--a : 4

a++ : 5 (이후 6)

a-- : 5 (이후 4)

비트 연산자

연산자 의미 비고
& and 모든 비트가 1일 때만 1
^ xor 모든 비트가 같으면 0, 하나라도 다르면 1
| or 모든 비트 중 한 비트라도 1이면 1
~ not 0이면1, 1이면 0
<< 왼쪽 시프트 비트를 왼쪽으로 이동
>> 오른쪽 시프트 비트를 오른족으로 이동

 

포인터

 

 

 

 

라이브러리

C언어

  • stdio.h : 데이터 입출력
  • math.h : 수학 함수 제공
  • string.h : 문자열 처리 (strlen, strcpy, strcmp, strcat 등)
  • stdlib.h : 자료형 변환, 난수발생, 메모리 할당 등 (atoi, atof, srand, rand, malloc, free 등)
  • time.h : 시간 처리 (time, clock 등)

Java

  • java.lang : 기본적인인터페이스, 자로형, 예외 처리 등, import 없이 사용 가능 (String, System, Math 등)
  • java.util : 날자처리, 난수 발생, 복잡한 문자열 (Date, Calender, RAndom, StringTokenizer 등)
  • java.io : 파일입출력 (InputStream, OutputStream 등)
  • java.net : 네트워크 관련 기능 (Socket, URL, InetAddress 등)
  • java.awt : 사용자 UI 관련 (Frame, Panel, Dialog, Button, Checkbox 등) 

3장 응용 SW 기초 기술 활용

운영체제의 목적

  • 처리능력(Throughput) : 일정 시간 내에 시스템이 처리하는 일의양
  • 반환 시간 (Turn Around Time) : 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때 까지 걸린 시간
  • 사용 가능도 (Availability) : 시스템을 사용할 필요가 있을 때 즉시 사용 가능한정도
  • 신뢰도 (Reliability) : 시스템이 주어진 문제를 정확하게 해결하는 정도

운영체제 구성

  • 제어 프로그램
    • 감시 프로그램
    • 작업 관리 프로그램
    • 데이터 관리 프로그램
  • 처리 프로그램
    • 언어 번역 프로그램
    • 서비스 프로그램

운영체제 기능

  • 프로세서, 기억장치, 입출력장치, 파일 및 정보 등의 자원 관리
  • 자원을 효율적으로 관리하기 위해 스케줄링 기능 제공
  • 사용자와 시스템간 인터페이스 제공
  • 자원 보호 기능

 

UNIX / LINUX / MacOS

UNIX 특징

  • 대부분 C언어로 작성되어 이식성이 높으며 장치, 프로세스 간 호환성 높음
  • 멀티유저, 멀티테스킹 지원
  • 트리구조의 파일 시스템
  • 프로그램 개발 용이

시스템 구성

커널

  • unix의 핵심 부분
  • 하드웨어를 보호(캡슐화), 프로그램들과 하드웨어 간의 인터페이스 역할
  • 프로세스 관리, 기억장치 관리, 파일 관리, 입출력 관리, 데이터 전송 및 변환 등

  • 사용자의 명령어를 인식하여 프로그램을 호출하고, 명령을 수행하는 명령어 해석기
  • 시스템과 사용자 간의 인터페이스
  • 주기억장치에 상주하지 않고, 명령어가 포함된 파일형태로 존재

파일 디스크립터

  • 파일 제어 블록 (FCB; File Control Block) 이라 함
  • 파일마다 독립적으로 존재, 시스템에 따라 다른 구조를 가질 수 잇음
  • 보조기억장치에 저장되어 있다가 해당 파일이 open 될 때 주기억장치로 옮겨짐
  • 파일 시스템이 관리하여 사용자가 직접 참조 불가능

 

기억 장치 관리의 개요

기억 장치 관리 전략

반입(Fetch)전략, 배치(Placement)전략, 교체(Replacement) 전략

 

반입 전략

  • 요구 반입 : 실행중인 프로그램이 특정 프로그램이나 데이터 등의참조를 요구할 때 적재
  • 예상 반입: 미리 예상하여 적재

배치 전략

  • 최초 적합(First Fit) : 빈 영역중에서 첫 번째 분할 영역에 배치
  • 최적 적합(Best Fit) : 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치
  • 최악 적합(Worst Fit) : 단편화를 가장 많이 남기는 영역에 배치

교체 전략

  • FIFO, OPT, LRU, LFU, NUR, SCR 등

 

페이지 교체 알고리즘

세그멘테이션(Segmentation) 기법

  • 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법
  • 기억장치의 사용자 관점을 보존
  • 기억공간을 절약하기 위해 사용
  • 내부단편화는 발생하지 않으나 외부 단편화 발생

OPT(OPTimal replacement, 최적 교체)

  • OPT는 앞으로 가장오랫동안 사용하지 않을 페이지를 교체
  • 벨레이디(Belady)제안, 페이지 부재 횟수가 가장 적게 발생하는 효율적인 알고리즘

FIFO (First In First Out)

  • 가장 오래 있었던 페이지 교체

Page Fault = 6회

 

 

LRU (Least Recently Used) 알고리즘

  • LRU 알고리즘은 가장 오랫동안 사용하지 않은 페이지를 교체
  • 결함 : 주기억장치의 페이지가 변동되는것.

예)

4개의 페이지를 수용할 수 있는 주기억장치, 초기에는 모두 비어 있음.

페이지 참조 순서 : 1, 2, 3, 1, 2, 4, 1, 2, 5

 

 

결함 총 5회 발생.

 

  1. 참조 1: 캐시에 없으므로, 페이지 결함 발생. 캐시 상태: [1]
  2. 참조 2: 캐시에 없으므로, 페이지 결함 발생. 캐시 상태: [1, 2]
  3. 참조 3: 캐시에 없으므로, 페이지 결함 발생. 캐시 상태: [1, 2, 3]
  4. 참조 1: 이미 캐시에 있음.
  5. 참조 2: 이미 캐시에 있음.
  6. 참조 4: 캐시에 없으므로, 페이지 결함 발생. 캐시가 아직 가득 차지 않았으므로, 4를 추가. 캐시 상태: [1, 2, 3, 4]
  7. 참조 1: 이미 캐시에 있음.
  8. 참조 2: 이미 캐시에 있음.
  9. 참조 5: 캐시에 없으므로, 페이지 결함 발생. 가장 오래 전에 사용된 3을 제거하고 5를 추가. 캐시 상태: [1, 2, 4, 5]

LFU (Least Frequently Used)

  • 사용 빈도가 가장 적은 페이지 교체
  • 화발하게 사용되는 페이지는 사용회수가 많아 교체되지 않고 사용된다.

NUR (Not Used Recently)

  • LRU와 비슷한 알고리즘, 최근에 사용하지 않은 페이지를 교체
  • 최근 사용 여부를 알기 위해 참조비트와 변형비트가 사용됨

SCR(Second Chance Replacement, 2차 기회 교체)

  • 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지
  • FIFO 기법의 단점 보완

 

 

가상기억장치 기타 관리 사항

페이지 크기가 작을 경우

  • 페이지 단편화감소, 한 개의 페이지를 주기억장치로 이동하는 시간이 줄어듦
  • 불필요한 내용이 주기억장치에 적재될 확률이 적어 효율적인 워킹 셋을 유지
  • Locality에 더 일치할수 있기 때문에 기억장치 효율 높아짐
  • 페이지 정보를 갖는 맵 테이블의 크기가 커지고, 매핑 속도 늦어짐
  • 디스크 접근 횟수가 많아져 입출력 시간 늘어남

페이지 크기가 클 경우

  • 맵 테이블 크기 작아짐, 매핑 빨라짐
  • 입출력 효율성 증가
  • 단편화 증가, 주기억 장치로 이동하는 시간 늘어남
  • 불필요한 내용 적재 가능성

Locality

  • 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있음
  • 시간 구역성이 이루어지는 기억장소
    • Loop, Stack, 부 프로그램(Sub Routine), Couning(1씩 증감)에 사용되는 변수(기억장소)
  • 공간 구역성이 이루어지는 기억장소
    • 배열 순회(Array Traversal, 배열 순례), 순차적 코드 실행, 변수 선언

워킹 셋(Working Set)

  • 프로세스가 일정 시간동안 자주 참조하는 페이지들의 집합

스래싱(Thrashing)

  • 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상

 

프로세스의 개요

프로세스

  • PCB를 가진 프로그램
  • 실기억장치에 저장된 프로그램
  • 프로세서가 할당되는 실체, 디스패치가 가능한 단위
  • 프로시저가 활동중인 것
  • 비동기적 행위를 일으키는 주체
  • 지정된 결과를얻기 위한 일련의 계통적 동작
  • 목적 또는 결과에 따라 발생되는 사건들의 과정
  • 운영체제가 관리하는 실행 단위

PCB (Process Control Block, 프로세스 제어 블록)

  - Task Control Block, Job Control Block 이라고도 함

PCB에 저장되어 있는 정보

  • 프로세스의 현재 상태
  • 포인터
  • 프로세스 고유 식별자
  • 스케줄링 및 프로세스의 우선순위
  • CPU 레지스터 정보
  • 주기억장치 관리 정보
  • 입출력 상태 정보
  • 계정 정보

 

프로세스 상태 전이

  • 제출 : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
  • 접수 : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
  • 준비 : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
  • 실행 : 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
  • 대기, 보류, 블록 : 프로세스에 입출력처리가 필요하면 현재 실행중인 프로세스가 중단되고, 입출력 처리가 완료될 때까지 대기하고 있는상태
  • 종료 : 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태
  • *Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정

 

스레드

  • 프로세스 내에서의 작업 단위
  • 하나의 프로세스에 하나의 스레드 - 단일 스레드
  • 하나의 프로세스에 하나 이상의 스레드 - 다중 스레드
  • 경량 (Light Weight) 프로세스라고도 함
  • 동일 프로세스 환경에서 서로 독립적인 다중 수행 가능
  • 기억장소 및 자원의 낭비 줄어듬
  • 하나의 프로세스를 여러 개의 스레드로 생성하여 병행성 증진

 

사용자 수준의 스레드

  • 사용자가 만든 라이브러리를 사용하여 스레드를 운용
  • 커널 모드로의 전환이 없어 오버헤드가 줄어듬
  • 속도는 빠르지만 구현이 어려움

커널수준 스레드

  • OS의 커널에 의해 스레드 운용
  • 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기하지 않으므로 시스템 성능 향상
  • 여러 스레드가 동시에 커널 접근 가능
  • 스레드의 독립적인 스케줄링 가능
  • 구현이 쉽지만 속도가 느림

 

스케줄링

스케줄링 종류

  • 장기 스케줄링: 어떤 프로세스가 시스템의 자원을 차지하는가, 작업스케줄링, 상위 스케줄링, 작업 스케줄러
  • 중기 스케줄링 : 어던 프로세스들이 CPU를 할당받는가
  • 단기 스케줄링 : 프로세스가실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업, 프로세스 스케줄링, 하위 스케줄링

 

문맥 교환 (Context Switching)

 - 하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생

 - 새로운 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스 상태 정보를 저장하고, 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업

 

프로세서 스케줄링 (단기 스케줄링) 기법

비선점(Non-Preemptive) 스케줄링

  • 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링
  • 프로세스가 CPU를 할당받으면 해당 프로세스가 완료 될 때 까지 CPU 사용
  • 모든 프로세스에 대한 요구를 공정하게 처리
  • 프로세스 응답 시간의 예측 용이, 일괄 처리 방식에 적합
  • 중요한 작업이 중요하지 않은 작업을 기다리는 경우가 발생
  • FCFS(FIFO), SJF, 우선순위, HRN, 기한부 알고리즘

선점(Preemptive) 스케줄링

  • 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링
  • 우선순위가 높은 프로세스를 빠르게 처리
  • 많은 오버헤드 발생
  • 빠른 응답시간을 요구하는 대화식 시분할 시스템에 사용
  • Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등 알고리즘

  

스케줄링 알고리즘

FCFS (Fisrt Come First Service, = FIFO)

프로세스 번호 P1 P2 P3
실행 시간 20 4 6

 

평균 실행 시간 : (20 + 4 + 6) / 3

평균 대기 시간 : (0 + 20 + 24) / 3

평균 반환 시간 : (20 + 24 + 30) / 3

 

SJF (Shortest Job First, 단기 작업 우선)

프로세스 번호 P1 P2 P3
실행 시간 20 4 6

 

평균 실행 시간 : (4 + 6 + 20) / 3

평균 대기 시간 : (0 + 4 + 10) / 3

평균 반환 시간 : (4 + 10 + 30) / 3

 

HRN (Hightest Response-ratio Next)

  • 비선점 스케줄링
  • 실행시간이 긴 프로세스에 불리한 SJF를 보완하기 위해 대기시간 및 서비스 시간을 이용
  • 긴 작업과 짧은 작업간의 지나친 불평등을 해소할 수 있다.
  • 우선순위를 계산 숫자가 높은것부터 낮은순으로 순위 부여
  • 우선순위 = (대기시간 + 서비스시간) / 서비스시간
  • 우선순위 값이 클수록 우선순위가 높다.
프로세스 번호 P1 P2 P3
실행 시간 20 4 6
대기 시간 10 20 10
우선순위 계산 (20+10) / 20 / 1.5 (4+20)/4 = 6 (6+10)/6 = 2.6
우선순위 P2 -> P3 -> P1

 

 

운영체제 기본 명령어

Windows

  • DIR : 파일 목록 표시
  • COPY : 파일 복사
  • TYPE : 파일의 내용 표시
  • REN : 파일 리네임
  • DEL : 파일 삭제
  • MD : 디렉터리 생성
  • CD : 디렉터리 위치 변경
  • CLS : 화면 지우기
  • ATTRIB : 파일 속성 변경
  • FIND : 찾기
  • CHKDSK : 디스크 상태 점검
  • FORMAT : 디스크 표면을 트랙과 섹터로 나누어 초기화
  • MOVE : 파일 이동

UNIX/LINUX

  • cat : 파일 내용 표시
  • chdir : 현재 사용할 디렉터리의 위치 변경
  • chmod : 파일의 권한 변경
  • chown : 소유자 변경
  • cp : 복사
  • exec : 프로세스 수행
  • find : 찾기
  • fork : 프로세스 생성
  • fsck : 파일 시스템 검사, 보수
  • getpid : 자신의 프로세스 아이디
  • getppdid : 부모 프로세스 아이디
  • ls : 현재 디렉터리 파일 목록
  • mount/unmount : 파일 시스템 마운트/마운트해제
  • rm : 삭제
  • uname : 시스템의 이름과 버전, 네트워크 호스트 명 등 시스템 정보 표시
  • wait : fork 후 exec에 의해 실행되는 프로세스의 상위 프로세스가 하위 프로세스 종료 등의 event 기다림

 

 

인터넷

IP주소

  • 숫자로 8비트씩 4부분, 총 32비트
  • A Class : 국가나 대형 통신망에 사용 (0~127) $ 2^{24} $
  • B Class : 중대형 통신망 (128~191) $ 2^{16} $
  • C Class : 소규모 통신망 (192~223) $ 2^{8} $
  • D Class : 멀티캐스트용 (224~239)
  • E Class : 실험적 주소로 공용되지 않음

서브네팅 (Subnetting)

  • 4바이트의 IP 주소 중 네트워크 주소와 호스트 주소를 구분하기 위한 비트를 서브넷 마스크라고하며, 이를 변경하여 네트워크 주소를 여러 개로 분할하여 사용

예) 192.168.1.0/24 네트워크를 FLSM 방식을 이용하여 3개의 Subnet으로 나누시오 (IP Subnet-Zero 적용)

192.168.1.0/24 의 서브넷마스크는 1의 개수가 24개, C 클래스에 속하는 네트워크

11111111 11111111 11111111 00000000
255 255 255 0

 

서브넷 마스크를 Subnet으로 나눌 때는 버스넷 마스크가 0인부분, 마지막 8비트를 사용

Subnet으로 나눌때 3개의 Subent으로 나누는 것은 크게 3가지를 따로 나누는것.

즉 3을 표현하기위한 이진수 11을 할당하기 위한 앞 2자리를 제외한 000000 6자리를 호스트로 구성하면 됨

네트워크(ID) 호스트 수 IP주소 범위
1(00) 64 192.168.1.0(00000000) ~ 63(00111111)
2(01) 64 192.168.1.64(01000000) ~ 127(01111111)
3(11) 64 192.168.1.128(11000000) ~ 191(11111111)

 

 

IPv6

  • IPv4의 주소 부족 문제를 해결하기 위해 개발
  • 16비트씩 8부분, 총 128비트, 각 부분을 16진수로 표현, 콜론(:)으로 구분
  • 주소의 확장성, 융통성, 연동성 뛰어남
  • 인증성, 기밀성, 무결성
  • 패킷 크기에 제한 없음

IPv4를 IPv6로 전환하는 방법

  • 듀얼 스택(Dual Stack) : 호스트에서 IPv4와 IPv6을 모두 처리할 수 있도록 두개의 스택을 구성
  • 터널링(Tunneling) : IPv6망에서 인접한 IPv4망을 거쳐 다른 IPv6망으로 통신할 때 IPv4망에 터널을 만들어 패킷이 통과할 수 있도록 하는 것
  • IPv4/IPv6 변환 : 헤더 변환, 전송 계층 릴레이 방식, 응용 계층 게이트웨이 방식

IPv6 구성

  • 유니캐스트(Unicast) : 단일 송신자와 단일 수신자 간의 통신 (1:1 통신)
  • 멀티캐스트(Multicast) : 단일 송신자와 다중 수신자 (1:다 통신)
  • 애니캐스트(Anycast) : 단일 송신자와 가장 가까이 있는 단일 수신자 (1:1 통신)

 

 

OSI 참조 모델

하위 1~3계층

상위 4~7계층

물 - 데 - 네 - 전 - 세 - 표 - 응

 

물리 계층

  • 전송에 필요한 두 장치간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의
  • 프로토콜 : RS-232C, X.21 등

데이터 링크 계층

  • 2개의 인접한 개방 시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할수 있도록 한다.
  • 흐름제어, 프레임 동기화, 오류 제어, 순서 제어 등을 수행
  • 프로토콜 : HDLC, LAPB, PPP, LLC 등

네트워크 계층

  • 개방 시스템들 간의 네트워크 연결을 관리(네트워크 연결을 설정, 유지, 해제)하고 데이터를 교환 및 중계
  • 경로 설정, 트래픽 제어, 패킷 정보전송 등 수행

전송 계층

  • 종단 시스템(End-to-End) 간에 투명한 데이터 전송을가능하게 한다.
  • 전송 연결 설정, 데이터 전송, 연결 해제 기능, 주소 설정, 다중화(데이터의 분할과 재조립), 오류 제어, 흐름 제어 등
  • TCP, UDP 등 표준이 있음

  세션 계층

  • 송수신 측 간의 관련성을 유지하고 대화 제어를 담당
  • 대화 구성 및 동기 제어, 데이터 교환 관리 기능
  • 송수신측 간의 데이터 전송, 연결 해제, 동기 처리 등의 대화를 관리하기 위해 토큰 사용

표현 계층

  • 서로 다른 데이터 표현 형태를 갖는 시스템 간의 상호 접속을 위해 필요한 계층
  • 코드 변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보 형식 변환, 문맥 관리 등

응용 계층

  • 응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 서비스 제공
  • 사용자(응용 프로그램)가 OSI 환경에 접근 할 수 있도록 서비스 제공

 

네트워크 관련 장비

네트워크 인터페이스 카드(NIC; Network Interface Card)

  • 컴퓨터와 컴퓨터, 컴퓨터와 네트워크를 연결하는 장치
  • 이더넷 카드(LAN 카드), 네트워크 어댑터 라고 함

허브(Hub)

  • 사무실이나가까운 거리의 컴퓨터들을 연결하는 장치
  • 신호 증폭기능을 하는 리피터 역할도 포함
  • 더미허브, 스위칭 허브

리피터(Repeater)

  • 전송되는 신호가 전송 선로의 특성 및 외부 충격등의 요인으로 인해 왜곡되거나 약해질 경우 원래의신호 형태로 재생하여 다시 전송하는 역할
  • OSI의 물리계층
  • 전송 거리 연장, 배선의 자유도를 높이기 위해 사용

브리지(Bridge)

  • LAN과 LAN을 연결하거나 LAN 안에서의 컴퓨터 그룹(세그먼트)을 연결하는 기능
  • 데이터 링크 계층 중 MAC 계층에서 사용되므로 MAC 브리지라고도 함
  • 트래픽 병목 현상 줄임
  • 네트워크를 분산적으로 구성하여 보안성 높임
  • 브리지를 이용한 서브넷 구성시 전공 가능한 회선 수는 브리지가 n개일 때, n(n-1)/2 개

스위치(Switch)

  • 브리지와 같이 LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치
  • HW기반으로 전송 속도가 빠름
  • 포트마다 각기 다른 전송 속도 제어 가능
  • OSI - 데이터 링크 계층

라우터(Router)

  • 브리지와 같이 LAN과 LAN의 연결 기능에 데이터 전송의 최적 경로를 선택하는 기능이 추가됨
  • 서로 다른LAN이나 WAN의 연결도 가능
  • OSI - 네트워크 계층

브라우터

  • 브리지와 라우터의 기능 모두 수행
  • 브리지는 내부 네트워크를 분리
  • 라우터는 외부 네트워크에 연결

게이트웨이(Gateway)

  • 전 계층(1~7 계층)의 프로토콜 구조가 다른 네트워크의 연결을 수행

  전처리기(FEP; Front End Processor)

  • 통신 회선 및 단말장치 제어, 메시지의 조립과 분해, 전송 메시지 검사 등을 미리 수행하여, 컴퓨터의 부담을 줄임
  • 호스트 컴퓨터와 단말장치 사이에 고속 통신 회선

 

 

TCP/IP

TCP(Transmission Control Protocol)

  • OSI - 전송 계층
  • 신뢰성 있는 연결형 서비스 제공
  • 패킷의 다중화, 순서 제어, 오류 제어, 흐름 제어 기능 제공
  • 스트림 전송 기능 제공
  • TCP 헤더에는 Source/Destination Port Number, Sequence Number, Acknowledgment Number, CheckSum 등 포함

IP(Internet Protocol)

  • OSI - 네트워크 계층
  • 데이터그램을 기반으로 하는 비연결형 서비스 제공
  • Best Effort 원칙에 따른 전송 기능
  • 패킷의 분해/조립, 주소 지정, 경로 선택
  • 헤더의 길이는 20Byte ~ 60Btye
  • IP 헤더에는 Version, Header Length, Total Packet Length, Header Checksum, Source IP Address, Destination IP Address 등 포함

TCP/IP 구조

OSI TCP/IP 기능
응용 계층
표현 계층
세션 계층
응용 계층 응용 프로그램 간의 데이터 송수신 제공
TELNET, FTP, SMTP, SNMP, DNS, HTTP 등
전송 계층 전송 계층 호스트들 간의 신뢰성 있는 통신
TCP, UDP
네트워크 계층 인터넷 계층 데이ㅓ터 전송을 위한 주소 지정, 경로 설정
IP, ICMP, IGMP, ARP, RARP
데이터 링크 계층
물리 계층
네트워크 액세스 계층 실제 데이터(프레임)를 송수신 하는 역할
Ethernet, IEEE 802, HDLC, X.25, RS-232C, ARQ 등

 

응용 계층 프로토콜

  • FTP (File Transfer Protocol)
    • 원격 파일 전송 프로토콜
  • SMTP (Simple Mail Transfer Protocol)
    • 전자 우편 전송 프로토콜
  • TELNET
    • 컴퓨터 원격 연결
    • 가상 터미널 (Virtual Termanal) 기능
  • SNMP (Simple Network Management Protocol)
    • TCP/IP 네트워크 관리 프로토콜
  • DNS (Domain Name System)
    • 도메인 네임을 IP주소로 매핑하는 시스템
  • HTTP
  • MQTT (Message Queuing Telemetry Transport)
    • 발행-구독 기반의 메시징 프로토콜, IoT에서 사용

 

전송 계층 프로토콜

  • TCP (Transmission Control Protocol)
    • 양방향 연결
    • 가상 회선 연결
    • 스트림 위주 전달(패킷 단위)
    • 신뢰성 있는경로 확립, 메시지 전송 감독
    • 패킷의 분실, 손상, 지연이나 순서가 틀린 것 등이 발생할 때 투명성이 보장되는 통신
    • TCP 프로토콜의 헤더는 기본적으로 20Byte ~ 60Byte
    • 선택적으로 40Byte를 추가하여 최대 100Byte 확장 가능
  • UDP (User Datagram Protocol)
    • 데이터 전송 전에 연결을 설정하지 않는 비연결형 서비스
    • TCP에 비해 단순한 헤더, 오버헤드가 적고, 전송 송속도가 빠름
    • 빠른 속도를 필요할 경우, 정기적으로 반복해서 전송할 경우 사용
    • 실시간 전송에 유리하며, 신뢰성보다는 속도가 중요할 때
    • UDP 헤더는 Source Port Number, Destination Port Number, Length, Checksum 등
  • RTCP (Real-Time Control Protocol)
    • RTP(Real-Time tranport Protocol) 패킷의 전송 품질을 제어하기 위한 제어 프로토콜
    • 세션에 참여한 각 참여다즐에게 주깆거으로 제어 정보 전송
    • 하위 프로토콜은 데이터 패킷과 제어패킷의 다중화(Multiplexing)를 제공
    • 데이터 전송을 모니터링하고 최소한의 제어와 인증 기능만 제공
    • RTCP 패킷은 항상 32비트의 경계로 끝남

 

인터넷 계층 주요 프로토콜

  • IP (Internet Protocol)
    • 전송할 데이터에 주소를 지정하고, 경로를 설정
    • 비연결형인 데이터그램 방식을 사용, 신뢰성 보장되지 않음(UDP같음)
  • ICMP (Internet Control Message Protocol), 인터넷 제어 메시지 프로토콜
    • IP와 조합하여 통신중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리
    • 헤더는 8Byte
  • IGMP (Internet Group Management Protocol, 인터넷 그룹 관리 프로토콜)
    • 멀티캐스트를 지원하는 호스트나 라우터 사이에서 멀티캐스트 그룹 유지를 위해 사용
  • ARP (Address Resolution Protocol, 주소 분석 프로토콜)
    • 호스트의 IP 주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소 (MAC주소)로 바꾼다
  • RARP (Reverse ARP)
    • ARP 반대

 

네트워크 액세스 계층 주요 프로토콜

  • Ethernet (IEEE 802.3)
    • CSMA/CD 방식의 LAN
  • IEEE 802
    • LAN을 위한 표준 프로토콜

 


 

 

IP 프로토콜

  • Header Length : IP 프로토콜의 헤더 길이를 32비트 워드 단위로 표시
  • Packet Length : 16 bits, IP헤더를 제외한 패킷 전체의 길이, $ 2^{16} - 1 $(65,535)
  • Time To Live : 송신 호스트가 패킷을 전송하기 전 네트워크에서 생존할 수 있는 시간을 지정한 것
  • Version Number : IP 프로토콜의 버전 번호를 나타냄

 

  • 주로 주소를 지정하고, 경로를 설정하는 기능을 함
  • 헤더 체크섬 제공
  • 패킷을 분할, 병합하는 기능을 수행
  • 비연결형 서비스 제공
  • Best Effort 원칙에 따른 전송 기능을 제공

 

UDP 프로토콜

  • 비연결형및 비신뢰성 전송 서비스 제공
  • 흐름 제어나 순서 제어가 없어 전송속도가 빠름
  • 수신된 데이터의 순서 재조정 기능을 지원하지 않음
  • 복구기능 없음
  • 단순한 헤더 구조로 오버헤드가 적음
  • TCP와같이 트랜스포트 계층에 존재  

 

RIP (Routing Information Protocol) 라우팅 프로토콜

  • 최단 경로 탐색에는 Bellman-Ford 알고리즘을 사용하는거리 벡터 라우팅 프로토콜
  • 라우팅 프로토콜을 IGP와 EGP로 분류했을 때 IGP에 해당
  • 최적의 경로를 산출하기 위한 정보로서 홉(거리 값)만을 고려하므로, RIP를 선택한경로가 최적의 경로가 아닌 경우가 많이 발생할 수 있다.
  • 소규모 네트워크 환경에 적합
  • 최대 홉 카운트를 15홉 이하로 한정 

 

 

Myers 구분 응집도

강함

  • 기능적 응집도 (Functional Cohesion)
  • 순차적 응집도 (Sequential Cohesion)
  • 교환적 응집도 
  • 절차적 응집도
  • 시간적 응집도 (Temporal Cohesion)
  • 논리전 응집도
  • 우연적 응집도 (Coincidental Cohesion)

약함

 

 

 

결합도 (Coupling)

  • 스탬프 결합도 - 두 모듈이 매개변수로 자료를 전달할 때, 자료구조 형태로 전달되어 이용될 때 데이터가 결합되어 있다고 한다.
  • 내용 결합도 - 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어있다고 한다. 
  • 공통 결합도 - 두 모듈이 동일한 전역 데이터를 접근한다면 공통결합 되어있다고 한다.
  • 결합도: 두 모듈간의 상호작용, 의존도 정도를 나타낸 것

 

  • Tip: 문제의 단어를 잘 파악하여 결합도를 유추 가능.
  • 내용 참조~ 자료참조~ 단어가 있으면 내용 결합도
  • 전역변수 단어가 있으면 공통 결합도 등

 

모듈화 (Modularity)

  • 독립적인 모듈이 되기 위해서는 응집도가 강해야하고, 결합도는 약해야 한다.
  • 응집도 : 모듈이 독립적인 기능으로 정의되어 있는 정도
  • 결합도: 모듈과 모듈 사이의 상호의존 또는 연관 정도 

 

 

 

#include <stdio.h>
int main(int argc, char *argv[]) {
	int a = 4;
    int b = 7;
    int c = a | b;
    
    print("%d", c);
    return 0;
}

 

& , | 와 같은 and, or 연산자는 2진법으로 푼다.

 

a = 4 = 0100

b = 7 = 0111

or 은 둘중 하나만 1이어도 1이기 때문에 a | b = 0111

즉, c = 0111 = 7

반응형

댓글