반응형

1. Framework

: Software 분야에서 Application을 개발에 빈번히 쓰여지는 범용 기능을 한꺼번에 제공해 Application의 토대로서 기능하는 Software이다. Application의 아웃라인으로 개발에 Framework를 이용하면 독자적으로 필요로하는 부분만 개발하면 되기 때문에 개발 효율의 향상을 기대할 수 있다.

e.g., Spring, Django, node.js 등

 

 

1.1. 특징

  • 공통적인 개발 환경을 제공한다. (개발 편의성)
  • 개발할 수 있는 범위가 정해져있다.
  • Application 제어의 역전이 발생한다.

 

2. Library

: 개발자가 사용할 수 있는 API들을 종류나 목적에 따라 나누어 정의한 API 묶음으로 재사용 가능한 Code의 집합이다. Library는 System에 기본적으로 설치되어있는 기본 Library와 제조사나 외부 메이커에 의해 만들어지는 확장 Library로 나뉜다.

e.g.,

import random # random Library를 사용하겠다.
random_num = random.randrange(1, 7) # random Library에 포함되어 있는 함수를 이용해 값 반환

 

 

2.1. 특징

  • 개발에 필요한 것들을 모아둔 일종의 저장소이다.
  • 필요할 때 호출해서 사용한다.
  • Application의 흐름을 제어한다
    ☞ Framework와 반대

 

3. API(Application Programming Interface)

: 응용 프로그램에서 사용할 수 있도록 운영체제나 다른 프로그램이 제공하는 기능을 제어할 수 있게 만든 Interface이다.

 

 

3.1. 특징

  • 응용 프로그램을 다른 운영체제나 Program과 연결해주는 다리 역할을 한다.
  • 직접 구현하는 것이 아닌 제어를 담당한다.
  • API를 조합해 원하는 Program을 만들 수 있다.

 

4. 비유를 통한 Framework, Library, API의 이해

집을 지을 때 아래의 조건이 만족되어야 한다고 가정해보자.

1. 3개의 방, 1개의 화장실이 존재해야 한다.
2. 에어컨이 존재해야 한다.
3. 조명, 가전제품 등을 제어할 수 있는 리모컨이 존재해야 한다.
  • 1번 조건 : 맨땅에 헤딩하기보다는 평면도를 이용해 여러 사람이 협업하면 효율성이 높아질 것이다.
    ☞ 평면도 = Framework
  • 2번 조건 : 에어컨을 실제로 만들기보다는 기존에 만들어져 있는 에어컨을 구매해 가져다 놓으면 불필요한 시간과 노력을 줄일 수 있을 것이다.
    ☞ 기존 제품 = 외부 Library
  • 3번 조건 : 리모컨을 이용해 제품을 제어한다면 리모컨 없이 제어할 때보다 더 쉽게 제어할 수 있을 것이다.
    ☞ 리모컨 = API

 

5. Library와 Framework의 공통점과 차이점

  Library Framework
공통점 개발에 편의성을 제공한다.
차이점 Application의 흐름을 제어한다. Application의 흐름 제어가 역전된다.

 

[참고]

https://youtu.be/We8JKbNQeLo

https://youtu.be/_j4u4ftWwhQ

반응형
반응형

1. Transport Layer(전송 계층)

: End Point 간 신뢰성있는 Data 전송을 담당하는 계층

 

신뢰성 : Data의 순차적, 안정적인 전달 보장
전송 : 목적지 Port 번호에 해당하는 Process에 Data 전달

 

1.2. Transport Layer의 중요성

만약, 전송 계층이 없다면 ?
  • Data의 순차 전송이 원활히 이루어지지 않음
    e.g., 송신자가 1 2 3의 순서로 Data를 전송했을 때 수신자는 Data 수신 시 2 3 1 등의 순서로 전송받을 수 있다.
  • Flow 문제(흐름 문제) 발생
    Flow 문제의 원인 : 송·수신자 간의 Data 처리 속도의 차이
    e.g., 수신자가 처리할 수 있는 Data의 양을 초과하는 경우 그 이후에 송신되는 Data의 경우 누락될 수 있다.
  • Congestion 문제(혼잡 문제) 발생
    Congestion 문제의 원인 : Network(e.g. Router)의 Data 처리 속도
    e.g., 송신자가 계속 Data를 저송하더라도 Network가 혼잡해 수신자에게 제대로 전달되지 않을 수 있다.

∴ Data의 손실이 발생할 수 있다.

 

2. TCP(Transmission Control Protocol)

: 신뢰성있는 Data 통신을 가능하게 해주는 Protocol

  • Data 전송 전 Connection 연결이 필요하다. (3-Way Handshake : 양방향 통신)
  • Data의 순차 전송을 보장한다.
  • Flow Control (흐름 제어)
  • Congestion Control (혼잡 제어)
  • Error Detection (오류 감지)
    ☞ Checksum 이용

 

2.1. Segment

: TCP의 PDU(Protocol Data Unit, 프로토콜 데이터 단위)

Application 계층에서 Data를 전송하면 TCP Protocol 안에서 내부적으로 Data를 잘라 TCP Header와 Data를 결합한다.

 

 

