기본적인 네트워크 개념

김두현·2023년 2월 15일
1

Backend Curriculum

목록 보기
14/16
post-thumbnail

Goal

  • OSI 7계층 각각의 역할 파악한다.
  • TCP 프로토콜을 이용한 연결/연결해제 과정을 파악한다.
    • 3-way-handshake
    • 4-way-handshake
  • UDP 프로토콜의 특징을 파악한다.
  • HTTP와 HTTPS의 특징을 파악한다.
  • SSL 프토로콜에 대해 파악한다.
    • 대칭키
    • 공개키
    • 세션키
  • DNS round robin 방식에 대해 파악한다.

OSI 7계층

  • OSI(Open System Interconnection) : 네트워크의 통신 과정을 7단계의 체계로 나타낸 것이다.
    - 과정을 단계적으로 파악함으로써, 문제 발생시 해당 계층을 수정하여 해결한다.
    오른쪽 TCP/IP 4계층은 개선된 현대의 모델이니 참고하자.
  1. 물리 계층 (bit) : 최하위 계층이다. 장치 간 전기신호를 전달하고, 데이터 프레임 내부의 각 bit를 다른 컴퓨터로 전송한다.
  2. 데이터 링크 계층 (frame) : 물리 계층을 통해 frame 단위의 데이터를 이웃 네트워크로 전송한다.
  3. 네트워크 계층 (packet) : packet 단위의 데이터를 다른 호스트로 라우팅한다.
    packet을 생성하여, 전송 계층에게서 전달받은 목적지의 전송 계층으로 전달한다.
  4. 전송 계층 (segment) : 상위 계층의 메시지를 하위 계층으로 전달한다.
    메시지 오류를 제어하고, 메시지가 클 경우 segment로 나누어 네트워크 계층에 전달 후, 응답받은 packet을 재조립 후 세션 계층에 전달한다.
  5. 세션 계층 (message) : 데이터 교환의 경계이자 동기화를 제공한다.
    네트워크 연결이 손실되면 복구를 시도한다. 비연결 상태가 장시간 유지되면 프로토콜 연결을 닫은 후 재연결한다.
    데이터 통신 방식(양방향 or 단방향)을 결정한다.
  6. 표현 계층 (message) : 데이터의 암호화 및 복호화를 담당하여 프로토콜대로 데이터를 변환한다.
    인터넷 계층 구조가 아니므로, 응용 계층의 지원을 받거나 직접 개발해야한다.
  7. 응용 계층 (message) : 최상위 계층이다. 통신의 최종 목적지로서, 사용자와 직접 상호작용한다.
    새로운 프로토콜을 추가하기 용이하다.

TCP

  • TCP(Transmission Control Protocol) : 데이터를 신뢰성 있게 전달하기 위한 전송 계층의 프로토콜
    • 연결을 위한 3-way-handshake와 연결해제를 위한 4-way-handshake를 알아보자.

3-way-handshake


  • TCP 통신을 시작하기 전의 과정이다.
    A : Client , B : Server
  1. A ➡️ B SYN : 연결 요청 메시지를 전송한다.
    Sequence number는 임의의 숫자이다.

  2. B ➡️ A ACK : 요청을 수락한다.
    B ➡️ A SYN : A에게 포트 개방을 요청한다.

  3. A ➡️ B ACK : 수락 여부를 확인하고, 연결한다.
    이때 데이터 전송도 가능하다.

4-way-handshake


  • TCP 통신을 끝내는 과정이다.
  1. A ➡️ B FIN : 연결 종료를 요청한다. 연결 상태는 유지한다.
  2. B ➡️ A ACK : 종료 요청을 확인한다. B가 전송할 데이터가 남아있다면 전송한다.
    A또한 전송할 데이터가 남아있다면 이때 전송한다.(3번째 화살표)
  3. B ➡️ A FIN : 연결 종료를 허용한다.
  4. A ➡️ B ACK : 허용을 확인했음을 알린다. B는 소켓 연결을 해제한다.

UDP

  • UDP(User Datagram Protocol) : TCP와 마찬가지로 전송 계층의 프로토콜이다.
    • 정상 수신 여부를 확인하지 않고, 전송 여부만 확인한다.
    • TCP에서 수행하는 (흐름 제어, 혼합 제어, 전송 보장, 순서 보장) 모두 수행 하지않는다.
      따라서 빠른 속도와 낮은 부하를 특징으로 지닌다.
    • 1:1,1:n,n:m1:1 , 1:n , n:m 모두 지원한다.

