HTTP Protocol
카테고리 | 기술 |
---|---|
태그 | |
수정일 | Mar 13, 2024 |
작성일 | Nov 26, 2023 |
HTTP의 정의
HTTP; HyperText Transfer Protocol : 하이퍼텍스트 전송 규약
HTTP는 OSL 7 Layer의 최상위 계층인 Application 계층에 위치하며 데이터 교환을 위한 기본적인 규약을 정의하는데 그 목적을 가지고 있습니다.
Client-Server 구조로 이루어져 있으며 보통 Client 요청은 Request, Server 요청은 Response로 말합니다.
HTTP는 Web의 발전에 따라 진화하였으며 이 문서에서는 각 버전 별 특징을 알아보도록 하겠습니다.
HTTP 버전 별 특징 및 장단점
HTTP 1.0
HTTP 1.0 특징
- 단일 연결: 각 요청마다 새로운 연결을 맺는 방식이었습니다. 각각의 요청은 개별적인 TCP 연결을 통해 이루어졌습니다.
- 단방향 통신: 클라이언트가 서버에게 요청을 보내고, 서버가 응답을 반환하는 단방향 통신 방식이었습니다.
- 상태 저장 불가능: 서버는 클라이언트의 상태를 유지하지 않았기 때문에 각각의 요청은 독립적이었습니다.
- 헤더의 부족: HTTP 1.0의 헤더는 상대적으로 간단하며, 다양한 메타데이터를 전달하기에는 제한적이었습니다.
HTTP 1.0 장점
- 간단하고 직관적: HTTP 1.0은 단순하고 직관적인 프로토콜이었기 때문에 구현과 사용이 비교적 쉬웠습니다.
- 일관성: 단일 연결을 통한 각 요청이 독립적이기 때문에, 각각의 요청이 일관성 있게 처리되었습니다.
HTTP 1.0 단점
- 성능 이슈: 매번 새로운 연결을 맺어야 했기 때문에, 웹 페이지 로딩 시간이 길어지고 성능이 저하되는 문제가 있었습니다.
- 상태 저장 불가능: 클라이언트와 서버 간의 상태를 유지하지 않았기 때문에, 특정 세션에서의 정보 공유가 어려웠습니다.
- 헤더의 부족: HTTP 1.0의 헤더는 제한적이었기 때문에, 다양한 메타데이터를 전달하기에는 한계가 있었습니다.
💡
HTTP 1.0은 이러한 한계로 인해 웹의 발전과 함께 HTTP 1.1과 같은 업데이트가 이루어지게 되었습니다. HTTP 1.1에서는 Keep-Alive 연결을 통한 지속적인 연결, 파이프라이닝과 같은 기술이 도입되어 성능과 효율성이 향상되었습니다.
HTTP 1.1
HTTP 1.1 특징
- Keep-Alive 연결 (지속 연결): HTTP 1.1에서는 Keep-Alive 연결을 통해 단일 TCP 연결을 유지하여 여러 요청과 응답을 하나의 연결에서 처리할 수 있습니다. 이는 연결 지연을 감소시키고 성능을 향상시킵니다.
- 헤더 압축: HTTP 1.1에서는 헤더 압축을 지원하여 헤더의 크기를 최소화하고 네트워크 대역폭을 절약합니다.
- 분할된 요청 처리 (Chunked Transfer Encoding): 큰 데이터를 여러 개의 작은 조각으로 분할하여 전송하는 Chunked Transfer Encoding을 지원하여 효율적인 데이터 전송이 가능합니다.
- 파이프라이닝: 여러 요청을 하나의 TCP 연결로 동시에 보낼 수 있는 파이프라이닝을 지원하여 성능을 향상시킵니다. 하지만 파이프라이닝은 일부 상황에서 지원되지 않을 수 있습니다.
- 가상 호스팅 지원: 하나의 웹 서버에서 여러 독립적인 도메인을 호스팅하는 가상 호스팅을 지원합니다.
- 캐시 지원 향상: 캐시 헤더를 통해 캐시 제어를 세밀하게 조절하고, 캐시의 효과적인 활용을 가능케 합니다.
HTTP 1.1 장점
- 성능 향상: Keep-Alive 연결, 헤더 압축, 파이프라이닝 등의 기능을 통해 HTTP 1.1은 성능을 향상시켰습니다.
- 효율적인 연결 관리: Keep-Alive 연결을 통해 여러 요청과 응답을 하나의 연결에서 처리할 수 있어 연결 관리가 효율적입니다.
- 캐시 향상: 캐시 지원이 향상되어 콘텐츠의 효과적인 재사용이 가능하며, 네트워크 대역폭을 절약합니다.
HTTP 1.1 단점
- 파이프라이닝 문제: 파이프라이닝은 지원되지 않는 경우가 있으며, 일부 상황에서는 요청의 순서가 중요할 수 있습니다.
- 무거운 헤더: 헤더의 크기가 크고 불필요한 반복이 있을 수 있습니다. 헤더 압축이나 기타 기술이 필요할 수 있습니다.
- 보안 부족: 기본적으로 암호화가 적용되지 않으므로 데이터의 보안이 보장되지 않습니다. 이를 보완하기 위해 HTTPS를 사용하는 것이 권장됩니다.
HTTP 2.0
HTTP 2.0 특징
- 다중 연결 (Multiplexing): 하나의 TCP 연결을 통해 여러 요청과 응답을 병렬로 처리할 수 있어, 성능과 효율성을 향상시킵니다.
- 헤더 압축: 헤더 필드를 압축하여 대역폭을 절약하고 네트워크 성능을 향상시킵니다. 이는 HPACK 압축 알고리즘을 사용합니다.
- 우선 순위 지정: 각 요청에 대한 우선 순위를 설정하여 중요한 자원에 대한 빠른 응답을 가능하게 합니다.
- 서버 푸시 (Server Push): 서버가 클라이언트의 요청 없이도 필요한 리소스를 미리 보내는 기능으로, 페이지 로딩 속도를 개선하고 불필요한 요청을 감소시킵니다.
- 세션 상태 유지: 쿠키 및 기타 메커니즘을 통해 세션 상태를 유지할 수 있어, 상태를 저장할 수 있는 기능을 지원합니다.
- 보안 강화: 기본적으로 TLS(Transport Layer Security)를 사용하여 통신을 암호화하고 데이터의 안전성을 보장합니다.
💡
HTTP 2.0은 웹 통신의 성능과 효율성을 향상시키는 많은 혁신적인 기능을 도입하여, 전반적으로 웹 사용자 경험을 향상시켰지만 환경에 따라 호환성 문제에 주의해야 합니다.
HTTP 2.0의 장점
- 성능 향상: 다중 연결 및 헤더 압축을 통해 성능이 향상되어 웹 페이지의 로딩 속도가 빨라집니다.
- 효율적인 리소스 사용: 다중 연결과 서버 푸시를 통해 효율적으로 리소스를 관리하고 활용할 수 있습니다.
- 우선 순위 설정: 우선 순위를 통해 중요한 자원에 대한 처리를 우선시 함으로써 사용자 경험을 개선합니다.
- 보안 강화: TLS 사용을 권장하여 데이터의 안전성을 보장하며, 중요한 정보의 안전한 전송을 지원합니다.
HTTP 2.0의 단점
- 서버 구현의 복잡성: HTTP 2.0의 구현이 기존보다 복잡하며, 서버 및 클라이언트가 업그레이드되어야 합니다.
- 안전하지 않은 환경에서의 사용 어려움: 보안 강화를 위해 TLS를 권장하지만, 일부 환경에서는 TLS의 설정이 어려울 수 있습니다.
- 중개 서버의 문제: 일부 중개 서버나 방화벽에서 HTTP 2.0을 지원하지 않을 수 있어 호환성 문제가 발생할 수 있습니다.
버전 별 비교
특징 | HTTP 1.0 | HTTP 1.1 | HTTP 2.0 |
---|---|---|---|
연결 방식 | 단일 연결 | Keep-Alive 연결 (지속 연결) | 다중 연결 (Multiplexing) |
헤더 처리 | 헤더의 크기가 크고 불필요한 반복이 있음 | 헤더 압축 및 Keep-Alive로 헤더 재사용 가능 | 헤더 압축 (HPACK 알고리즘 사용) |
캐시 지원 | 캐시 지원이 미비함 | 캐시 지원이 향상됨 | 캐시 지원이 향상됨 |
파이프라이닝 | 지원하지 않음 | 여러 요청을 하나의 TCP 연결로 동시에 보낼 수 있음 | 지원됨 (Multiplexing을 통해 보다 효율적) |
분할된 요청 처리 | 지원하지 않음 | 요청 및 응답을 여러 조각으로 분할 가능 | 요청 및 응답을 여러 조각으로 분할 가능 |
오류 처리 | 정의된 몇 가지 오류 코드만 사용 | 더 많은 상태 코드와 세밀한 오류 처리가 가능함 | 더 많은 상태 코드와 세밀한 오류 처리가 가능함 |
서버 푸시 | 지원하지 않음 | 서버 푸시 (Server Push) 지원 | 서버 푸시 (Server Push) 지원 |
우선 순위 설정 | 지원하지 않음 | 요청에 대한 우선 순위 설정 가능 | 요청에 대한 우선 순위 설정 가능 |
세션 상태 유지 | 상태 저장 불가능 | 상태 저장 가능 (쿠키 등 사용) | 상태 저장 가능 (쿠키 등 사용) |
보안 | 보안 강화를 위한 추가 표준 필요 | 기본적으로 보안 강화 (TLS 사용 권장) | 기본적으로 보안 강화 (TLS 사용 권장) |
Previous Nov 25, 2023
« 서울의 봄 (2023)
« 서울의 봄 (2023)
Nov 26, 2023 Next
브라우저 동작 »
브라우저 동작 »