네트워크 기초

코딩로그·2025년 3월 14일
post-thumbnail

네트워크 기본 개념

네트워크의 종류

네트워크는 범위에 따라 크게 LAN, MAN, WAN으로 구분

네트워크 종류범위구성속도
LAN (Local Area Network)좁음 (사무실, 건물 등)단순빠름
MAN (Metropolitan Area Network)도시 단위중간중간
WAN (Wide Area Network)넓음 (국가, 대륙)복잡느림

네트워크 계층

  • 택배를 A에서 B로 보내기 위해서는 택배를 포장하고 이동하고 택배 포장을 뜯는 과정이 필요
  • 데이터 통신도 이와 비슷

캡슐화와 역캡슐화

  • 네트워크에서 데이터는 캡슐화 과정을 거쳐 전송되며, 최종적으로 역캡슐화되어 원본 데이터가 복원
  • 캡슐화 : 계층이 지나면서 포장되는 데이터는 최종적으로 전기 신호로 변환 되어 전달
  • 역캡슐화 : 최종 목적지에 도달하면 원본 데이터로 포장이 뜯어짐

네트워크 계층

계층기능
7. 응용 (Application)HTTP, FTP 등 응용 프로그램 통신
6. 표현 (Presentation)데이터 암호화, 압축
5. 세션 (Session)연결 설정, 종료 관리
4. 전송 (Transport)TCP/UDP를 통한 데이터 전송
3. 네트워크 (Network)IP 주소 지정 및 경로 설정
2. 데이터 링크 (Data Link)MAC 주소 기반 데이터 전송
1. 물리 (Physical)전기 신호로 변환 및 전달

HTTP와 HTTPS

HTTP (HyperText Transfer Protocol)

  • 웹 기반 응용 프로그램에서 가장 많이 사용되는 프로토콜
  • 웹 프론트엔드 클리아언트와 웹 서버가 통신할 때 사용하는 프로토콜
  • OSI 7계층 중 응용계층 : 최상위 계층 → 사용자와 가장 가까운 계층

HTTP 특징

  • 무상태성 (Stateless): 이전 요청 정보를 저장하지 않음
  • 비연결성 (Connectionless): 요청-응답이 끝나면 연결이 종료됨
  • 속도가 빠르지만 보안이 취약함

HTTP의 무상태성(Stateless)

  • 상태(서버의 기억)가 없음을 의미
  • 모든 정보를 담아서 한 번에 전달해야 함

HTTP의 비연결성(Conectioneless)

  • 연결이 지속되지 않음을 의미
  • 연결 : 요청과 응답이 오고가는 통로
  • 연결과 종료의 반복으로 비효율성 발생

비연결성 해결을 위한 HTTP 발전 과정

  • HTTP 1.0
    • 연결과 종료를 반복하는 비연결성으로 비효율적 성능
  • HTTP 1.1
    • 지속연결
      • 연결을 한 번 한 이후에 연결과 응답을 반복, 모든 요청이 끝난 후 종료
      • 응답이 오고난 후에 다음 요청을 보낼 수 있다는 단점
      • 요청과 응답이 동기적으로 일어나 시간 지연 발생
    • 파이프라인
      • 요청이 동시에 비동기적으로 보내지고 있음
      • 응답은 동기적으로 받으볼 수 있음. 첫 번째 응답, 두 번째 응답, 세 번째 응답을 받을 수 있음
  • HTTP 2.0
    • 멀티플렉싱
      • 요청과 응답이 비동기적으로 일어남

HTTPS (HTTP Secure)

HTTPS는 HTTP + 보안 프로토콜 (SSL/TLS)을 결합하여 데이터를 암호화하여 전송하는 방식

HTTPS 보안 방식

비대칭 키 방식

  • 공개키와 개인(비밀)키 두 개의 키로 암호화하는 키와 복호화하는 키가 다름
  • 보안성은 높지만 속도가 느림

대칭 키 방식

  • 하나의 키, 암호화 하는 키와 복호화 하는 키가 같음
  • 속도가 빠름

HTTPS 작동 원리

비대칭 키 방식으로 대칭 키를 교환, 이후 대칭 키 방식으로 데이터 암호화

HTTPS 사용 주체

  • 클라이언트 : hTTPS 프로토콜로 사이트를 이용
  • 서버 : HTTPS 프로토콜로 사이트를 제공
  • 인증 기관(CA) : 안전한 사이트인지 인증

HTTPS 인증 방식

  • 비대칭 키방식
    • 인증서 발급 & 검증할 때
    • 대칭키를 주고 받을 때
  • 대칭 키 방식
    • 클라이언트와 서버가 데이터를 주고받을 때

대칭키를 별도로 만들어서 통신하는 이유?

  • 비대칭 키 방식은 복호화에 오래 걸림
  • 데이터를 통신하기 위해 사용하는 대칭키를 만들기 위해 사용됨
  • 대칭키 자체는 서버와 통신할 때 직접 왔다갔다 하지 않으므로 탈취당할 위험성이 없음
    • 서버는 클라이언트에게 공개키를 제공
    • 클라이언트는 공개키로 대칭키를 암호화하여 서버에 전달
    • 서버는 자신의 개인키로 복호화하여 대칭키 획득
    • 이후 대칭키로 통신
    • 초기 연결 과정(TLS Handshake)에서 비대칭키 암호화를 사용해 각자 대칭키를 공유하고, 때문에 해당 대칭키로 암호화/복호화 수행, 직접 이동하지 않아 안전하게 교환

SOP_CORS

CORS

  • CORS (Cross-Origin Resource Sharing,) : 교차 출처 리소스 공유

SOP

  • SOP (Same-Origin Policy) : 동일 출처 정책
  • 같은 출처의 리소스만 가져올 . 수있음
  • 동일 출처가 아니라면 브라우저가 보안상의 이유로 접근을 막아버림

SOP의 한계 : CORS ERROR

  • 소셜 로그인, 지도 API 등 다른 출처의 리소스를 가져다 쓰는 경우가 많아짐

  • 어길 시 CORS 에러 발생

  • CORS 정책에 의한 거부

    • Access-Control-Allow-Origin 헤더를 적절히 설정
    • 설정은 클라이언트(Vite, React)에서 수정하는 것이 아니라, 서버에서 처리

CORS 설정 방법

  • 서버에서 CORS 헤더 작성
    - Access-Control-Allow-Origin : 리소스에 접근할 수 있는 주소
    - Access-Control-Allow-Methods : 서버에서 허용할 HTTP 메소드
    - Access-Control-Allow-Headers : 서버에서 허용할 HTTP 헤더

  • PreflightRequest

    • 브라우저는 허용 여부를 모르고 요청이 수행될 수 있음
    • 서버의 데이터를 변경시키는 요청이라면 크리티컬한 위험 요소가 될 수 있음
    • 교차 출처 리소스 공유를 받아도 되는지 사전에 체크하고 요청을 수행하기 위해 필요

정리

  • 네트워크는 범위에 따라 LAN/MAN/WAN으로 구분됨.
  • HTTP는 비보안 프로토콜, HTTPS는 암호화된 보안 프로토콜
  • HTTPS는 비대칭 키(초기 연결) + 대칭 키(실제 데이터 송수신) 방식 사용
  • SOP 정책 때문에 CORS 오류 발생 가능, 해결하려면 서버에서 CORS 허용 설정 필요
profile
hello world!

0개의 댓글