2024-08-05 (TIL)

SanE·2024년 8월 5일
0

컴퓨터공학

목록 보기
20/23

👨🏻‍💻학습 내용


💡 HTTP 메시지

HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식이다.

메시지는 총 2가지가 타입이 있는데 위의 이미지에서 보이는 것처럼
하나는 클라이언트가 서버에 요청(Request)를 보낼 때 사용하는 메시지,
다른 하나는 서버가 일을 마친 후 클라이언트에게 응답(Response)을 보낼 때 사용하는 메시지이다.

메시지 구조

HTTP 메시지는 위의 그림과 같은 구조로 이루어져 있으며 간단하게 정리하면 다음과 같다.

  1. start-line(시작줄) : 실행되야할 요청 / 수행 결과가 있다. (항상 한 줄로 끝난다.)
  2. HTTP header : 요청에 대한 설명, 메시지 본문에 대한 설명.
  3. empty-line(blank-line) : 모든 정보가 전송되었음을 알리는 역할.
  4. body(본문) : 응답과 관련된 문서 or 요청과 관련된 내용.

브라우저에서도 위와 같이 헤더를 확인할 수 있다.

브라우저 개발자 도구 - 네트워크 - (예시: www.naver.com) - Headers

Start-line

크게 세 사지 요소로 이루어져 있다.

  • 요청 메서드 (Request Method): 주요 메서드는 GET, POST, PUT, DELETE, PATCH 등이 있다.
  • 요청 타켓 (Request URI): 요청된 자원의 위치를 나타낸다.
  • HTTP 버전 (HTTP Version): 사용 중인 HTTP 버전을 나타냅니다. (ex : HTTP/1.1, HTTP/2)

Headers

  • 요청과 관련된 다양한 메타데이터를 포함합니다. 각 헤더는 "이름: 값" 형태로 되어 있으며, 여러 개의 헤더가 있을 수 있습니다.
  • 일반적인 헤더: Host, User-Agent, Accept, Content-Type, Content-Length 등

Header 종류

HTTP Header는 여러 유형별로 나뉘며, 각각의 Header는 특정한 목적이 있다.

  1. General
  2. Request
  3. Response
  4. Entity

General

요청 및 응답 메시지 모두에서 사용되며 컨텐츠 자체에는 적용되지 않는다.
사용되고 있는 Context에 따라 reponse, request 헤더로 사용된다.

  • Date : 현재 시간.
  • Cache-Control : 캐시 제어(캐시에 대한 여러 정보가 저장)
  • Via : 이용할 프록시의 이름, 프로토콜 버전, 호스트명.
  • Connection : 전송 완료 후 연결을 유지할지.

Request

  • Host: 요청의 대상 서버를 지정.
  • User-Agent: 클라이언트 소프트웨어(브라우저 등)의 정보를 전달.
  • Accept: 클라이언트가 처리할 수 있는 MIME 타입을 지정.
  • Authorization: 클라이언트의 자격 증명을 포함하여 인증에 사용.
  • Content-Type: 요청 본문의 데이터 형식을 지정. 주로 POST나 PUT 요청에서 사용.

Response

  • Server: 서버 소프트웨어의 정보를 나타낸다.
  • Set-Cookie: 서버가 클라이언트에 쿠키를 설정할 때 사용.
  • Content-Type: 응답 본문의 MIME 타입을 지정.
  • Content-Length: 응답 본문의 길이를 바이트 단위로 나타낸다.
  • Location: 리디렉션할 URL을 지정합니다. 주로 3xx 상태 코드와 함께 사용.

Entity

엔터티 헤더는 요청과 응답의 본문에 포함된 엔터티에 대한 메타데이터를 제공합니다.

  • Content-Encoding: 본문 데이터의 인코딩 방식.
  • Content-Language: 본문 데이터의 언어.
  • Content-Location: 본문 데이터의 실제 위치.
  • Content-Disposition: 본문 데이터가 어떻게 처리되어야 하는지를 지정. (파일 다운로드 시 자주 사용)
  • Allow: 리소스가 지원하는 메소드 집합.

💡 DBMS

