HTTP (Hyper Text Transfer Protocol)은 웹에서 데이터를 주고 받기 위한 프로토콜이다. 즉, 클라이언트와 서버간의 통신을 해주는 프로토콜인 것이다.
이러한 HTTP의 특성을 알아보자.
무상태 (Stateless)
HTTP는 무상태 프로토콜이다. 각각의 요청은 모두 독립적이며 이전 요청이나 응답과 무관하게 처리된다. 이는 서버가 클라이언트의 상태를 유지하지 않는다는 것이다.
이는 서버 확장성을 높이는 특성이 되기도 하다.
상태를 저장하지 않는 특성은 HTTP를 가벼운 프로토콜로 만들어 주었지만 사용자로 하여금 불편한 경험을 제공할 수 있다.
이러한 특성 때문에 쿠키와 세션이 나오게 되었다. 쿠키와 세션은 사용자의 상태 정보를 유지해서 HTTP로 통신하더라도 서비스에서 사용자의 상태 정보를 유지할 수 있게 해준다.
간단함 (Simplicity)
HTTP는 간단하고 가벼운 프로토콜이다. 메시지는 텍스트 기반으로 이루어져 있고, 기본동작은 간단하게 구현할 수 있도록 설계되었다.
확장 가능성 (Extensibility)
HTTP는 확장이 가능하고 용이하도록 설계되었다. 새로운 기능과 헤더를 도입하여 프로토콜을 확장할 수 있다.
HTTP는 보안적 취약성을 가지고 있었기 때문에 HTTPS가 도입되었다. HTTPS는 보안 소켓 계층(SSL / TLS)를 이용하여 통신을 암호화하여 보호한다.
비연결성 (Connectionless)
TCP/IP는 기본적으로 연결을 유지한다. 이는 클라이언트가 요청을 더이상 하지 않더라도 일정 시간동안은 연결을 계속 유지해야 한다는 것이며 이는 서버의 자원을 잡아먹는 것이다.
HTTP는 비연결성으로 클라이언트의 요청에 응답을 하게 되면 TCP/IP 요청을 끊어버린다. 이러한 특성은 최소한의 자원으로 서버를 유지할 수 있게 해준다.
HTTP 1.0 에서는 각각의 자원을 주고 받을 때 마다 연결을 끊고 다시 맺는 과정을 반복하여서 매우 비효율적이었다.
HTTP 1.1 의 지속적 연결을 통해 이를 해결하였고 지속적 연결은 연결을 맺고 모든 자원을 응답받은 뒤에 연결을 끊는 방식이다.
HTTP가 진화하면서 파이프 라이닝 기법과 멀티플렉싱 기법이 나오며 이러한 1.0 의 한계를 해결해갔다.
'IT 공부' 카테고리의 다른 글
회원가입, 로그인, 로그아웃, 개인정보 수정 (0) | 2024.01.08 |
---|---|
간단 보안! (feat. HTTPS 와 SSL/TLS 그리고 CSRF와 XSS) (1) | 2024.01.08 |
REST와 GraphQL (2) | 2024.01.08 |
회원 데이터베이스를 어떻게 짜볼까? (1) | 2024.01.08 |
인증(Authentication)과 인가(Authorization) (0) | 2024.01.07 |