1. 클라이언트/서버 구조
HTTP에서는 위 그림과 같이 클라이언트가 서버에 요청(Request)을 보내고, 응답을 대기한다. 이 후 서버가 요청에 대한 결과를 만들어서 응답(Response)을 보내주는 형식입니다.
2. 무상태 프로토콜(Stateless)
HTTP에서 서버는 클라이언트 상태를 보존하지 않습니다. 따라서, 클라이언트가 서버에 요청시, 현재 어떤 상황인지, 어디까지 진행됐는지 등 추가정보를 전송하여야 할 것 입니다. 반대로, 서버 입장에서 클라이언트의 상태를 보존하지 않기 때문에, 응답 서버를 쉽게 바꿀 수 있습니다. 이를 통해 확장성이 높은 서버를 만들 수 있습니다.
(하지만, 모든 것을 무상태 프로토콜로 처리하기에 한계가 있어, 로그인 상태 등과 같은 정보를 저장하여 사용하는 경우가 많습니다.(ex.세션) )
3. 비연결성
HTTP는 TCP/IP와 달리 비연결성 모델입니다. 실제, 많은 Client가 서비스를 이용해도, 동시에 처리하는 요청은 실제로 매우 많지 않습니다. 따라서, 이는 서버 자원을 매우 효율적으로 사용할 수 있게 됩니다.
하지만, 매 요청 마다 TCP/IP연결을 새로 맺어야 한다는 단점이 있습니다.
이를 개선하기 위해 Persistent Connection을 이용합니다.
Persistent Connection?
연결이 완료되고, 요청 및 응답을 지속적으로 하기 위해 일정 시간동안 연결을 종료하지 않고, 많은 데이터 요청 및 응답이 완료되고 연결을 종료하여 개선한다.