HTTP란?
Hyper Text Transper Protocol의 약자로, 텍스트 기반 통신 규약
OSI 7계층 중 응용 계층 (Application Layer)의 웹 서비스 통신에서 사용되는 프로토콜
HTTP의 구성
- 요청(Request) : 클라이언트 -> 서버

- 응답(Response) : 서버 -> 클라이언트

HTTP Methods (요청 시 사용됨)
GET | 데이터 조회 |
POST | 요청 데이터 처리 (ex. 등록) |
PUT | 데이터 대체 (이전 데이터가 없다면 생성) |
PATCH | 데이터 일부 변경 |
DELETE | 데이터 삭제 |
HEAD | GET과 동일하나, 서버에서 Body를 제외하고 반환 |
OPTIONS | 웹 서버에서 지원하는 메소드 정보 파악 |
CONNECT | Proxy 기능 요청 |
TRACE | 루프백 메세지 호출을 위해 테스트용으로 사용 |
Status Code
1XX | 정보 제공 | 현재 클라이언트 요청까지 성공하였으니 계속 진행해도 된다는 의미의 임시 정보 제공 (HTTP/1.1부터 지원) |
2XX | 요청 성공 | 클라이언트의 요청이 서버에서 성공적으로 처리됨 |
3XX | 리다이렉션 | 완전한 처리를 위해 추가적인 처리가 필요하다는 의미 (보통 요청의 주소가 이동되었으니 그 주소로 다시 이동하라는 의미) |
4XX | 클라이언트 오류 | 클라이언트가 잘못된 요청을 한 경우 |
5XX | 서버 오류 | 서버 내부 문제로 인하여 전달받은 요청 처리에 실패한 경우 |
HTTP/1.0
- 한 연결당 하나의 요청을 처리하도록 설계됨
- 위 방식으로 인하여 서버로부터 파일을 가져올때마다 TCP 3 Way Handshake 과정을 거쳐야 함. 이로 인해 RTT가 증가하는 단점을 가짐 (RTT : 패킷이 목적지에 도달한 후 다시 출발지로 돌아오기까지 걸리는 시간)
- RTT 증가를 줄이기 위하여 이미지 스플리팅 / 코드압축 / 이미지 Base64 인코딩 등의 방법을 사용함
HTTP/1.1
- HTTP/1.0에서처럼 매번 TCP 연결을 하지 않고, 최초 TCP 초기화를 한 후 'keep-alive'라는 옵션으로 여러번 파일 송수신이 가능하게됨
- HTTP/1.0에도 keep-alive 옵션이 있었으나 보편화되지 않았고, 1.1으로와서 기본 옵션으로 설정됨
- HTTP/1.0의 헤더에는 쿠키 등 많은 메타데이터가 들어 있고 압축되지 않아 크기가 컸던 '무거운 헤더 구조'의 문제가 존재
HTTP/2.0
- 이전 버전과 비교하여 줄어든 지연 시간, 빨라진 응답 시간, 멀티플렉싱 / 헤더 압축 / 서버 푸시 / 요청의 우선순위 처리 등을 지원
- 멀티플렉싱 : 여러 개의 스트림을 사용하여 송수신하는 것 (스트림 - 연결을 통한 데이터 흐름)
- 헤더 압축 : 허프만 코딩 압축 알고리즘을 사용하는 HPACK 압축 형식
- 서버 푸시 : 클라이언트 요청없이 서버가 데이터를 바로 푸시할 수 있는 것
HTTPS
- HTTP/2.0부터는 HTTPS를 사용하여 동작함
- HTTPS는 응용 계층과 전송 계층 사이에 SSL/TLS 계층을 추가하여 데이터를 암호화하여 통신할 수 있게 함
- SSL/TLS는 보안 세션을 기반으로 데이터를 암호화하고, 보안 세션 생성 시, 인증 메커니즘 / 키 교환 암호화 알고리즘 / 해싱 알고리즘 사용
- HTTPS를 사용한다면 SEO(검색엔진 최적화)에 관하여도 이점이 되어, 더 많은 사용자들에게 노출 가능
HTTP/3 - 현재 사용되는 프로토콜
- TCP 상에서 동작하던 이전 버전들과 달리, QUIC 계층 위에서 동작
- TCP가 아닌 UDP 기반으로 동작
- 멀티 플렉싱을 지원하고 UDP 기반으로 초기 연결에 관하여 지연 시간이 줄어든다는 장점
'Computer Science > 네트워크' 카테고리의 다른 글
HTTP Status Code에 대해 알아보자 (1) | 2024.02.09 |
---|---|
GET과 POST를 비교해보자 (0) | 2024.02.04 |
TCP의 3 Way HandShake (0) | 2024.02.04 |
TCP와 UDP를 비교해보자 (1) | 2024.02.04 |
OSI 7계층과 TCP/IP 4계층을 비교해보자 (0) | 2024.02.04 |