2.2. TCP Header의 구조

 

  • Source Port : 송신자 Port 번호
  • Destination Port : 수신자 Port 번호
  • Sequence Number, Acknowledgment Number : 순차 전송 담당
  • Flag Field : TCP 연결 제어 및 Data 관리
  • Checksum : Error 검출

 

2.3. 3-Way Handshake (Connection 연결)

   ① Client가 SYN 비트를 1로 설정해 Server에 Packet 송신

   ② Server가 SYN, ACK 비트를 1로 설정해 Client에 Packet 송신

       ☞ ACK 비트로 Data를 받았음을 알림

   ③ Client가 ACK 비트를 1로 설정해 Server에 Packet 송신

   ④ 열결 완료 후 Data 송수신

 

2.4. Data 전송 방식

   ① Client가 Server에 Packet 송신

   ② Server가 ACK 비트를 1로 설정해 Client에게 Packet 송신

   ③ Client가 ACK를 받지 못하면 Packet 재전송

       ☞ 신뢰성 있는 통신 보장

 

2.5. 4-Way Handshake (Connection Close)

   ① Data를 전부 전송한 Client가 FIN 비트를 1로 설정해 Server에 Packet 송신

   ② Server가 ACK 비트를 1로 설정해 Client에 Packet 송신

   ③ Server에서 남은 패킷 송신 (Client는 일정 시간 대기)

   ④ Server가 FIN 비트를 1로 설정해 Client에 Packet 송신

   ⑤ Client가 ACK 비트를 1로 설정해 Server에 Packet 송신

 

 

2.6. 문제점

  • 전송의 신뢰성은 보장하지만 매번 Connection을 연결해 시간 손실이 발생한다. (3-Way Handshake)
  • Packet을 조금만 손실해도 재전송한다.

 

3. UDP(User Datagram Protocol)

: TCP에 비해 신뢰성은 떨어지지만 전송 속도가 일반적으로 빠른 Protocol

  • Connectionless (3-Way HandShake 과정이 없다 : 단방향 통신)
  • 순차 전송, 흐름 제어, 혼잡 제어 기능이 없다.
  • Error Detection
    ☞ Checksum 이용
  • 비교적 Data의 신뢰성이 중요하지 않을 때 사용된다.
    e.g., 영상 스트리밍

 

3.1. User Datagram

: UDP의 PDU(Protocol Data Unit, 프로토콜 데이터 단위)

  • Application 계층에서 Data가 전송되면 Data에 UDP Header를 추가해 만들어진다.
    ☞ Segment는 Data를 쪼갰으나 Datagram은 Data를 쪼개지 않는다.

 

3.2. UDP Header

 

  • Source Port : 송신자 Port 번호
  • Destination Port : 수신자 Port 번호
  • Checksum : Error 검출

 

3.3. UDP의 Data 전송 방식

 

   ① Client가 Packet 송신

 

 

[참고]

https://youtu.be/ikDVGYp5dhg

 

https://diy-multitab.tistory.com/27

 

컴퓨터 네트워크 - Transport Layer

Transport layer application layer 바로 밑에 있는 계층으로 transport layer 관점에서는 logical End-End transport 단위로 그중간에 있는 과정은 관심이 없다. app message를 Header과 Data로 이루어진 Segment..

diy-multitab.tistory.com

 

반응형
반응형

1. File System

: 컴퓨터에서 File이나 자료를 쉽게 발견 및 접근할 수 있도록 유지, 관리하는 방법

☞ 저장매체에 있는 많은 File을 관리하는 방법이다.

 

1.1. 역할

  • File 관리 : File 저장, 참조, 공유
  • 보조 저장소 관리 : 저장 공간 할당
  • File 무결성 매커니즘 : File이 의도한 정보만 포함
  • 접근 방법 : 저장된 데이터에 접근할 수 있는 방법 제공

 

1.2. 개발 목적

  • HDD와 Main Memory 속도 차이를 줄이기 위해
  • File 관리를 용이하게 하기 위해
  • HDD의 막대한 용량을 효율적으로 이용하기 위해

 

1.3. 문제점

  • Data의 중복(Data Redundancy)
    : File System은 각 File 마다 필요한 Data를 각각 가지고 있어야 하므로 동일한 Data를 서로 다른 File에 유지해 관리한다.
  • Data의 비일관성(Data Inconsistency)
    : 데이터에 변경사항이 조금만 있어도 각 File에서 해당되는 Data를 모두 변경해야 하므로 수정에 문제가 있고, 한꺼번에 수정이 되지 않으면 Data가 서로 달라진다.
  • 정보 접근의 어려움(Difficulty in Accessing Data)
    : 기존 File System은 File의 용도에만 맞춰 제작되어 다른 Program을 만들 때는 기존의 Program을 변경하거나 개조하는 데 시간이 오래걸리며 다시 DataBase 작업을 해야한다.
  • Data의 고립(Data Isolation)
    : 정보가 여러 File에 서로 다른 형식으로 흩어져서 존재해 흩어진 정보를 이용하기 위해서는 재구성 비용이 들어가며 오랜 시간이 소요된다.
  • 무결성 문제(Integrity Problems)
    : Data를 변경하기 위해서는 여러 File에 존재하는 Data에 모두 접근해 여러 번 변경해야 한다.
  • 원자성 문제(Atomicity Problems)
    : Program이 수행 중인 작업은 전부 완료되어 저장되어하며 완료되지 못하면 아예 저장되지 않아야 한다. 즉, 수행중인 작업이 컴퓨터 고장이나 기타 의도하지 않은 이유로 중단되는 경우 작업을 전부 완료하지 못했으므로 저장하지 않고 이전의 Data를 복원한다.
  • 동시 Access 문제
    : 많은 사용자가 동시에 같은 정보에 접속해 갱신한다면 동시에 갱신되도록 해야한다. (= 정보의 일관성을 보장하도록 해야한다.)

 

