본문 바로가기
ComputerScience/Network

HTTP

by 규난 2022. 11. 21.
728x90

백엔드 개발자로 성장하기 위해서 가장 기본적인 네트워크 기술 중 하나인 HTTP를 너무 간과하고 있는 느낌이 나서 HTTP에대해서 공부한 내용을 정리하려 한다.

 

HTTP란?

HyperText Transfer Protocol의 약자로 하이퍼텍스트 전송 프로토콜이다. 초기에는 HTML과 같은 하이퍼미디어 문서를 주로 전송했지만 최근에는 Json, XML (Json을 주로 많이 사용), 이미지, 음성, 영상 파일 등 다양한 형태의 정보도 전송이 가능하다.

 

HTTP의 특징

1. 클라이언트 서버 구조

2. 무상태 프로토콜(Stateless)

3. 비연결성(Connetionless)

4. HTTP Message (본문에서 다루지 않음)

5. 단순함, 확장 가능

 

1. 클라이언트 서버 구조

Request와 Response구조이며 클라이언트는 서버에게 요청을 보내고 응답을 대기한다. 서버는 요청을 받아 결과를 만들어 클라이언트에게 응답한다.

2. 무상태 프로토콜 Stateless

서버가 클라이언트 상태를 보존하지 않는다. 예를 들어 클라이언트가 서버에게 규난이에 대한 정보 좀 줘 라고 요청을 보내면 서버는 규난이에 대한 정보를 찾아서 클라이언트에게 주는데 다음 요청 때 클라이언트가 전에 요청했던 걔 정보 또 줘 이렇게 요청을 보내면 서버는 누구?? 라고 제대로된 정보를 줄 수 없다 이렇게 서버가 클라이언트에 대한 상태를 보존하지 않는것이 Stateless이다. 

Stateless의 장점은 서버 확장성이 높고 단점은 요청하는 데이터의 양이 많아질 수 있다.

밑의 사진을 보면 Stateful 일 때의 예제이다. 왼쪽 사진은 같은 서버로 계속 요청이 갔을 경우에는 서버와 클라이언트가 원활한 대화가 이어지는 반면 처음 요청이간 서버와 두번째로 요청이간 서버가 다르면 그전의 요청 정보를 두번째 서버가 가지고 있지 않기 때문에 정확한 데이터를 줄 수 없는 상황이 생긴다. 이렇게 Stateful 일 때 계속 같은 서버로 요청을 보내야한 다는 점 때문에 서버의 확정성을 높일 수 없다는단점이 있다.

밑의 사진은 Stateless 일 때 사진이다. Stateful일 때 보다 한번에 보내는 데이터의 양은 많지만 서버가 바뀌어도 제대로된 응답값을 받을 수 있다는 장점이 있다. 

3. 비 연결성 Connectionless

HTTP는 기본적으로 연결을 유지않는 모델. 트래픽이 많지 않고 빠른응답을 제공 할 수 있는 경우에는 비 연결성 특징은 굉장히 효율적이다.

하지만 트래픽이 많고 큰 규모의 서비스를 운영할 때는 비 연결성은 한계를 보인다. 요청마다 TCP/IP를 새로 맺고 끝어야 하기 때문에 (3 way handshake ACK - SYNC ACK - ACK, 4 way handshake FIN - ACK - FIN - ACK) 비효율적. 이를 해결하기 위해 HTTP 지속 연결(Persistent Connections)로 문제를 해결하였다. TCP/IP 연결이 이루어지고 난 후 자원들을 요청하고 자원들에 대한 응답이 돌아온 후 연결을 종료하는 방법으로 요청마다 새로 연결을 맺고 끊는 문제점을 개선.

728x90

'ComputerScience > Network' 카테고리의 다른 글

Cookie와 Session  (0) 2022.11.26
REST API  (0) 2022.11.21