DBMS는 Database Management System의 약자로 데이터베이스를 관리하는 소프트웨어 시스템이다.
데이터를 삽입, 수정, 삭제, 검색을 포함하는 여러 작업을 수행한다.

DBMS의 주요 특징

  • 실시간 접근성: 사용자의 요청에 즉시 응답하여 실시간으로 데이터를 처리.

  • 지속적인 변화: 데이터의 삽입, 삭제, 갱신을 통해 항상 최신의 정확한 정보 유지.

  • 동시 공유: 여러 사용자가 동시에 데이터에 접근, 공유.

  • 내용 기반 참조: 데이터의 물리적 위치가 아닌 내용을 기반으로 참조.

  • 데이터 독립성: 응용 프로그램과 데이터베이스를 분리하여 유연성 제공.

DBMS의 장점

  • 데이터 중복 최소화: 데이터베이스로 통합에 의해 중복문제 최소화.

  • 보안성 강화: 제어 기능/ 접근 제어, 권한 할당으로 보안성 확보.

  • 데이터 독립성 확보: 응용프로그램과 DB간 독립성이 유지됨.

  • 효율적인 데이터 관리: 백업, 복구, 동시성 제어 등의 기능을 제공.

DBMS의 단점

  • 비용: 초기 구축 및 유지보수에 상당한 비용이 소요될 수 있다.

  • 복잡성: 구조가 복잡하기 때문에 문제가 발생했을 때 어렵다.

  • 시스템 의존성: DB에 데이터가 통합되어 관리되기 때문에 DBMS에 장애가 발생하면 치명적이다.

💡 RDBMS

RDBMS는 Relational Database Management System의 약자로 관계형 데이터베이스 관리 시스템이다.
RDBMS는 DBMS와는 다르게 2차원 테이블 형태로 데이터를 저장하고 각각의 테이블간의 관계를 통해 구조화하고 관리한다.

RDBMS의 주요 특징

  • 테이블 기반 구조: 데이터를 행과 열로 구성된 테이블 형태로 저장.

  • 관계성: 테이블 간의 관계를 외래 키를 통해 정의하고, 이를 이용해 테이블 간 조인(Join)이 가능.

  • SQL 사용: 데이터베이스와 상호작용하기 위해 표준화된 쿼리 언어인 SQL을 사용.

  • ACID 준수: 트랜잭션의 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability) 보장.

RDBMS의 장점

  • 데이터 일관성: 엄격한 스키마와 관계 정의를 통해 데이터의 일관성 유지.

  • 복잡한 쿼리 지원: SQL을 통해 복잡한 데이터 조회와 분석 가능.

  • 유연성과 확장성: 기존 데이터에 큰 영향을 주지 않고 테이블, 열 및 관계 수정 가능.

  • 보안성: 사용자 인증, 권한 관리, 데이터 암호화 등 다양한 보안 기능 제공.

  • 광범위한 지원: 오랜 기간 사용되어 왔기 때문에 풍부한 지원과 통합 옵션 제공.

RDBMS의 단점

  • 확장성 제한: 대규모 데이터 처리나 수평적 확장이 어렵다.

  • 스키마 변경의 어려움: 엄격한 스키마로 인해 구조 변경이 복잡하다.

  • 비정형 데이터 처리의 한계: 정형화된 데이터 처리에 최적화되어 있어, 비정형 데이터 처리에는 제한이 있을 수 있다.

💡 트랜젝션

트랜잭션은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 논리적 단위이다.
한꺼번에 모두 수행되어야 할 연산들을 의미하며, 데이터베이스의 일관성을 유지하는 데 중요한 역할을 한다.

트랜잭션 특징 (ACID)

  • 원자성(Atomicity): 트랜잭션의 모든 연산이 완전히 수행되거나 전혀 수행되지 않아야 한다.
  • 일관성(Consistency): 트랜잭션 실행 전후의 데이터베이스 상태가 일관되어야 한다.
  • 고립성(Isolation): 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다.
  • 지속성(Durability): 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 한다.

참고 자료

profile
완벽을 찾는 프론트엔드 개발자

0개의 댓글