2. DataBase

: 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 Data들의 모임

 

2.1. 등장 목적

DataBase가 존재하기 전에는 File System을 사용해 Data를 관리했다. Data를 각각의 File 단위(Record)로 저장하며 이러한 일을 처리하기 위한 독립적인 Application과 상호 연동이 되어야 하는데 File System에서는 File에 접근하는 방식이 응용 프로그램 내에 표현되므로 응용 프로그램과 Data 간의 의존관계가 존재하게 되어 Data의 구조, 접근 방법이 변경되면 기존의 프로그램과 Data를 함께 변경해야한다.

 

즉, Data 정의가 응용 프로그램에 내포되어 있고 Program에서 Data를 접근하고 조작하는 것 외의 별도의 제어가 없다.

따라서, File 단위로 저장할 때 데이터 종속성 문제와 중복성, 데이터 무결성 문제 등이 존재해 DataBase로 관리하기 시작했다.

 

3. DBMS(DataBase Management System, 데이터베이스 관리 시스템)

: 다수의 사용자들이 DataBase 내의 Data의 생성, 접근 방법, 관리 유지할 수 있도록 전반적으로 지원하는 System

 

3.1. 기능

  • 정의 기능
    : DataBase를 관리하기 위해서는 저장할 구조를 정의해야하며 정의된 구조에 따라 저장해야한다.
  • 조작 기능
    : 사용자가 DataBase를 검색, 갱신, 삽입, 삭제 등을 할 수 있도록 지원하는 기능이다.
  • 제어 기능
    : DataBase의 정확성과 안정성을 위해 일정한 형식을 필터링해 저장하거나 여러 명이 Data를 동시 공유할 수 있도록 한다.

 

3.2. 특징

DBMS는 File System의 문제를 해결하기 위해 만들어졌기 때문에 DBMS의 특징은 곧 File System의 단점을 의미한다.

  • Data의 독립성
    • 물리적 독립성 : DataBase의 Size를 늘리거나 성능 향상을 위해 Data File을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다.
    • 논리적 독립성 : DataBase는 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시킬 수 있다.
  • Data의 무결성
    : 여러 경로를 통해 잘못된 Data가 발생하는 경우의 수를 방지하는 기능으로 Data의 유효성 검사를 통해 Data이 무결성을 구현한다.
  • Data의 보안성
    : 인가된 사용자들만 DataBase나 DataBase 내의 자원에 접근할 수 있도록 계정 관리 및 접근 권한을 설정함으로써 모든 Data에 보안을 구현할 수 있다.
  • Data의 일관성
    : 연관된 정보를 논리적인 구조로 관리함으로써 어떤 하나의 Data만 변경하는 경우 발생할 수 있는 Data의 불일치성을 배제할 수 있다. 또 작업 중 일부 Data만 변경되어 나머지 Data와 일치하지 않는 경우의 수를 배제할 수 있다.
  • Data 중복 최소화
    : DataBase는 Data를 통합해서 관리함으로써 File System의 단점 중 하나인 자료의 중복과 Data의 중복 문제를 해결할 수 있다.

 

[참고]

https://security-nanglam.tistory.com/228

 

[OS] 파일 시스템(File System)이란?

[File System] #2019.07.29 파일 시스템 - 컴퓨터에서 파일이나 자료를 쉽게 발견 할 수 있도록, 유지, 관리하는 방법이다. 즉, 저장매체에는 많은 파일이 있으므로, 이러한 파일을 관리하는 방법을 말

security-nanglam.tistory.com

https://yang1650.tistory.com/28

 

데이터베이스 사용 이유 (DBMS 등장)

데이터베이스 사용 이유 '>데이터베이스 사용 이유 1.파일 처리에서 데이터베이스로의 시스템 전환 '>1.파일 처리에서 데이터베이스로의 시스템 전환 파일처리 시스템 "> 파일처리 시스템 "> 파일

yang1650.tistory.com

https://dar0m.tistory.com/245

 

[DB] 데이터베이스를 사용하는 이유와 성능

DBMS 탄생 배경 파일 시스템 개발자들은 데이터베이스가 존재하기 이전에 파일 시스템을 이용하여 데이터를 관리하였다. 데이터를 각각의 파일 단위(레코드)로 저장하며 이러한 일들을 처리하기

dar0m.tistory.com

 

반응형

+ Recent posts