해당 블로그 포스팅은 이화여대 반효경 교수님 강의를 기반으로 작성되었습니다. 운영체제란 무엇인가? 운영체제란 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 하드웨어와 다른 소프트웨어를 연결하는 소프트웨어 계층이다. ...더보기 좁은 의미: 운영체제 핵심 부분으로 메인 메모리에 상주하는 커널 넓은 의미: 커널과 주변 시스템 유틸리티 운영체제의 목적 1. 컴퓨터 시스템의 자원을 효율적으로 관리 HW: CPU, 메모리 SW: 프로세스, 파일, 메시지 2. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 운영체제의 분류 분류 기준 1. 동시 작업 가능 여부 2. 사용자 수 3. 처리 방식 ...더보기 동시작업 가능 여부 단일 작업: MS-DOS 프롬프트 다중 작업: UNIX, MS Windows 사용자 수..
자세히보기해당 블로그 포스팅은 이화여대 반효경 교수님 강의를 기반으로 작성되었습니다. 컴퓨터 시스템 구조 장치별 특징 1. CPU CPU는 메모리에 있는 명령어 실행 다음 명령어 실행 전 인터럽트 라인 주기적으로 체크 I/O 작업 요청 있을 경우, device controller에 업무를 지시하고 CPU는 다시 메모리 위 명령어 실행 레지스터: 메모리보다 빠른 정보 저장 가능한 작은 공간 예) Program Counter: 다음에 실행할 명령어를 가리키는 레지스터 2. 메모리 CPU의 작업 공간. CPU는 매 clock cycle마다 메모리에서 기계어를 읽어 작업 수행 3. Timer 특정 프로그램이 CPU를 독점하는 것을 방지하기 위해 할당 시간이 지나면 interrupt line을 통해 CPU에 알림 할당된 ..
자세히보기해당 블로그 포스팅은 이화여대 반효경 교수님 강의를 기반으로 작성되었습니다. 프로세스란 프로세스는 실행 중인 프로그램을 지칭한다. 프로세스의 문맥 Time-sharing 시스템에서 context를 저장해둬야 CPU 제어권이 다른 프로그램으로부터 돌아왔을 때 이어서 진행 가능 1. CPU의 수행 상태를 나타내는 하드웨어 문맥 Program Counter를 포함한 각종 register 2. 프로세스의 주소 공간 code, data, stack 3. 프로세스 관련 커널 자료 구조 PCB (Process Control Block) Kernel stack ...더보기 Process Control Block (PCB) 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보 (문맥 정보) 다음의 구성 요소를..
자세히보기해당 블로그 포스팅은 이화여대 반효경 교수님 강의를 기반으로 작성되었습니다. CPU 스케줄링이 필요한 이유 컴퓨터에서 실행되는 프로세스들은 여러 종류의 job이 섞여 있기 때문에 CPU 스케줄링이 필요하다 Interactive job에게 적절한 response 제공 요망 CPU와 I/O 장치 등 시스템 자원을 골고루 효율적으로 사용 프로세스의 특성 분류 ...더보기 1. I/O-bound process CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job 다수의 짧은 CPU bursts 2. CPU-bound process 계산 위주의 job 소수의 긴 CPU bursts CPU burst: CPU 실행 IO 실행: IO burst CPU Scheduler와 Dispatcher CPU Sc..
자세히보기해당 블로그 포스팅은 이화여대 반효경 교수님 강의를 기반으로 작성되었습니다. 배경 ...더보기 데이터 연산을 하기 위한 과정은 다음과 같다. 1. 저장되어 있는 데이터 값 가져오기 2. 가져온 값으로 연산 수행하기 3. 최종 결과 값 저장하기 1~3까지 과정을 온전히 마쳐야 연산이 잘 수행되었다고 볼 수 있는 것이다. 그런데 공유데이터를 기반으로 연산을 수행하는 주체가 여럿이라면, 하나의 연산 주체가 1~3의 과정을 모두 마치기 전에 다른 연산 주체가 데이터를 접근할 수도 있다. 이러한 경우, 데이터 불일치 문제가 발생한다. Race condition 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라짐 Race conditio..
자세히보기해당 블로그 포스팅은 이화여대 반효경 교수님 강의를 기반으로 작성되었습니다. Deadlock and Starvation Deadlock 둘 이상의 프로세스가 서로 상대방에 의해 충족될 수 있는 event를 무한히 기다리는 현상 Starvation Indefinite blocking 프로세스가 suspend된 이후에 해당 세마포어 큐에서 빠져나갈 수 없는 현상 예시. Dining-Philosophers Problem semaphore chopstick[5]; /* initially all values are 1 */ Philosopher i do { P(chopstick[i]); P(chopstick[(i+1) % 5]); ... eat(); ... V(chopstick[i]); V(chopstick[(i..
자세히보기해당 블로그 포스팅은 이화여대 반효경 교수님 강의를 기반으로 작성되었습니다. Deadlock 정의 일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태 Resource 하드웨어, 소프트웨어 등을 포함한 개념 예: I/O device, CPU cycle, memory space, semaphore 등 발생 조건 1. Mutual exclusion 매 순간 하나의 프로세스만이 자원을 사용할 수 있음 2. No preemption 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않음 3. Hold and wait 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있음 4. Circular wait 자원을 기다리는 프로세스간에 사이클이 형성되어야 함 Deadlo..
자세히보기해당 블로그 포스팅은 이화여대 반효경 교수님 강의를 기반으로 작성되었습니다. Logical vs Physical address Logical address (= virtual address) 프로세스마다 독립적으로 가지는 주소 공간 각 프로세스마다 0번지부터 시작 CPU가 보는 주소는 logical address Physical address 메모리에 실제 올라가는 위치 Symbolic address 변수명, 함수명 주소 바인딩 주소를 결정하는 것 Symbolic address -> Logical address -> Physical address 1. Compile time binding 시작 위치 변경시 재컴파일 컴파일 시점에 물리적인 주소가 결정되어야 하기에, 컴파일러는 절대 코드 생성 빈 공간 활용..
자세히보기해당 블로그 포스팅은 이화여대 반효경 교수님 강의를 기반으로 작성되었습니다. Allocation of Physical Memory 1. OS 상주 영역 Interrupt vector 2, 사용자 프로세스 영역 사용자 프로세스 영역의 할당 방법 1. Contiguous allocation 각각의 프로세스가 메모리의 연속적인 공간에 적재 1) 고정분할 방식 물리적 메모리를 몇 개의 영구적 분할로 나눔 (크기는 같을 수도 있고 다를 수도 있음) 분할당 하나의 프로그램 적재 동시에 메모리 load되는 프로그램의 수가 고정 최대 수행 가능 프로그램 크기 제한 내부조각 발생 2) 가변분할 방식 프로그램의 크기를 고려해서 할당 분할의 크기, 개수가 동적으로 변함 기술적 관리 기법 필요 외부조각 발생 Dynamic S..
자세히보기프로세스 프로세스는 실행 중인 프로그램으로 운영체제로부터 시스템 자원을 할당받는 작업의 단위 프로세스마다 최소 하나의 스레드를 가지고 있으며, 각각 별도의 주소공간을 할당 프로세스 내에는 code, data, heap, stack 영역이 존재 프로세스 제어 블록 (Process Control Block, PCB) 프로세스에 대한 정보를 저장하고 있는 OS의 자료구조 OS는 프로세스의 생성과 동시에 고유한 PCB 생성 프로세스 식별자 프로세스 상태 프로그램 카운터 CPU 레지스터 CPU 스케쥴링 정보 (우선 순위 등) 메모리 관리 정보 (페이지 테이블 또는 세그먼트 테이블 등) 스레드 스레드는 프로세스 내에서 실행 단위 스레드는 stack만 따로 할당받고 나머지 영역은 다른 스레드와 공유 Stack은 함수..
자세히보기메모리 계층 구조 레지스터, 캐시, 메인 메모리, 하드 디스크 레지스터, 캐시: CPU 내부에 존재 -> 아주 빠르게 접근 가능 메모리: CPU 외부에 존재 -> 레지스터와 캐시에 비해 접근 속도가 느림 하드디스크: 하드 디스크의 데이터를 메모리로 이동 -> 메모리에 접근 (가장 느림) 캐시 CPU의 처리속도와 주기억장치의 접근 속도 차이를 줄이기 위해 사용하는 메모리 빠르지만 가격이 비쌈 캐시의 성능은 CPU가 이후에 참조할 정보가 어느 정도 들어있느냐에 따라 좌우 -> 적중률 (Cache Hit Rate) 적중률을 높히기 위해 지역성(Locality)의 원리를 사용 시간 지역성: 최근에 참조된 주소의 내용은 곧 다시 참조된다 공간 지역성: 현재 참조된 주소와 인접한 주소의 내용이 앞으로 참조될 가능성..
자세히보기CPU 스케줄링 멀티 프로그래밍을 가능하게 하는 운영체제의 동작 기법 "어떻게 프로세스들이 CPU를 효율적으로 사용하게 할 것인가?" 선점형 스케줄링 비선점형 스케줄링 선점형 스케줄링 우선 순위가 높은 프로세스가 우선 순위가 낮은 다른 프로세스로부터 CPU를 뺏을 수 있음 우선순위가 높은 프로세스를 빠르게 처리해야할 경우에 유용 컨텍스트 스위칭으로 인한 오버헤드가 발생, 처리시간을 예측하기 힘들다는 단점 비선점형 스케줄링 프로세스가 CPU를 점유하고 있다면 빼앗을 수 없는 방식 필요한 문맥 교환만 일어나기 때문에 오버헤드가 상대적으로 적음 (프로세스의 배치에 따라 효율성 차이 발생) 병목 현상으로 인해 성능이 저하될 가능성 주의 CPU 스케줄링 알고리즘 선점형 스케줄링 SRT, Round Robin, 다..
자세히보기동기 작업을 요청한 후 결과가 나올 때까지 기다린 후 처리 해당 작업을 처리하는 동안 기존의 작업은 중단 요청된 작업이 CPU를 활용하지 않는 작업(예. IO)이라면 CPU 자원 낭비 심함 Synchronous vs Blocking 시스템의 반환을 기다린다는 측면에서 동일하나 기다리는 동안 대기 큐에 머무는 것이 필수가 아니면 synchronous, 필수이면 blocking으로 구분하기도 한다 Non-blocking 작업을 요청했을 때 현재 가져올 수 있는 데이터를 바로 결과값으로 반환 반환 이후 데이터가 업데이트 될 것이기에 클라이언트가 주기적으로 결과값을 확인할 필요 동시에 여러 요청이 발생하면 CPU에 적지 않은 부담 Blocking시 CPU 낭비를 개선하기 위해 나온 방식 비동기 Non-block..
자세히보기Deadlock 교착상태는 프로세스가 필요한 자원을 획득하지 못해 영구적으로 블록되어 있는 상태 발생 조건 상호배제: 한 순간에 한 프로세스만이 자원을 사용가능 점유대기 (hold and wait): 이미 자원을 보유한 프로세스가 다른 자원을 요청하며 대기 선취 불가 (non-preemptive): 프로세스에 의해 점유된 자원을 다른 프로세스가 강제적으로 빼앗을 수 없음 대기 상태의 사이클 (circular wait): 두 개 이상의 프로세스가 자원 접근을 기다리는데 그 관계에 사이클이 존재 대부분의 교착상태 방지 알고리즘은 4번 조건, 대기 상태의 사이클이 발생하는 일을 막는데 초점이 맞춰져 있음 해결 방법 예방 운영체제 설계시 교착상태가 발생하기 위한 네 가지 조건 중에 하나를 설계 단계에서 배제 자..
자세히보기메모리 관리 전략 메모리 관리 배경 각각의 프로세스는 독립된 메모리 공간을 가짐 운영체제 혹은 다른 프로세스의 메모리 공간에 접근 제한 운영체제 만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 자유로움 Swapping 메모리의 관리를 위해 사용되는 기법 CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억장치(e.g. 하드디스크)로 내보내고 다른 프로세스의 메모리를 불러 들일 수 있음 Swap에 큰 디스크 전송시간이 필요하기 때문에 현재에는 메모리 공간이 부족할때만 Swapping 시작 단편화 (Fragmentation) 프로세스들이 메모리에 적재되고 제거되는 일이 반복되다보면 메모리 틈 사이에 사용하지 못할 만큼의 작은 자유공간들이 늘어나는 현상 외부 단편화: 분할보다 프로그램이 커서 들어가..
자세히보기1. Hash Table 특징 - 각 키의 해쉬함수 값을 그 키를 저장할 배열 인덱스로 사용 - 해쉬 함수를 사용하여 키 k를 T[h(k)]에 저장 - 평균 탐색, 삽입, 삭제시간 : O(1) - 최악의 경우 : O(n) 2. 충돌: 두 개 이상의 키가 동일한 위치로 해슁 대표 해결 방법 : 1) chaining 2) open addressing 3. Chaining : 동일한 장소로 해슁된 키들을 하나의 연결리스트로 저장 3-1. 키의 삽입 - 리스트 맨 앞에 삽입 : 시간복잡도 O(1) - 중복된 키의 저장을 허용하지 않는다면, 중복 여부를 확인하기 위해 검색 필요 : 시간복잡도 ∝ 리스트 길이 3-2. 키의 검색 - 시간복잡도 ∝ 리스트 길이 3-3. 키의 삭제 - 키의 검색 : 시간복잡도 ∝ 리스..
자세히보기1. 트리 특징 - 계층적인 구조를 표현하기 위한 자료구조 2. 이진트리 특징 - 트리의 높이 (H) : log(N) - 노드의 개수 (N) : 2^H - 1 // full binary tree 3. 이진트리의 구현 public class BinaryTree { protected Node root; public BinaryTree(){ root = null; } public BinaryTree(Node root){ this.root = root; } public BinaryTree (E data, BinaryTree leftTree, BinaryTree rightTree) { root = new Node(data); if (leftTree != null){ root.left = leftTree.root;..
자세히보기1. 정의 Heap property를 만족하는 complete binary tree *Heap property - Max heap property : 부모는 자식보다 크거나 같다 - Min heap property : 부모는 자식보다 작거나 같다 2. 힙의 표현 1차원 배열로 표현 가능 *계산의 편의를 위해 index는 1부터 시작한다 A[i]의 부모 = A[i/2] A[i]의 왼쪽 자식 = A[i*2] A[i]의 왼쪽 자식 = A[i*2+1] 3. Max-Heapify 루트만이 heap property를 만족하지 않음을 가정 MAX-HEAPIFY (A, i) { if there is no child of A[i] return; k = A[k] return; exchange A[i] and A[k]; M..
자세히보기ArrayList 특징 논리적 저장 순서와 물리적 저장 순서가 일치 인덱스로 해당 원소에 접근 가능 원소의 인덱스 값을 알고 있으면 O(1)에 해당 원소로 접근 -> random access 가능 삭제 또는 삽입의 과정에서 해당 원소에 접근하여 작업을 완료한 뒤(O(1)), 배열의 연속성을 유지하기 위해 원소들을 shift해줘야 하는 비용(cost)이 발생하고 이 경우의 시간 복잡도는 O(n)가 된다. Array 자료구조에서 삭제 및 삽입에 대한 time complexity 의 worst case 는 O(n)이 된다. 구현 public class MyArrayList { private T[] dataList; private int size; private int capacity; private stati..
자세히보기Stack 특징 선형 자료구조 Last In First Out (LIFO) 먼저 들어간 원소가 바닥부터 쌓이는 방식 나중에 들어간 원소가 호출되는 구조 class MyStack { private static class StackNode { private T data; private StackNode next; public StackNode (T data) { this.data = data; } } private StackNode top; public T pop() { if (top == null) throw new EmptyStackException(); T item = top.data; top = top.next; return item; } public void push(T item) { StackNo..
자세히보기1. Selection Sort 1) 최대 원소를 찾는다 2) 맨 오른쪽 원소와 교환 3) 맨 오른쪽 원소를 제외하고 루프반복 시간복잡도 : O(n^2) void selectionSort (int[] A, int size) { for (int i = size-1; i>0; i--) { // 오른쪽 원소를 하나씩 제외하며 루프 반복 O(n) int max =0; int indexMax = 0; for (int j = i; j==0; j--) { // 최대 원소 찾기 O(n) if (A[j] > max) { max = A[j]; indexMax = j; } } A[indexMax] = A[i]; // 최대 원소 가장 오른쪽 원소와 교환하기 A[i] = max; } } 2. Bubble Sort 1) 인접한 ..
자세히보기Merge Sort 문제를 작은 문제로 분리하고 결과를 모아 원래의 문제를 해결하는 분할 정복 알고리즘의 한 종류 분할, 정복, 결합으로 구성 배열을 절반으로 나누어 (분할) 정렬한 (정복) 다음 합하여 (결합) 다시 정렬 배열을 합치는 과정에서 임시 배열이 필요 O(nlogn)의 시간복잡도 구현 public static void mergesort(int[] array) { int[] helper = new int[array.length]; mergesort(array, helper, 0, array.length - 1); } public static void mergesort(int[] array, int[] helper, int low, int high) { if (low < high) { int m..
자세히보기1. Relation attributes (columns) vs tuples (rows) Example 1-1. Attribute types Domain is a set of allowed values for each attribute ex : domain for name : string domain for salary : integer Attribute values are required to be atomic; that is indivisible - list or table cannot be attribute 2. Database : consists of a multiple relations Schema diagram for university database 3. Keys Superkeys uniq..
자세히보기1. Domain Types char(n), varchar(n), int, smallint, numeric (p,d), real, double, float(n) 2. Create Table create table r (A1 D1, A2 D2, ..., An Dn, (integrity-constraint1), ..., (integrity-constraintk)) create table instructor ( ID char(5), name varchar(20) not null, dept_name varchar(20), salary numeric(8,2) ) insert into instructor values ('10211', 'Smith', 'Biology', 65000) insert into instru..
자세히보기Basic Query Structure 1) Rename - as SQL allows renaming relations and attributes using as old-name as new-name select ID, name, salary/12 as monthly_salary from instructor 1) Find the names of all instructors who have a higher salary than some instructor in ‘Comp. Sci’. select distinct T. name from instructor as T, instructor as S where T.salary > S.salary and S.dept_name = ‘Comp. Sci.’ Keyword..
자세히보기Join Relations 'Join' operation (a cartesian product which requires that tuples in two relations match ) takes two relations and return another relation Join condition defines which tuples in the two relations match, and what attributes are present in the result of the join Join type defines how tuples in each relation that do not match any tuple in the other relation (based on the join conditio..
자세히보기View create view v as Any relation that is not of the conceptual model but is made visible to a user as a "virtual relation" is called a view A view is computed at real-time and is not stored in database Once a view is defined, the view name can be used to refer to the virtual relation that the view generates View definition is not the same as creating a new relation by eval..
자세히보기Transactions Unit of work Atomic transaction - either fully executed or rolled back as if it never occurred Isolation from concurrent transactions Integrity constraints Integrity constraints guard against accidental damage to database by ensuring authorized changes to databases do not result in a loss of data consistency not null primary key unique check (P), where P is a predicate check (P), wh..
자세히보기데이터베이스를 사용하는 이유 데이터베이스가 존재하기 이전에는 파일 시스템을 이용하여 데이터를 관리 파일 단위로 저장된 데이터는 애플리케이션과 상호 연동이 되어야 하는데 이 때의 문제점은 데이터 종속성, 중복성, 무결성 데이터베이스의 특징 데이터의 독립성 1-1) 물리적 독립성: 크기가 변경되더라도 (또는 새로운 파일) 관련 응용 프로그램을 수정할 필요 X 1-2) 논리적 독립성: 데이터베이스는 논리적인 구조로 다양항 응용 프로그램의 논리적 요구를 만족 가능 데이터의 무결성 잘못된 데이터 발생을 방지하는 기능 데이터의 유효성 검사를 통해 데이터의 무결성을 구현 데이터의 보안성 인가된 사용자들만 데이터베이스에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정 데이터의 일관성 연관된 정보를 논리적인 구조로 ..
자세히보기네트워크 구성요소 1) Network edge hosts 또는 end systems: 네트워크에 연결된 각각의 computing devices 어플리케이션 프로그램을 실행 예: web, email ...더보기 Host와 end system의 의미 Hosts: communication application program을 hosting하는 역할 End systems: 네트워크 가장자리에 위치 두 용어 모두 네트워크에 연결된 device들을 지칭한다 2) Network core 라우터: end-system간 packet목적지를 알려주는 교두보 역할 연결된 라우터 통신망이 core를 구성한다 3) Access networks, physical media communication links: 서버-router-..
자세히보기네트워크 통신의 목적은 host간 정보를 전달하는 것이다. 어플리케이션 계층에서는 사용자 프로세스에서 다른 host 프로세스로 전달할 메시지를 하위 계층인 transport layer로 전달한다. 이 메시지 패킷에는 host를 지칭하는 IP 주소와 프로세스를 지칭하는 port 번호, 즉, 주소 정보 또한 포함되어 있다. ...더보기 프로세스 Host 내에 동작하고 있는 프로그램 프로세스의 주소 네트워크 통신의 주체는 host가 아니라 host 내 프로세스들이다. 즉, 프로세스에서 프로세스로 메시지를 전달하는 것이다. 그렇기에 host를 가리키는 주소는 32 bit의 IP 주소와 port number를 조합한다. 대표적인 port number는 HTTP 서버 프로세스의 80, mail 서버 프로세스의 25..
자세히보기DNS (Domain Name System) 웹 브라우저에서 네이버에 접속을 하려면 네이버 서버 host의 주소를 알아야 한다. Host의 주소는 32 bit의 IP 주소인데, 사람이 이 주소를 외우는건 어지간히 어려운 일이 아니다. 그렇기에 사람이 좀 더 편리하게 사용할 수 있는 'www.naver.com'이라는 도메인 이름으로 변환하여 (또는 반대) 사용하는 시스템(DNS)을 개발하였다. 즉, DNS는 IP 주소와 domain name mapping 역할을 한다. DNS의 특징 Application layer protocol 얼핏 생각하면 DNS는 IP 주소를 기반으로 host to host delivery를 담당하는 network layer의 protocol일 것 같지만 network layer에서..
자세히보기Transport layer는 서로 다른 host내의 프로세스간의 통신을 담당한다. 메시지를 보내는 host의 transport layer는 application process로부터 전달 받은 메시지를 segment로 새롭게 구성하여 network layer에 전달한다. 메시지 수신 host의 transport layer는 network layer로부터 전달 받은 segment를 처음 받은 메시지의 형태로 변경하여 application layer에 전달한다. ...더보기 Socket 프로세스는 메시지를 주고 받는 창구의 역할을 하는 구성요소. 프로세스는 소켓을 통해 하위 계층과 패킷을 주고 받는다 종류 TCP와 UDP Transport layer의 대표적인 기능 공통 Multiplexing and dem..
자세히보기TCP segment source port#, dest port # socket에 전달 위함 sequence number, acknowledgement number reliable transfer 위함 TCP flow control Sender로부터의 segment 전달 속도가 Receiver의 application으로 전달되는 속도보다 빠르면 Socket buffer에서 data drop 발생 가능하다. 이런 Data drop을 막기 위해 receiver는 남은 버퍼 공간을 TCP header를 통해 sender에게 전달하고, sender는 전송 속도를 제한한다. 이러한 작업을 TCP flow control이라고 한다. TCP congestion control 네트워크 트래픽이 높은 상황을(패킷의 유실..
자세히보기Network layer는 transport layer로부터 전달 받은 segment를 datagram으로 새롭게 구성한 뒤, 한 host에서 다른 host로 전달한다. 즉 host to host 전송을 담당하는 계층이다. Network layer의 주요 기능 Routing Packet의 source에서 destination으로 가는 경로 파악하는 작업 Forwarding Routing 해놓은 경로 정보를 활용하여 packet을 router의 input port에서 output port로 이동시키는 작업 Forwading table 활용 ...더보기 Forwarding table Datagram header에 있는 목적지 주소에 해당하는 output link 정보가 기록되어 있는 표 해당 table은 r..
자세히보기Host 프로세스의 network layer에서 내려온 datagram을 gateway router로 보내야 한다. 하지만 host와 gateway router를 연결하는 broadcasting medium은 여러 host가 공유하기 때문에 collision의 위험이 있다. Link layer는 이러한 collision을 극복하고 전송하는 역할을 한다. 주요 기능 에러 감지 및 수정 통신 채널 공유 (multiple access) link layer addressing local area network: Ethernet, VLAN NIC (Network Interface Card) transport layer 및 network layer는 OS에 의해 제어되지만 link layer는 NIC라는 네트워크 ..
자세히보기HTTP 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜 TCP/ IP를 이용 비연결성 프로토콜. TCP 연결을 위한 오버헤드를 해결하고자 HTTP 1.1에서 Keep-Alive 기능이 추가 무상태성 프로토콜. 클라이언트를 식별하지 못하는 문제 해결하기 위해 Session과 Cookie를 이용 비연결성 (Connectionless) 클라이언트 요청에 대해 서버가 응답을 마치면 연결을 끊어 버리는 성질 HTTP는 인터넷 상에서 불특정 다수와의 통신을 위해 설계 연결을 유지하기 위해 필요한 리소스 발생 동일한 클라이언트의 모든 요청에 대해 매번 새로운 연결/해제를 위한 오버헤드 발생 KeepAlive 지정된 시간동안 서버와 클라이언트 사이에 패킷 교환이 없을 경우, 상대방의 안부를..
자세히보기TCP vs UDP TCP/UDP 모두 Data Integrity만을 위해 고안된 Protocol -> timing, minimum throughput, security에 관련된 기능 제공 x TCP 연결형 프로토콜(연결 설정 by 3-way handshake) 신뢰성(flow control, congestion control) 순차적인 전달 UDP 비연결형 프로토콜 흐름제어, 오류제어, 손상된 세그먼트 수신에 대한 재전송 x -> 사용자 프로세스의 몫 DNS TCP가 더 reliable한데 왜 UDP를 사용할까? 간단한 작업의 경우 TCP의 overhead를 감당하는게 부담 Reliability가 중요한 메시지의 경우 application 자체에서 체크할텐데 이러한 경우에는 중복작업일 수 있음 Mini..
자세히보기HTTP와 HTTPS HTTP의 문제점 (암호화하지 않은 프로토콜의 문제점) 도청 가능 위장 가능 정보의 변조 가능 1. TCP/IP는 도청 가능한 네트워크 TCP/IP 구조의 통신은 패킷을 수집하는 것만으로 도청이 가능 평문으로 통신을 할 경우 메시지의 의미를 파악할 수 있기 때문에 암호화 필요 보완 방법 통신 방식의 암호화 SSL(Secure Socket Layer) or TLS(Transport Layer Security)라는 다른 프로토콜을 조합 SSL과의 조합 -> HTTPS콘텐츠의 암호화. 2. 수신하는 측에서는 그 암호를 해독하여 출력하는 처리가 필요. 2. 통신 상대를 확인하지 않기 때문에 위장이 가능 누구든지 리퀘스트를 보낼 수 있음 IP 주소나 포트 등에서 웹 서버에 대한 액세스 제한이..
자세히보기DNS Round Robin DNS를 이용해서 하나의 서비스에 여러 대의 서버를 분산시키는 방법 사용자가 도메인 주소를 브라우저에 입력하면 DNS는 도메인 정보를 조회 여러 서버 IP 리스트 중에서 라운드 로빈 형태로 랜덤하게 하나 또는 여러개를 선택하여 사용자에게 반환 최근에는 복수의 IP를 제공하면 클라이언트가 선택 DNS Round Robin 방식의 문제점 서버의 수 만큼 공인 IP 주소가 필요. 부하 분산을 위해 서버의 대수를 늘리기 위해서는 그 만큼의 공인 IP 가 필요 균등한 부하 분산 x 서버 다운 감지 불가 DNS 서버는 웹 서버의 부하나 접속 수 등의 상황에 따라 질의결과를 제어불가 -> 다운되더라도 검출하지 못하고 유저들에게 제공 다운된 서버로 연결이 되기도 한다 DNS 라운드 로빈은 ..
자세히보기우리가 Chrome 을 실행시켜 주소창에 특정 URL 값을 입력시키면 어떤 일이 일어나는가? 브라우저 url에 입력된 값을 브라우저 내부에서 결정된 규칙에 따라 의미를 조사 조사된 의미에 따라 HTTP Request 메시지 생성 및 웹 서버로 전성 만들어진 메시지는 OS에 의뢰하여 전송 OS에 송신을 의뢰할 때는 도메인명이 아니라 IP 주소로 메시지를 받을 상대를 지정해야 하는데, 이 과정에서 DNS서버를 조회 필요 프로토콜 스택, LAN 어댑터 프로토콜 스택(운영체제에 내장된 네트워크 제어용 소프트웨어)이 브라우저로부터 메시지 수신 해당 메시지 패킷 속에 저장 수신처 주소 등의 제어정보를 추가한 후 LAN 어댑터에 패킷 전달 LAN 어댑터는 해당 패킷을 전기신호로 변환 및 LAN 케이블에 송출 프로토콜..
자세히보기