티스토리 뷰
공통 모듈 구현
결합도 (Coupling)
- 결합도 (Coupling)는 두 모듈 간의 상호작용, 또는 의존도 정도를 나타내는 것이다
- 모듈간의 결합도를 약하게 하면 모듈 독립성이 향상된다
- 결합도가 강할수록 품질이 낮으며, 시스템 구현 및 유지보수 작업이 어렵다
- 결합도는 낮을수록 Good = 독립적인 모듈
- 결합도 종류 #내공외제스자 (강→약)
- 내용 결합도 (Content Coupling)
- 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있다고 한다
- 공통 결합도 (Common Coupling)
- 두 모듈이 동일한 전역 데이터를 접근한다면 공통결합 되어 있다 (전역 변수)
- 외부 결합도 (External Coupling)
- 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도 (순차적)
- 제어 결합도 (Control Coupling)
- 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우이며, 하위 모듈에서 상위 모듈로 제어신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도현상이 발생하게 되는 결합도
- 스탬프 결합도 (Stamp Coupling)
- 두 모듈이 매개변수로 자료를 전달할 때, 자료구조 형태로 전달되어 이용될 때 데이터가 결합되어 있다
- 자료 결합도 (Data Coupling)
- 어떤 모듈이 다른 모듈을 호출하면서 매개 변수(파라미터)나 인수로 데이터를 넘겨주고, 호출 받은 모듈은 받은 데이터에 대한 처리 결과를 다시 돌려주는 결합도
- 내용 결합도 (Content Coupling)
응집도 (Cohesion)
- 한 모듈 내에 있는 처리요소들 사이의 기능적인 연관 정도를 나타낸다
- 응집도는 낮을수록 Good = 독립적인 모듈
- 응집도 종류 #기순통절시논우 (강→약)
- 기능적 응집도 (Functional Cohesion)
- 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우
- 순차적 응집도 (Sequential Cohesion)
- 모듈 내 하나의 활동으로부터 나온 출력 데이터(출력값)를 그다음 활동의 입력 데이터로 사용할 경우
- 통신적 응집도 (Communication Cohesion)
- 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우
- 절차적 응집도 (Procedural Cohesion)
- 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우
- 시간적 응집도 (Temporal Cohesion)
- 모듈 내 구성 요소들이 서로 다른 기능을 같은 시간대에 함께 실행하는 경우
- 논리적 응집도 (Logical Cohesion)
- 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우
- 우연적 응집도 (Coincidental Cohesion)
- 서로 간에 어떠한 의미 있는 연관관계도 지니지 않은 기능 요소로 구성되는 경우이며, 서로 다른 상위 모듈에 의해 호출되어 처리상의 연관성이 없는 서로 다른 기능을 수행하는 경우
- 기능적 응집도 (Functional Cohesion)
프로세스 (Process)
- 프로그램 카운터, 레지스터 같은 현재 사용되는 자원에 대한 정보를 가진다
- 실행을 위한 메모리 영역, 프로세서 제어 블록 등의 지원을 할당받은 상태의 프로그램
- 프로시저가 활동중인 것
- 비동기적 행위를 일으키는 주체
- 운영체제가 관리하는 실행 단위
- 실행 중인 프로그램
- PCB (Process Control Block)을 가진 프로그램
- 실기억장치에 저장된 프로그램
- 프로세서가 할당되는 실체로서, 디스패치가 가능한 단위
- 프로세스의 상태 전이도
- 프로세스의 상태
- 생성 (New)
- 준비 (Ready)
- 실행 (Running)
- 대기 (Block)
- 교착 (DeadLock)
- 완료 (Exit, Terminated)
- 프로세스의 상태 전환
- 디스패치 (Dispatch) : 준비 → 실행
- 프로세스가 준비 상태에서 프로세서가 배당되어 실행 상태로 변화하는 것이다
- 할당시간초과 (Time Run Out) : 실행 -> 준비
- 대기 (Block) : 실행 -> 대기
- Wake Up : 대기 -> 준비
- 디스패치 (Dispatch) : 준비 → 실행
- PCB (Process Control Block, 프로세스 제어 블록)
- 프로세스 식별자, 프로세스 상태 등의 정보로 구성된다
- 프로세스에 대한 정보를 저장해 놓은 곳
- 운영체제가 그 프로세스를 관리하는데 필요한 모든 정보를 유지하는 자료구조 테이블
- PCB가 갖고 있는 정보
- 프로세스의 현재 상태 : 준비, 대기, 실행 등의 프로세스 상태
- 프로세스의 고유 식별자
- 스케줄링 및 프로세스의 우선순위 : 스케줄링 정보 및 프로세스가 실행될 우선순위
- 프로그램 카운터
- 레지스터 저장 영역
- 계정 정보
- 입출력 상태 정보
- 메모리 관리 정보
- 프로세스 적재 정책
- 반복, 스택, 부프로그램은 시간 지역성 (Temporal Localilty)과 관련이 있다
- 공간 지역성 (Spatial Locality)은 프로세스가 어떤 페이지를 참조했다면 이후 가상 주소 공간상 그 페이지와 인접한 페이지들을 참조할 가능성이 높음을 의미
- 일반적으로 프로세스 수행에 보내는 시간보다 페이지 교환에 보내는 시간이 더 크면 스레싱 (Thrashing)이 발생
- 스레싱 (Thrashing) 현상을 방지하기 위해서는 각 프로세스가 필요로 하는 프레임을 제공할 수 있어야 한다
스레드 (Thread)
- 한 개의 프로세스는 여러 개의 스레드를 가질 수 있다
- 커널 스레드의 경우 운영체제에 의해 스레드를 운용한다
- 사용자 스레드의 경우 사용자가 만든 라이브러리를 사용하여 스레드를 운용한다
- 스레드를 사용함으로써 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상할 수 있다
- 스레드는 그들이 속한 프로세스의 자원과 메모리를 공유한다
- 다중 프로세스 구조에서 각 스레드는 다른 프로세스에서 병렬로 실행될 수 있다
- 스레드는 동일 프로세스 환경에서 서로 다른 독립적인 다중 수행이 가능하다
- 프로세스의 실행단위
- 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 단위
- 프로세스의 일부 특성을 갖고 있기 때문에 경량 프로세스라고도 한다
- 커널 스레드 : 운영체제 커널에 의해 스레드 운용, 구현이 쉬우나 속도 느림
- 사용자 스레드 : 사용자가 만든 라이브러리를 사용해 스레드 운용, 속도가 빠르나 구현 어렵다
문맥 교환 (Context Switching)
- 이전 프로세스의 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터를 적재하는 과정이다
- 현재 CPU를 사용하여 실행되고 있는 프로세스의 상태 정보를 저장하고 제어 권한을 ISR (Interrupt Service Routine)에게 넘기는 작업
- 하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생된다
교착상태 (DeadLock)
- 교착상태 4대 발생조건 #점비상환
- 점유와 대기 (Hold and wait)
- 프로세스가 수행되기 전에 필요한 모든 자원을 할당시켜 준다
- 자원이 점유되지 않은 상태에서만 자원을 요구하도록 한다
- 비선점 (Non-preemption)
- 상호 배제 (Mutual exclusion)
- 환형 대기 (Circular wait)
- 점유와 대기 (Hold and wait)
- 교착상태의 해결 기법
- Prevention (예방)
- 교착상태의 필요조건(4개 조건)을 부정함으로써 교착상태가 발생하지 않도록 미리 예방하는 방법
- 교착 상태의 원인이 되는 조건 중 하나를 제거
- 일반적으로 자원의 낭비가 가장 심함
- ex. 현황대기, 비선점, 점유와 대기, 상호배제 4가지 조건의 부정
- Avoidance (회피)
- 교착상태 가능성을 배제하지 않고 적절하게 피해나가는 방법
- ex. 은행원 알고리즘 (Banker's Algorithm)
- Detection (탐지)
- 교착상태 발생을 허용하고 발생 시 원인을 규명하여 해결
- ex. 자원할당 그래프
- Recovery (복구)
- 교착상태 발견 후 현황대기를 배제시키거나 자원을 중단하는 메모리 할당 기법
- ex. 선점, 프로세스 중지(희생자 선택)
- Prevention (예방)
스케줄링
- 선점 (Preemptive) 스케줄링
- 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 선점할 수 있는 기법
- 우선순위가 높은 프로세스 빠르게 처리 가능
- 빠른 응답 시간을 요구하는 대화식 시분할 시스템(Time Sharing System)에 사용됨
- 많은 오버헤드 발생
- 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클록 필요
- # RR, SRT, MLQ(Multi-Level Queue), MFQ
- RR (Round-Robin)
- 시간 할당이 작아지면 프로세스-문맥 교환이 자주 일어난다
- Time Sharing System을 위해 고안된 방식이다
- 시간 할당이 커지면 FCFS 스케줄링과 같은 효과를 얻을 수 있다
- SRT (Shortest Remaining Time)
- SRT는 실행 시간을 추적해야 하므로, 오버헤드가 증가한다
- 비선점 (Non-Preemptive) 스케줄링
- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 선점할 수 없는 기법
- CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU 사용
- 모든 프로세스에 대한 요구를 공정하게 처리 가능
- 프로세스 응답 시간의 예측 용이
- 일괄 처리 방식에 적합
- 중요한 작업(짧은 작업)이 중요하지 않은 작업(긴 작업)을 기다리는 경우 발생 → 가뭄 현상
- # FCFS (FIFO), SJF, HRN, 우선순위 (Priority), 기한부 (Deadline)
- SJF (Shortest Job First)
- 작업이 끝나기까지의 실행시간 추정치가 가장 작은 작업을 먼저 실행시킨다
- HRN (Highest Response-ratio Next)
- SJF 기법을 보완하기 위한 방식이다
- 대기 시간이 긴 프로세스의 경우 우선순위가 높아진다
- 긴 작업과 짧은 작업 간의 지나친 불평등을 해소할 수 있다
- 우선순위를 계산하여 그 수치가 가장 높은 것부터 낮은 순으로 우선순위가 부여된다
- HRN 우선순위 계산식 : (대기시간 + 서비스시간) / 서비스시간
메모리 관리
- 배치 (Placement) 전략
- 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에(Where) 위치시킬 것인지를 결정하는 전략
- 최초 적합 (First Fit) : 빈 영역 중에서 첫 번째 분할 영역에 배치
- 최적 적합 (Best Fit) : 빈 영역 중에서 단편화를 가정 작게 남기는 분할 영역에 배치
- 최악 적합 (Worst Fit) : 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치
- 교체(Replacement) 전략
- 이미 사용되고 있는 영역 중에서 어느(Who) 영역을 교체할지 결정하는 전략
- FIFO, LRU, LFU, NUR, OPT, SCR
- 페이지 교체 알고리즘
- FIFO(First In First Out) = FCFS(First Come First Serve)
- 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법
- LRU(Least Recently Used)
- 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법
- 가장 오래전에 사용된 페이지 교체
- OPT(OPTimal replacement, 최적 교체)
- 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법
- 벨레이디(Belady)가 제안한 것으로, 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘
- LFU(Least Frequently Used)
- 사용 빈도가 가장 적은 페이지를 교체하는 기법
- NUR(Not Used Recently)
- LRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 기법
- 각 페이지마다 두 개의 비트, 즉 참조 비트와 변형 비트 사용
가상기억장치
- 페이징 (Paging) 기법
- 프로그램을 고정된 크기의 일정한 블록으로 나누는 기법
- 페이지 크기가 작아질수록 발생하는 현상
- 기억장소 이용 효율이 증가한다
- 입/출력 시간이 늘어난다
- 내부 단편화가 감소한다
- 페이지 맵 테이블의 크기가 증가한다
- 세그먼테이션 (Segmentation) 기법
- 가변적인 크기의 블록으로 나누는 기법
- 페이지 부재 (Page Fault)
- 스래싱 (Thrashing)
- Working Set
- 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
UNIX
- 하나 이상의 작업에 대하여 백그라운드에서 수행 가능하다
- 계층적 파일 시스템 : 계층 구조(트리 구조)의 파일 시스템을 갖는다
- 유연성/이식성/호환성 : 이식성이 높으며 장치 간의 호환성이 높다
- 멀티태스킹 : 다중 사용자 (Multi-User), 다중 작업 (Multi-tasking)을 지원한다
- 대화식 운영체제 : 시분할 시스템 (Time Sharing System)을 위해 설계된 대화식 운영체제
→ 하드웨어 > 커널 (Kernel) > 쉘 (Shell) > 유틸리티 (Utility) > 사용자 (User)
- UNIX 명령어
- fork : UNIX에서 새로운 프로세스를 생성하는 명령어
- uname : 운영체제 분석을 위해 리눅스에서 버전을 확인하고자 할 때 사용되는 명령어
- 커널 (Kernel)
- 프로세스, 기억장치, 입출력 관리를 수행한다
- 프로세스 관리, 파일 시스템 관리, 입출력 관리, 기억장치 관리 등의 기능을 수행한다
- 운영체제에서 커널의 기능
- 프로세스 생성, 종료
- 기억 장치 할당, 회수
- 파일 시스템 관리
- 쉘 (Shell)
- 명령어 해석기이다
- 시스템과 사용자 간의 인터페이스를 담당한다
- 여러 종류의 쉘이 있다
- 사용자의 명령어를 인식하여 프로그램을 호출한다
- 쉘의 종류
- Bourne 쉘
- C 쉘
- Korn 쉘
- Tee-see 쉘
- Z 쉘
- Bourne-again 쉘
- 쉘(Shell) 명령어
- export
- export가 매개 변수 없이 쓰일 경우 현재 설정된 환경변수들이 출력
- 사용자가 생성하는 변수는 export 명령어 표시하지 않는 한 현재 쉘에 국한된다
- 변수를 export 시키면 전역변수처럼 되어 끝까지 기억한다
- printenv / env / setenv
- 환경 변수 출력 명령어
- export
프로그래밍 언어 활용
연산자
- 산술연산자 (Arithmetic Operator)
- 관계 및 논리연산자
- 비트연산자 (Bitwise Operator)
포인터
- 배열 요소에 대한 주소를 지정할 때는 일반 변수와 동일하게 & 연산자를 사용
- ex. int a[5], *b;
- b = a → 배열의 대표명을 적었으므로 a 배열의 시작 주소인 a[0]의 주소를 b에 저장함
- b = &a[0] → a 배열의 첫 번째 요소인 a[0]의 주소(&)를 b에 저장함
- 포인터 변수
- 포인터는 변수의 주소를 말하며, C언어에서는 주소를 제어할 수 있는 기능을 제공함
- 포인터 변수는 변수의 주소를 저장할 때 사용하는 변수이다.
- 포인터 변수는 필요에 의해 동적으로 할당되는 메모리 영역인 힙 영역에 접근하는 동적 변수다.
- 포인터 변수를 선언할 때는 자료의 형을 먼저 쓰고 변수명 앞에 간접 연산자 *를 붙임
→ int *a; - 포인터 변수에 주소를 저장하기 위해 변수의 주소를 알아낼 때는 변수 앞에 번지 연산자 &를 붙임
→ a = &b; - 실행문에서 포인터 변수에 간접 연산자 *를 붙이면 해당 포인터 변수가 가리키는 곳의 값을 말함
→ c = *a;
C언어 구조체와 공용체
- 구조체 (Stuct)
- 공용체 (Union)
C언어 기억 부류
- auto (자동 변수)
- register (레지스터 변수)
- static (정적 변수)
- extern (외부 변수)
JAVA 클래스와 메소드
- 접근자와 옵션
- default : 패키지 내부에서만 상속과 참조 가능
- public : 패키지 내부 및 외부에서 상속과 참조 가능
- protected : 패키지 내부에서는 상속과 참조 가능, 외부에서는 상속만 가능
- private : 같은 클래스 내에서 상속과 참조 가능
- abstract : 객체를 생성할 수 없는 클래스
- final : 서브 클래스를 가질 수 없는 클래스
- static : 멤버 클래스 선언에 사용
- 메소드 (Method)의 분류
- 객체 메소드
- 클래스 메소드
- 종단 메소드
- 추상 메소드 : 하나 이상의 추상 메소드를 포함한 클래스를 추상클래스라 한다
- 메소드 오버로딩 (Overloading)
- 이름은 같으나 매개 변수의 자료형과 개수가 서로 다른 메소드
- 메소드 오버라이딩 (Overriding)
- 이름, 매개 변수의 재료형 및 개수는 같으나 수행문이 다른 메소드
- 추상 클래스와 추상 메소드
- 추상 메소드와 추상 클래스는 반드시 abstract로 선언
- 추상 메소드 : 추상적인 기능만 선언하고 그 내용은 기술하지 않은 메소드
- 추상 클래스 : 클래스 내에 추상 메소드가 하나라도 있으면 추상 클래스
웹 저작 언어
- JavaScript (자바스크립트)
- 프로토타입 (Prototype)의 개념이 존재한다
- Prototype Link와 Prototype Object를 활용할 수 있다
- 객체지향 언어이다
- ASP (Active Server Page)
- 서버 측에서 동적으로 수행되는 페이지를 만들기 위한 언어, Microsoft 제작
- Windows계열에서만 수행 가능
- JSP (Java Server Page)
- 서버용 스크립트 언어로 C, JAVA 등과 문법이 유사. LINUX, UNIX, Windows 운영체제에서 사용 가능
- PHP (Professional Hypertext Preprocessor)
- 서버용 스크립트 언어로 C, JAVA 등과 문법이 유사. LINUX, UNIX, Windows 운영체제에서 사용 가능
- Ajax
네트워크 기초 활용
OSI 7계층 참조 모델 #아파서 티내다 피 (APSTNDP) / #응표세전내대물
- 응용 계층 (Application Layer, 7계층)
- 사용자와 네트워크 간 응용서비스 연결, 데이터 생성
- HTTP, FTP, TELNET, SMTP, SNTP, DNS
- 표현 계층 (Presentation Layer, 6계층)
- 구문 검색, 코드 변환, 암/복호화, 데이터 압축, 문맥 관리 기능
- JPEG, MPEG
- 세션 계층 (Session Layer, 5계층)
- 연결 접속(유지), 동기 제어, 동기점(대화)
- RPC, Netbios, SSH, TLS
- 전송 계층 (Transport Layer, 4계층)
- 단말기 사이에 오류 수정과 흐름제어를 수행하여 신뢰성 있고 명확한 데이터를 전달하는 계층
- 종단간 신뢰성 있고 효율적인 데이터를 전송하기 위해 오류 검출과 복구, 흐름 제어를 수행하는 계층
- 종단간 (End to End) 신뢰성 있는 데이터 전송, 흐름 제어 (슬라이딩 윈도우), 오류 및 혼잡 제어
- TCP / UDP
- 네트워크 계층 (Network Layer, 3계층)
- 패킷을 발신지로부터 최종 목적지까지 전달하는 책임을 진다
- 패킷에 발신지와 목적지의 논리 주소를 추가한다
- 라우터 또는 교환기는 패킷 전달을 위해 경로를 지정하거나 교환 기능을 제공한다
- 단말기 간 데이터 전송을 위한 최적화된 경로(라우팅) 제공
- IP, ICMP, ARP, RARP
※ 라우터 (Router) : 서로 다른 네트워크 대역에 있는 호스트들 상호간에 통신할 수 있도록 해주는 네트워크 장비
- 데이터 링크 계층 (Data Link Layer, 2계층)
- 물리적 연결을 이용해 신뢰성 있는 정보를 전송하려고 동기화, 오류제어, 흐름제어 등의 전송에러를 제어
- 링크의 설정과 유지 및 종료를 담당하며, 노드 간의 오류제어와 흐름제어 기능을 수행
- 한 노드로부터 다른 노드로 프레임을 전송하는 책임을 진다.
- HDLC, PPP, LLC, MAC → 프레임 (Frame)
※ 브리지 (Bridge) : LAN과 LAN을 연결하거나 LAN안에서의 컴퓨터 그룹을 연결한다
※ 스위치 (Switch) : 브리지와 같이 LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만든다 (하드웨어 기반)
- 물리 계층 (Physical Layer, 1계층)
- 매체 간의 전기적, 기능적, 절차적 기능 정의
- RS-232C, X.21 → 비트(Bit)
※ 허브 (Hub) : 한 사무실이나 가까운 거리의 컴퓨터들을 연결하는 장치
※ 리피터 (Repeater) : 신호가 왜곡되거나 약해질 경우 원래의 신호 형태로 재생하여 다시 전송한다
TCP/IP 프로토콜
- TCP/IP의 구조
- 응용 계층의 주요 프로토콜
- HTTP (Hypertext Transfer Protocol) - HTML 문서를 송, 수신하기 위한 표준 프로토콜
- FTP (File Transfer Protocol) - 파일을 주고받을 수 있는 원격 파일 전송 프로토콜
- TELNET - 원격지 컴퓨터에 접속하여 자신의 컴퓨터처럼 사용할 수 있도록 해주는 서비
- SMTP (Simple Mail Transfer Protocol) - 전자 우편을 교환하는 서비스
- SNTP (Simple Network Management Protocol) - TCP/IP의 네트워크 관리 프로토콜
- DNS (Domain Name System) - 도메인 네임을 IP 주소로 매핑하는 시스템
- 전송 계층의 주요 프로토콜
- TCP (Transmission Control Protocol)
- OSI 7계층의 전송 계층(4계층)에 해당한다
- 신뢰성이 있는 연결 지향형 전달 서비스이다
- 전이중(Full Duplex) 방식의 양방향 가상회선을 제공한다
- 기본 헤더 크기는 20byte이고, 60byte까지 확장 가능하다
- 스트림 전송 기능을 제공한다
- 전송 데이터와 응답 데이터를 함께 전송할 수 있다
- 순서 제어, 오류 제어, 흐름 제어 기능을 제공한다
- 흐름 제어(Flow Control)의 기능을 수행한다
- TCP (Transmission Control Protocol)
※ Stop and Wait : 손실된 프레임 1개를 전송하고 수신자의 응답을 기다리는 방식으로 한 번에 프레임 1개만 전송할 수 있는 기법
- UDP (User Datagram Protocol)
- 비연결 지향 프로토콜
- 송신 중에 링크를 유지관리하므로 신뢰성이 높다
- 흐름제어나 순서제어가 없어 전송속도가 빠르다
- 신뢰성보다는 속도가 중요시되는 네트워크에서 사용
- 실시간 전송에 유리
- 인터넷 계층의 주요 프로토콜
- IP (Internet Protocol)
- OSI 7계층의 네트워크 계층(3계층)에 해당한다.
- 데이터 그램을 기반으로 하는 비연결형 서비스 제공
- 패킷의 분해/조립, 주소 지정, 경로 선택 기능(Routing) 제공
- ARP (Address Resolution Protocol)
- TCP/IP에서 사용되는 논리주소를 물리주소로 변환시켜 주는 프로토콜
- TCP/IP 네트워크에서 IP 주소를 MAC 주소로 변환하는 프로토콜
- 네트워크에서 두 호스트가 성공적인 통신을 위하여 각 하드웨어의 물리적인 주소문제를 해결해 줄 수 있다
- ARP캐시를 사용하므로 캐시에서 대상이 되는 IP주소의 MAC주소를 발견하면 이 MAC주소가 통신을 위해 사용된다
- 네트워크 액세스 계층의 주요 프로토콜
- Ethernet (IEEE 802.3) - CSMA/CD 방식의 LAN
- IEEE 802.4 - Token Bus
- IEEE 802.5 - Token Ring
- IEEE 802 - LAN을 위한 표준 프로토콜
- HDLC(HIGI-Ievel Data Link Control) - 비트 위주의 데이터 링크 제어 프로토콜
- IP (Internet Protocol)
네트워크
- CSMA/CA (충돌회피)
- 무선 랜에서 데이터 전송 시, 매체가 비어 있음을 확인한 뒤 충돌을 회피하기 위해 임의 시간을 기다린 후 데이터를 전송하는 방법
- 네트워크에 데이터 전송이 없는 경우라도 동시 전송에 의한 충돌에 대비하여 확인 신호를 전송
- CSMA/CD (충돌감지)
IP
- IP 주소(Internet Protocol Address)
- 인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유한 주소
- IPv4, 숫자로 8비트씩 4구역으로 총 32비트로 구성
- IP 주소 클래스
- A Class : (0.0.0.0 ~127.255.255.255) (국가나 대형 통신망)
- B Class : (128.0.0.0 ~191.255.255.255) (중대형 통신망)
- C Class : (192.0.0.0 ~ 223.255.255.255) (소규모 통신망)
- D Class : (224.0.0.0 ~ 239.255.255.255) (멀티캐스트용)
- E Class : (240.0.0.0 ~ 255.255.255.255) (연구용. 실험적 주소이며 공용되지 않음)
- 서브 네트워크
- 할당된 네트워크 주소를 다시 여러 개의 작은 네트워크로 나누어 사용하는 것
- 서브넷 마스크(Subnet Mask) : 4바이트의 IP 주소 중 네트워크 주소와 호스트 주소를 구분하기 위한 비트로, 이를 변경해 네트워크 주소를 여러 개로 분할해 사용
- IPv4 (Internet Protocol version 4)
- 32비트 주소체계를 사용한다
- 패킷 크기가 64Kbyte로 제한
- IPv6 (Internet Protocol version 6)
- IPv4보다 보안성이 강화되었다
- 보안과 인증 확장 헤더를 사용함으로써 인터넷 계층의 보안기능을 강화하였다
- IPv6 확장 헤더를 통해 네트워크 기능 확장이 용이하다
- 애니캐스트(Anycast)는 하나의 호스트에서 그룹 내의 가장 가까운 곳에 있는 수신자에게 전달하는 방식이다
- 128비트 주소체계를 사용한다
- 멀티미디어의 실시간 처리가 가능하다
- 자동으로 네트워크 환경구성이 가능하다
- IPv6의 패킷 크기는 임의로 큰 크기의 패킷을 주고받을 수 있다
- 주소체계
- IPv4 : 유니캐스트, 멀티캐스트, 브로드캐스트
- IPv6 : 유니캐스트, 멀티캐스트, 애니캐스트
'IT 지식' 카테고리의 다른 글
[정보처리기사] 정보시스템 구축관리 (0) | 2023.03.26 |
---|---|
[정보처리기사] 데이터베이스 구축 (0) | 2023.03.16 |
[정보처리기사] 소프트웨어 개발 (2) | 2023.03.12 |
[정보처리기사] 소프트웨어 설계 (0) | 2023.03.07 |
댓글