[면접을 위한 CS 전공지식 노트] 네트워크 - HTTP

Yijun Jeon·2024년 1월 23일
0

CS 전공지식

목록 보기
13/21
post-thumbnail

네트워크

💡 네트워크란?

  • 노드(node) 와 링크(link) 가 서로 연결되어 있으며 리소스를 공유하는 집합
    • 노드 : 네트워크 장치
      • 서버, 라우터, 스위치 등등
    • 링크 : 유선 또는 무선

💡 HTTP란?

애플리케이션 계층으로서 웹 서비스 통신에 사용됨


HTTP/1.0

⭐️ HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계됨
👉 서버에서 파일을 가져올 때마다 TCP 3-way handshake를 해야 하므로 RTT 증가

RTT : 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 사간으로, 패킷 왕복 시간

🔗 해결책 : 이미지 스플리팅

많은 이미지가 합쳐 있는 하나의 이미지를 다운로드받고, background-imageposition을 이용하여 이미지를 표기

🔗 해결책 : 코드 압축

코드를 압축해서 개행 문자, 빈칸 등을 없애서 코드의 크기를 최소화하는 방법 -> 코드 용량이 줄어듦

🔗 해결책 : 이미지 Base64 인코딩

이미지 파일을 64 진법으로 이루어진 문자열로 인코딩하는 방법

  • 서버와의 연결을 열고 이미지에 대해 서버에 HTTP 요청을 할 필요가 없다는 장점
  • Base64 문자열로 변환할 경우 37% 정도 크기가 더 커지는 단점

HTTP/1.1

⭐️ HTTP/1.1은 매번 TCP 연결을 하는 것이 아니라, 한 번 TCP 초기화를 한 이후에 keep-alive라는 옵션으로 여러 개의 파일을 송수신할 수 있음

❗️ 문제점들

  • 요청할 리소스 개수에 비례해서 대기 시간이 길어짐
  • HOL Blocking 문제
  • 무거운 헤더 구조

HOL Blocking (Head Of Line Blocking) : 첫 번째 패킷에 의해 같은 큐에 있는 패킷들이 지연될 때 발생하는 성능 저하 현상


HTTP/2

⭐️ HTTP/2 는 이전보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있고 다음의 서비스를 지원

  • 멀티플렉싱
  • 헤더 압축
  • 서버 푸시
  • 요청의 우선순위 처리
  • HTTPS 위에서 동작

💡 멀티플렉싱 이란?

여러 개의 스트림을 사용하여 송수신하는 것
👉 특정 스트림의 패킷이 손실돼도 해당 스트림에만 영향을 미치고 나머지 스트림은 멀쩡하게 동작
👉 단일 연결을 사용하여 병렬로 여러 요청, 응답 가능
👉 HOL Blocking 문제 해결 가능

스트림 : 시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이터 흐름

💡 헤더 압축 이란?

허프만 코딩 압축 알고리즘을 사용하는 HPACK 압축 형식을 가짐

  • 허프만 코딩(huffman coding) : 전체 데이터의 표현에 필요한 비트양을 줄이는 원리
    • 문자열을 문자 단위로 쪼개서 빈도수를 셈
    • 빈도가 높은 정보 -> 적은 비트 수로 표현
    • 빈도가 낮은 정보 -> 많은 비트 수로 표현

💡 서버 푸시 란?

HTTP/2는 클라이언트의 요청 없이 서버가 바로 리소스를 푸시할 수 있음

  • ex) html을 읽으면서 그 안에 들어있는 css나 js 파일을 서버에서 클라에게 먼저 푸시할 수 있음

HTTPS

💡 HTTPS 란?

애플리케이션 계층과 전송 계층 사이에 신뢰 계층SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청
👉 이를 통해 '통신을 암호화'

💡 SSL/TLS 이란?

전송 계층에서 보안을 제공하는 프로토콜로, 제3자가 메시지를 도청하거나 변조하지 못하도록 해줌
👉 공격자가 서버인 척하며 사용자 정보를 가로채는 '인터셉터'를 방지

  • 보안 세션을 기반으로 데이터를 암호화
    • 인증 메커니즘 : CA 에서 발급한 인증서 기반
    • 키 교환 암호화 알고리즘
      • 디피-헬만 키 교환 암호화 알고리즘 : 공통의 암호키인 PSK 공유
    • 해싱 알고리즘
      • SHA-256 알고리즘 : 전처리된 메시지를 기반으로 해시를 반환하는 결과값이 256 비트인 알고리즘

보안 세션 : 보안이 시작되고 끝나는 동안 유지되는 세션
세션 : 운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간

SSL/TLS는 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보 등을 공유

  1. 클라와 서버가 키를 공유하고 이를 기반으로 인증 작업이 일어나는 1-RTT 이후 데이터 송수신
  2. 클라는 사이퍼 슈트 (cypher suites) 를 서버에 전달
  3. 서버는 받은 사이퍼 슈트의 암호화 알고리즘 리스트를 제공할 수 있는지 확인
  4. 제공 가능하면, 서버에서 클라로 인증서를 보내는 인증 매커니즘 시작
  5. 해싱 알고리즘 등으로 암호화된 데이터 송수신 시작

사이퍼 슈트 (cypher suites) : 프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약

🔗 참고 : HTTPS 구축 방법

  1. 직접 CA에서 구매한 인증키를 기반으로 구축
  2. 서버 앞단에 HTTPS를 제공하는 로드밸런서를 둠
  3. 서버 앞단에 HTTPS를 제공하는 CND을 둠

HTTP/3

⭐️ HTTP/3은 UDP 기반으로 QUIC 이라는 계층 위에서 돌아감

  • 멀티플렉싱 지원
  • 초기 연결 성절 시 지연 시간 감소
    • 3-way handshake가 필요 없기 때문
    • 1-RTT만 소요

QUIC : 순방향 오류 수정 메커니즘 (FEC, Forword Error Correction)
👉 수신 측에서 손실된 패킷의 에러를 검출하고 수정하는 방식으로, 낮은 패킷 손실률을 자랑함

0개의 댓글