HTTP는
"HyperText Transfer Protocol"의 약자로,
인터넷 상에서 데이터를 주고받을 수 있는 프로토콜(규약) 중 하나이고, 웹 브라우저와 웹 서버 간에 데이터를 전송하는데 사용된다.
HTTP는 클라이언트-서버 모델을 사용하여 작동한다.
웹 브라우저는 HTTP를 사용하여 웹 서버로 요청(request)을 보내고,웹 서버는 해당 요청에 대한 응답(response)을 반환한다. 이때, 요청과 응답에는 헤더(header)와 본문(body)이 포함된다.
현재 HTTP는 모든 것을 전송한다.
- HTML, TEXT
- IMAGE, 음성, 영상, 파일
- JSON, XML ( API )
- 모든 형태의 데이터 전송가능
HTTP는
인터넷에서 데이터를 주고받는 통신 규약 중 하나로, 현재는 거의 모든 종류의 데이터를 전송할 수 있다. 이전에는 HTML, TEXT 데이터를 전송하는 용도로 많이 사용되었지만, 최근에는 이미지, 음성, 영상, 파일 등 모든 형태의 데이터를 전송할 수 있게 되었다.
또한, API를 통해 JSON, XML과 같은 데이터 형식도 전송할 수 있다. 이러한 데이터 형식은 웹 애플리케이션에서 다양한 용도로 활용되고 있으며, HTTP를 통해 전송함으로써 데이터의 안정성과 효율성을 보장할 수 있다.
따라서, 현재 HTTP는 거의 모든 종류의 데이터를 전송할 수 있기 때문에, 인터넷에서 다양한 종류의 데이터를 이용할 수 있는 환경이 만들어졌다. 이를 통해 사용자는 더욱 편리하게 정보를 공유하고 이용할 수 있게 되었다.
HTTP 역사
HTTP / 0.9 1991년 : GET메서드만 지원, HTTP 헤더 X
HTTP / 1.0 1996년 : 메서드, 헤더 추가
HTTP / 1.1 1997년 : 가장 많이 사용, 가장 중요한 버전
- 버전 개정 : RFC2068(1997) -> RFC2616 (1999) -> RFC7230~7235(2014)
HTTP / 2 2015년 : 성능 개선
HTTP / 3 진행중 : TCP 대신에 UDP 사용, 성능 개선
기반 프로토콜
- TCP : HTTP / 1.1 , HTTP / 2
- UDP : HTTP / 3
- 현재 HTTP / 1.1 주로 사용
- - HTTP/2, HTTP/3 도 점점 증가
HTTP2와 HTTP3는
기존 버전인 HTTP / 1.1의 성능을 개선하기 위해 개발되었다.
HTTP2는
여러 개의 요청을 하나의 TCP 연결로 처리하여 네트워크 지연을 줄이고, 서버 푸시(server push) 기능을 추가하여 페이지 로딩 속도를 높였고
HTTP3는
TCP 대신에 UDP를 사용하여 연결 설정 시간을 줄이고, 중간에 패킷이 유실되었을 때의 재전송 속도를 높였다.
💡HTTP는 모든 형태의 데이터 전송이 가능하며, 현재 HTTP/1.1이 가장 많이 사용되지만,
HTTP/2와 HTTP/3의 사용이 점점 증가하고있다. HTTP/2와 HTTP/3는 성능개선으로 HTTP 1.1 스펙을 깊이 이해하면 된다.
HTTP특징
- 클라이언트 서버 구조(기반 동작)
- 무상태 프로토콜(스테이리스), 비연결성
- HTTP 메시지 통신
- 단순함, 확장가
클라이언트 서버 구조
클라이언트에서 요청하고, 서버에서 응답한다. 단순하고 표면적이지만
클라이언트와 서버의 분리는 HTTP 프로토콜에서 가장 중요한 포인트 중 하나이다. 이러한 구조는 비지니스 로직과 데이터 처리를 서버에 위임하고, 클라이언트는 UI와 사용성에 집중함으로써, 각각이 독립적으로 진화할 수 있다는 장점을 가지고 있다.
클라이언트는 간편하고 쉬운 UI 및 UX를 제공할 수 있고, 서버도 큰 회사의 대용량 트래픽폭주로인한 아키텍처를 어떻게 대응할지, 백엔드 기술 개선에 집중할 수 있다. 이렇게 서로 분리되면서 각각이 발전하고 성장할 수 있어, 기존 php를 Java로 대체하거나 다른 언어로 대체해도 클라이언트는 아무런 영향을 받지 않는다.
따라서 클라이언트와 서버를 분리하는 것은 각각 독립적으로 발전하고 성장할 수 있는 기반이 된다.
출처 : 인프런 - 모든 개발자를 위한 HTTP 웹 기본지식 by 우아한형제 김영한이사님
'WEB HTTP > HTTP 기본' 카테고리의 다른 글
HTTP 메시지구조 (0) | 2023.03.17 |
---|---|
HTTP 연결성과 비연결성(connectionless) (0) | 2023.03.17 |
URI? URL? URN? [웹HTTP] (0) | 2023.03.07 |
TCP와 UDP프로토콜 (0) | 2023.02.23 |
인터넷 통신 IP(Internet Protocol) (0) | 2023.02.23 |