[ 2024.10.28 TIL ] 모의 면접 준비

박지영·2024년 10월 28일
0

Today I Learned

목록 보기
70/84

전송 계층 프로토콜

전송 계층의 프로토콜은 크게 TCP와 UDP 2가지가 있습니다.

  • TCP (Transmission Control Protocol): 전송 제어 프로토콜

    • 연결 지향적 프로토콜이며 3-way handshaking으로 연결을 수립하고 데이터의 순서를 보장하고
    • 흐름 제어와 오류 제어 그리고 혼잡 제어를 제공하기 때문에 데이터가 신뢰성을 가지고 있습니다.
    • TCP는 주로 웹 브라우징, 이메일, 파일 전송 등에 사용됩니다.
  • UDP (User Datagram Protocol): 사용자 데이터그램 프로토콜

    • 비연결형 프로토콜이며 빠른 전송이 가능하지만 데이터가 신뢰성을 보장하지 않습니다.
    • 오류 제어나 순서 보장이 필요하지 않은 실시간 스트리밍, DNS, 게임 등의 서비스에 사용됩니다.

IP의 한계:

  • IP(Internet Protocol)는 데이터 전송을 위한 주소 지정과 패킷 전달을 담당합니다.

  • 비연결형 서비스로 패킷 순서 보장할 수 없고 흐름 제어 기능, 오류 제어 기능이 없거나 제한적이기 때문에 신뢰성 또한 보장할 수 없습니다.

  • 이러한 한계를 TCP가 보완하여 신뢰성 있는 통신 제공합니다. tcp/ip

오류 제어와 흐름 제어:

  • 오류 제어:
    재전송 기반 오류 제어 ARQ(Automatic Repeat Request)
    ARQ을 통해 데이터가 손상되거나 누락되었는지 확인하고, 필요 시 데이터 재전송을 통해 정확한 데이터를 보장합니다. ARQ에서는 ACK/NACK을 통해 오류 발생 여부를 파악합니다.

  • ARQ에는 Stop-and-Wait, / 하나씩 전송 ack 수신 후 다음 전송
    Go-Back-N, / 연속 전송 발생 지점 재전송
    Selective Repeat / 오류만 재전송
    등의 방식이 있습니다.

  • 흐름 제어:
    슬라이딩 윈도우(Sliding Window) 방식을 사용해 송수신 간의 전송 속도를 조절하여 수신자가 데이터를 너무 빠르게 받지 않도록 조정합니다.

대칭키/비대칭키 암호화

  • 대칭키 암호화:
    • 같은 키로 암호화와 복호화를 수행합니다.
    • 암호화 속도가 빠르지만 보안에 문제가 생길 수 있어 키 관리가 어렵습니다.
    • 알고리즘으로는 AES(Advanced Encryption Standard)을 주로 사용합니다.

  • 비대칭키 암호화:
    • 서로 다른 키를 사용하는 방식입니다.
    • 공개키(암호화)와 비밀키(복호화) 쌍을 사용합니다.
    • 속도가 느리지만 키 관리가 용이하고 보안성이 높습니다.
    • RSA와 / 소인수 분해 문제를 기반으로 하여, 인증뿐만 아니라 기밀성을 위한 암호화
      ECDSA / 타원 곡선 수학을 이용해 인증과 서명에 특화된 알고리즘으로, 짧은 키 길이로 높은 보안성을 제공하며 주로 디지털 서명에서 사용
      같은 알고리즘이 있습니다.
      ECDSA는 https의 ssl/tls 방식에도 사용됩니다.

대칭키/비대칭키 혼합 사용:

  • 대칭키는 빠른 속도, 비대칭키는 키 관리의 장점을 가지고 있습니다.
  • 혼합 방식은 주로 비대칭키로 대칭키를 전달하여, 이후 데이터 암호화에는 속도가 빠른 대칭키를 사용하는 방법입니다. 이 방식은 HTTPS에서 사용됩니다.

HTTPS:

  • HTTPS(Hypertext Transfer Protocol Secure)는 HTTP에 SSL/TLS 프로토콜을 추가해 보안을 강화한 통신 방식입니다.

  • ssl/tls는 디지털 인증서로 브라우저, 방문한 웹사이트, 웹사이트 서버 간 전송된 데이터를 암호화하여 중간자 공격을 방지하고 인터넷 연결을 안전하게 보호합니다.

  • HTTPS는 웹 서버와 클라이언트 간의 전송 데이터가 제3자에게 노출되지 않도록 비대칭키로 대칭키를 안전하게 교환한 뒤, 대칭키로 데이터 암호화를 수행합니다.

로드밸런싱

  • 로드밸런싱은 여러 서버에 요청을 분배해 과부하를 방지하고, 가용성과 성능을 높이는 기술입니다.

  • 클라이언트의 요청을 여러 서버에 나누어 처리함으로써 특정 서버의 부하를 완화하고, 서비스 응답 속도를 높입니다.

  • 하드웨어, 소프트웨어 두 종류 /
    예시로 Nginx, AWS Elastic Load Balancing

로드밸런싱 알고리즘:

4가지가 있습니다.

  • 라운드 로빈(Round Robin): 순서대로 요청을 서버에 분배하는 방식입니다.

  • 가중 라운드 로빈(Weighted Round Robin): 서버에 부여한 가중치에 따라 분배하는 방식입니다.

  • Least Connections: 가장 적은 연결을 가진 서버에 요청을 전달합니다.

  • IP 해시: 클라이언트 IP를 해싱하여 특정 서버에 할당, 같은 클라이언트는 동일한 서버로 라우팅됩니다.

  • 최소 응답 시간: 응답 시간 기준으로 서버에 요청을 전달합니다.

헬스 체크:

  • 헬스 체크는 로드밸런서가 서버의 상태를 주기적으로 확인하여, 비정상 서버를 트래픽에서 제외하는 기능입니다.
  • 일반적으로 ping 명령이나 HTTP 상태 코드를 사용해 서버 상태를 검사하며, 장애가 발생한 서버에 트래픽이 전달되지 않도록 합니다.
  • 헬스 체크를 통해 서비스의 가용성과 안정성을 보장합니다.
profile
신입 개발자

0개의 댓글