IT/HTTP

[HTTP] HTTP 기본

happy_life 2022. 6. 3. 20:15

목차

1. 클라이언트 서버 구조

2. Stateful, Stateless

3. 비연결성(connectionless)

4. HTTP 메시지

1. 클라이언트 서버 구조

  • Request Response 구조
  • 클라이언트는 서버에 요청을 보내고 응답을 대기
  • 서버가 요청에 대한 결과를 만들어서 응답

 

2. Stateful, Stateless

 

Stateful

stateful

 

상태 유지에서는 다른 서버로 바뀌면 장애가 납니다. 문맥이 사라지기 때문입니다. 예를 들어 노트북을 구매한다고 할 때 우리는 무엇을 몇 개, 어떤 방식으로 구매할지 정보를 서버에 제공해야 합니다. 이 각각의 정보들을 따로따로 전달한다면, 중간에 전달받는 서버가 바뀌지 않아야 합니다. 추가적인 정보가 들어올 때, 그 전에 있던 정보를 기억하지 못하는 새로운 서버라면 요청을 이해하지 못할 것입니다. 그러면 다시 정보를 단계별로 제공해야 한다는 문제가 발생합니다.

또한 하나의 서버에 여러 클라이언트가 정보를 제공하면, 서버는 각 클라이언트의 정보를 기억하고 있어야 합니다. 이러한 경우 서버의 리소스를 계속 소모하고 있게 되는 문제도 발생합니다.

 

Stateless

stateless

 

무상태에서는 서버가 각 단계의 정보를 저장하고 있지 않아도 됩니다. 애초에 클라이언트에서 정보를 한번에 보내기 때문입니다. "노트북 2개를 신용카드로 구매한다" 라고 한 문장 안에 모든 정보를 전달하면, 서버가 바뀌어도 다른 서버에서 요청에 응답할 수 있습니다.

 

실무에서의 한계

1. stateless가 훨씬 편해보이지만, 모든 것을 무상태로 설계할 수 없습니다. 예를 들어 로그인의 경우, 로그인 상태를 서버에 유지해주어야 합니다. 

 

3. 비연결성

연결성 있는 서버의 문제점

연결성 서버

클라이언트2, 3 이 놀고 있어도, 서버는 연결을 계속 유지해야합니다. 이렇게 되면 서버는 자원을 많이 사용하게 됩니다.

따라서 HTTP는 기본이 연결을 유지하지 않는 모델입니다. 이렇게 되면 서버 자원을 매우 효율적으로 사용할 수 있습니다.

 

하지만 이러한 비연결성도 장점만 있는 것은 아닙니다. 새로 무언가를 요청할 때 다시 TCP/IP 를 연결하기 위해 시간이 소요되게 됩니다.(3 way handshake 시간) 또한 웹 브라우저에서 사이트에 요청하면 HTML뿐만 아니라, js, css, image 등  수 많은 리소스가 함께 다운로드되는데 이를 매번 다시 받는 것은 비효율적입니다. 물론, 현재는 HTTP 지속연결이라는 것으로 문제를 해결하였습니다.

 

4. HTTP 메시지

 

구조

http 구조

 

1. 시작라인

요청 메시지

 

1) 시작라인 - HTTP 메서드

종류: GET, POST, PUT, DELETE

서버가 수행할 동작을 지정합니다.

 

2) 시작라인  - 요청 대상

 

3) 시작라인  - HTTP 버전

 

응답 메세지

 

HTTP버전/응답코드/응답코드 종류 단순 표기

 

2. HTTP 헤더

  • HTTP 전송에 필요한 모든 부가정보가 들어있는 곳

http 헤더부분

3. HTTP 메시지 바디

  • 실제 전송할 데이터
  • HTML문서, 이미지,영상, JSON 등등 byte로 표현할 수 있는 모든 데이터 전송 가능

http 바디

 

출처: 김영한님 인프런 강의

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

'IT > HTTP' 카테고리의 다른 글

[HTTP] HTTP 헤더  (0) 2022.06.05
[HTTP] HTTP 상태코드  (0) 2022.06.04
[HTTP] HTTP 메서드  (0) 2022.06.04
[HTTP] 인터넷 네트워크  (0) 2022.06.01