HTTP HTTPS


  • HTTPS(HyperText Transfer Protocol SSL) : 보안에 취약한 HTTP를 SSL 프로토콜을 통해 보완한다.
    • SSL이 무엇인지 알아보자.

SSL(Secure Socket Layer)

  • SSL : 표현 계층에 해당하는 프로토콜이며, 공개키 암호화를 기반으로 동작한다.
    • 대칭키 : 암호화와 복호화에 필요한 키가 동일한 방식이다.
      즉 A와 B는 공통된 키가 필요하다.
    • 공개키 : 사용자에게 공개되는 공개키소유자만 가지는 비밀키 두 개를 사용한다.
      공개키로 암호화된 평문은 비밀키로 복호화 가능하고,
      비밀키로 암호화된 평문은 공개키로 복호화 가능하다.
    • 세션키 : 대칭키 방식과 공개키 방식을 혼합한다.
      공개키 방식으로 대칭키를 암호화하여 사용함으로써 안전하고 빠른 통신을 가능케한다.
  • 목적
  1. A가 B의 공개키로 암호화하면, 해당 공개키의 소유자만 복호화할 수 있다.
  2. A가 A의 비밀키로 암호화하면, A가 생성한 암호임을 인증한다.

    즉, 통신내용의 공격자를 차단하고 서버의 안정성을 보증한다.

DNS round robin

  • DNS round robin : DNS 서버에서 하나의 도메인의 여러 IP 주소를 등록해둔 뒤, 요청이 들어오면 순서대로 반환한다.
    • 장점
      • 서버 트래픽의 부하가 적어진다.
      • 중간 장비가 없어 비용 부담이 적어진다.
    • 단점
      • 서버 수만큼의 공인 IP 주소가 필요하다.
      • 균등하게 분배되지 않는다 : 같은 프록시 서버를 경유하면 같은 서버 방문
      • 서버가 다운되어도 제공한다.

✨오늘 내용은 여기까지✨


커리큘럼 남은 일정

인터넷

  • 인터넷 작동 원리
  • HTTP란?
  • 브라우저 동작 원리
  • DNS 작동 원리
  • 도메인 네임이란?
  • 호스팅이란?

    기본적인 프론트엔드 지식
  • HTML
  • CSS
  • JavaScript

    OS 및 일반적인 지식
  • 터미널 사용방법
  • OS 작동 방식
  • 프로세스 관리
  • 스레드와 동시성
  • 기본적인 터미널 명령어
  • 메모리 관리
  • 프로세스간 통신 (IPC)
  • 입출력(I/O) 관리
  • POSIX 기초
  • 기본적인 네트워크 개념

    버전 관리
  • Git 기본 사용법

    DataBase
  • PostgreSQL (변경 가능성 있음)
  • MongoDB

    DataBase 상세 정보
  • ORM
  • ACID
  • Transaction
  • N + 1 Problem
  • DataBase 정규화
  • Index와 작동 방식

    API
  • 인증
  • REST
  • JSON APIs

    캐싱
  • CDN
  • Server side
  • Client side

    웹 보안 지식
  • MD5, SHA family, scyrpt, bcrypt
  • HTTPS, CORS, SSL/TL, 보안 정책

    Testing
  • 통합 테스트
  • 단위 테스트
  • 기능 테스트

  • CI/CD

    개발과 설계 원칙
  • SOLID
  • KISS
  • YAGNI
  • DRY

    아키텍처 패턴
  • 모놀로틱 앱
  • 마이크로서비스
  • SQA
  • Serverless

    검색 엔진
  • ElasticSearch

    메세지 브로커
  • RabbitMQ, Kafka

    컨테이너화 vs 가상화
  • Docker

    GraphQL
  • Apollo

  • 웹 소켓

  • 웹 서버

    확장성
  • 측정, 모니터링, 원격측정
  • 마이그레이션 전략
  • 수평적 확장 vs 수직적 확장
  • 관찰 가능성을 고려한 확장

참고 자료

Seogeurim님 Github


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

0개의 댓글