[TIL] Jungle TIL : 네트워크 관련 Keyword 정리.

@developer/takealittle.time·2024년 10월 28일
1

Jungle

목록 보기
15/21


0. 원론적인 아이디어를 잊지 말자.

결국은 "컴퓨터 A에서 컴퓨터 B로 데이터를 옮기는 것."

  • 데이터를 옮기는 방식에 따라 각각의 프로토콜(약속)이 있는 것.
    • 이메일로 옮기면 SMTP
    • 파일로 옮기면 FTP
    • 웹으로 옮기면 HTTP
    • 컴퓨터 자체를 원격으로 연결하면 SSH

1. OSI 모델

  • 국제 표준화 기구(ISO)에서 네트워크 통신을 체계적으로 설명하기 위해 만든 7계층 모델.

컴퓨터가 서로 데이터를 주고 받는 과정을 "큰 그림으로, 간단하게" 그려보니, 아래와 같이 "7개의 계층구조"로 표현할 수 있더라!

  • 애플리케이션 계층: 사용자 프로그램이 돌고 있는 계층. → 목적에 맞는 통신 방법 제공 (HTTP, DNS, SMTP, FTP)

  • 표현 계층: 데이터의 암호화, 복호화 담당

  • 세션 계층: 현재 통신의 연결 상태(즉, 세션)를 담당

  • 전송 계층: 애플리케이션 (종단) 간 통신 담당. (TCP, UDP)

  • 네트워크 계층: 호스트 (즉, 컴퓨터) 간 통신 담당. (IP)

  • 데이터 연결 계층: 직접 연결 된 (로컬 수준) 노드 간 통신 담당. MAC주소 기반. (ARP: IP주소 → MAC 주소)

  • 물리 계층: 물리 장치(랜선, 허브 등) 이용해 데이터를 bit 단위로 전송.

아래와 같이 Host A에서 Host B로 데이터를 전송하는 과정을 보고 계층 모델을 이해하자.

  • 각 계층에 대한 기능 구현은 우리가 사용하는 프로토콜을 통해 구현된다.
    ex) 7 계층에서 HTTP, FTP, SMTP
    4계층에서 TCP, UDP
    3계층에서 IP
    2계층에서 Ethernet 등

네트워크의 동작을 계층 구조로 보여주는 모델링에는 또 다른 예로 TCP/TP 모델이 있다.

(TCP/IP 프로토콜과는 다르다. 헷갈리지 말 것)

  • TCP/IP 모델은 4계층으로, 각각 OSI 7계층 모델과 위처럼 매핑된다.

2. 스트림 소켓과 데이터그램 소켓

2-1. 스트림 소켓 (Stream Socket)

  • 두 개의 시스템이 연결 → 서로 데이터 주고받기 시작 → 연결된 상태 내에서 계속 해서 주고 받고, 연결 끊는 형식.
  • TCP 프로토콜이 기본으로 사용
  • 오류, 패킷 순서를 특별히 신경쓰지 않는다. "안정적"

2-2. 데이터 그램 소켓 (Datagram Socket)

  • 명시적으로 연결되지 않은 상태로 데이터를 주고 받는 형태.
  • UDP 프로토콜이 기본으로 사용
  • 서로 연결 / 해제 과정이 없다. 따라서, 속도가 빠르다.
  • 신뢰성 < 속도가 중요한 경우, 주로 소량의 데이터 전송에 사용된다.

3. HTTP (HyperText Transfter Protocol)

  • 웹을 이용해 데이터를 전달하고 싶을 때 사용하는 프로토콜.
  • 'Hypertext link'를 이용 해 웹 페이지를 로드.
  • Hypertext: 문서와 문서의 연결을 기록한 문서.
  • World Wide Web의 토대.
  • 애플리케이션 계층 프로토콜: 네트워크 프로토콜 스택의 다른 계층 위에서 실행.
  • 클라이언트 - 서버 모델을 이용

HTTP Request

  • 웹 사이트를 로드하는데 필요한 정보를 요청
  • HTTP 버전, URL, HTTP 메서드, HTTP 요청 헤더, HTTP 본문(optional)

HTTP Response

  • 웹 클라이언트의 HTTP 요청에 대한 서버의 응답.
  • HTTP 상태 코드, HTTP 응답 헤더, HTTP 본문 (대부분 html 데이터 적재)

4. CGI (Common Gateway Interface)

  • 웹 서버와 외부 프로그램 간 통신을 위한 표준 방법

  • 사용자의 요청 → 서버에서 실행되는 프로그램 (CGI Program) → 동적인 웹 페이지를 생성 / 데이터를 처리

  • CGI는 초기 웹 개발에서 매우 중요한 역할 → 현대 웹 개발에서는 더 효율적이고 강력한 기술들로 대체되고 있음

    • Node.js, Django 등 현대 프레임워크로 대체

5. Proxy 서버

5-1. Proxy 서버란?

  • 클라이언트와 서버 사이에 위치해 중계기로서 통신을 수행하는 서버.

Proxy 서버의 기능 요약

  1. 클라이언트가 요청한 내용을 캐싱해 시간 절약
  2. 클라이언트 ↔ 서버 간 익명성 보장 (proxy 서버를 거치며 주소가 바뀌므로.)
  • 원래는 캐싱을 이용 해 인터넷 속도를 높이기 위해 사용했다가, 최근에는 보안 유지로 그 목적이 역전되고 있다.
  • Proxy '서버'도 결국 컴퓨터 이므로, 그 위에 어떤 프로세스를 올리느냐에 따라 활용법은 무궁무진.

5-2. Forward Proxy와 Reverse Proxy

  • 클라이언트와 외부 서버 사이에 위치하면 Forward, 외부 클라이언트와 내부 서버 사이에 위치하면 Reverse.

    특징Forward ProxyReverse Proxy
    위치클라이언트와 서버 사이, 클라이언트 쪽클라이언트와 서버 사이, 서버 쪽
    목적클라이언트 요청을 대신 수행서버를 대신 해 클라이언트 요청을 받아 처리
    주요 용도IP 숨기기, 콘텐츠 필터링, 캐싱로드 밸런싱, 보안 강화, SSL 종료, 캐싱
    대표적 사용 사례인터넷 접근 제한, 사용자 보호로드 밸런싱, 서버 보호, 성능 개선

* 참고 자료 / 이미지 출처

profile
능동적으로 사고하고, 성장하기 위한. 🌱

0개의 댓글

관련 채용 정보