HTTP

Jeong Gyejin·2023년 3월 16일
0

네트워크

목록 보기
1/3

HTTP란?

Hyper Text Transfer Protocol의 약자로 인터넷에서 데이터를 주고받을 수 있는 프로토콜을 이야기합니다.

HTTP 1.0

기본적으로 한 연결당 하나의 요청을 처리하도록 설계가 되었습니다. 그러나 TCP의 3웨이 핸드 쉐이크를 계속해서 열어야하기 때문에 RTT(패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 패킷 왕복시간)의 증가라는 단점이 발생하였습니다.

이런 문제를해결하기 위해서

  1. 이미지 스플리팅: 많은 이미지가 합쳐져있는 하나의 이미지를 다운받고, 이를 기반으로 백그라운드 이미지의 포지션을 이용하여 이미지를 표기하는 방법을 이야기합니다.

  2. 코드 압축: 코드를 압축해서 개행문자나 빈칸을 없애서 코드의 크기를 최소화합니다.

  3. 이미지 Base64 인코딩: 이미지 파일을 64진법으로 이루어진 문자열로 인코딩합니다.

HTTP 1.1

매번 TCP연결을 하는 것이 아니라 한번 TCP를 초기화한 후 Keep-alive라는 옵션으로 여러개의 파일을 송수신 할 수 있게 바꾸었습니다.

TCP 3웨이 핸드쉐이크가 발생하면 다음부터는 발생하지 않습니다.

그러나 HOL Blocking(네트워크에서 같은 큐에 있는 패킷이 그 첫번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상)의 문제와 무거운헤더 구조(많은 메타 데이터가 들어있어 압축이 되지 않아 무거워짐)가 발생합니다.

HTTP 2.0

지연시간을 줄이고 응답시간을 더 빠르게 할 수 있으며, 멀티플렉싱, 헤더 압축, 서버 푸쉬, 요청의 우선순위 처리를 지원합니다.

  • 멀티 플렉싱: 여러개의 스트림을 사용하여 송수신 하는 것으로 특정 스트림의 패킷이 손실되었다고 하더라도 해당 스트림에만 영향을 미치게 하는 것을 이야기합니다.

  • 서버 푸쉬: 클라이언트의 요청 없이 서버가 바로 리소스를 푸쉬가 가능합니다.

HTTPS

애플리케이션 계층과 전송 계층 사이에서 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP요청을 이야기합니다.

  • SSL/TLS
    • 보안을 제공하는 프로토콜로 클라이언트와 서버가 통신을 할 때 3자가 메시지를 도청하거나 변조하지 못하도록 하는 것을 이야기합니다.
    • 공격자가 서버인척 하며 사용자의 정보를 가로채는 네트워크상의 인터셉터 방지가 가능합니다.
    • 보안세션을 기반으로 데이터를 암호화하며 보안세션이 만들어질때 인증 메커니즘, 키교환 암호화 알고리즘, 해싱 알고리즘이 사용됩니다.

보안세션: 보안이 시작되고 끝나는 동안 유지되는 세션으로, SSL/TLS는 핸드쉐이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보등을 공유합니다.

HTTPS 구축방법

  • CA에서 구매한 인증키를 기반으로 HTTPS 서비스 구축
  • 서버 앞단의 HTTPS를 제공하는 로드밸런서를 두어서 구축
  • 서버 앞단에 HTTPS를 제공하는 CDN을 두어서 구축.

HTTP 3

QUIC 계층에서 돌아가며 UDP를 기반으로 작동이 됩니다.

QUIC: 전송한 패킷이 손싱되었다면 수신측에서도 에러를 검출하고 수정하는 방식이며, 열악한 네트워크 환경에서도 낮은 패킷 손실률을 가집니다.

  • 초기 연결 설정 시 지연시간이 감소되는 장점이 있습니다.
profile
항상 더 나은 개발자가 되기 위해서 끊임없이 공부하고 학습하면서 성장하는 사람이 되겠습니다.

0개의 댓글