Home > cs > 네트워크 > http 프로토콜 > http 기본

http 기본
web cs

개요

현재 이용하는 것은 대부분 http 1.1 버전이고 tcp를 기반으로 한다. http만 udp 통신을 따른다.

각 웹이 어떤 http 통신을 이용하고 있는지는 f12의 network의 protocol을 통해서 확인하는 것이 가능하다.

Stateful, Stateless 차이

과정을 저장하고 넘겨주는지 아닌지의 차이이다.

stateful은 과정에서 전 결과물의 내용을 기억하고 진행하는 방면 stateless는 전에 있는 과정을 기억하지 않고 오직 해당 과정만을 거친다고 생각하면 된다. 다른 말로는 stateful은 한사람이 이전 과정을 기억하고 진행하고 stateless는 여러 사람이 한 과정을 맡고 진행한다고 볼 수가 있다.

stateless는 갑작스러운 트래픽 증가에도 대응이 좀 더 좋다고 볼 수가 있다. 응답 서버를 쉽게 바꿀 수가 있어서 무한한 서버 증설이 가능하다.

애초에 클라이언트가 필요 정보를 다 포함해서 넘기기 때문에 서버에 장애가 발생해도 괜찮다.
상태유지(stateful)은 최소한으로 사용하는 것이 좋다.

Stateless의 실무 한계

모든 것을 무상태로 설계 할 수 있는 경우도 있고 없는 경우도 있다. 모든 것을 무상태로 하는 경우
로그인 상태 유지가 불가하고 매 요청마다 인증정보가 필요해서 cost가 증가한다고 볼 수가 있다.
이 때문에 실무에서는 완전한 stateless보다는 쿠키, JWT, Redis,등과 같은 것을 활용해서 stateless와
상태 저장소의 혼합 구조를 표준으로 둔다.

비연결성 connectionless

서버는 연결을 유지하는 동안 서버 자원을 소모를 하게 된다.
→ 다른 클라이언트가 놀고 있을 수가 있다

연결하지 않는 모델을 사용시 요청을 할때만 연결을 하면 최소한의 자원으로 서버를 위지할 수가 있다.

http-structure

→ 다시 연결을 할 시 3 way handshake를 다시해야 한다.
http 지속연결 persistent connections으로 문제를 해결한다.

한번에 발생하는 대용량 트래픽을 다루기는 어려운 임무중에 하나이다.
같은 시간에 딱 맞추어 발생하는 대용량 트래픽 ex: 수강 신청,
명절예약, 등 이때 최대한 stateless를 이용하는 것이 베스트이다.

첫페이지는 정적페이지를 뿌리고 그 화면을 사람들이 보게한 후에 이벤트 참여버튼을 누르게 유도하거나 하는 식으로 대용량 트래픽을 다루고도 한다.

HTTP 메시지

http-structure
요청메시지도 body를 가질 수가 있다.

http 메서드는 get, POST, PUT, DELETE 등을 가진다

GET : 리소스 조회
POST : 요청내역 처리
절대경로를 통해 시작을 한다.

http 요청 메시지


http-request

http 응답 메시지


http-response
응답 매시지에 http 상태에 관한 코드를 받게 되는데 이는 http 요청이 성공했는지 실패했는지 알려주고 이유도 포함된다.

  • 200 : 성공
  • 400 : 클라이언트 요청 오류
  • 500 : 서버 내부 오류

여기서 http/1.1 200 OK에서 OK는 간단한 상태 메시지를 의미한다.

HTTP 헤더

http 전송에 필요한 모든 부가정보를 담고 있고 그 중에서는 메시지의 압축여부, 브라우저 여부, 캐쉬 등 여러가지 정보를 담고 있다. 표준 헤더가 많고 필요시 임의의 헤더를 추가하는 것이 가능하다.

HTTP 메시지 바디

바이트로 표현할 수 있는 모든 데이터를 전송한다.
이 중에는 HTML문서, 이미지, 영상, JSON 등 바이트로 표현할 수 있는 모든 데이터를 포함한다.

→이처럼 크게 성공하는 표준 기술은 단순하지만 확장가능한 기술이라고 볼 수가 있다.