티스토리 뷰

네트워크

[HTTP]HTTP의 특징

김쓰로그 2022. 8. 19. 14:25

HTTP?

 

HyperText Transfer Protocol의 약자로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다.

현재 HTTP로 모든 것을 전송할 수 있다.(HTML, TEXT, 이미지, 음성, 영상, 파일, JSON, XML 등)

위의 사진을 보면 font, png파일, text파일 등 여러 파일이 HTTP를 통해 전송되는 것을 볼 수 있다.

 

 

그럼 HTTP에는 어떠한 특징이 있을까?

  • 클라이언트 서버 구조
  • 무상태 프로토콜(Stateless) 구조
  • 비 연결성(connectionless)
  • HTTP 메시지(GET, POST, PUT, DELETE 등등)

클라이언트 서버 구조

기본적으로 HTTP는 클라이언트 서버 구조로 동작한다.

즉, 우리가 브라우저에서 네이버에 요청을 보낼 때를 생각하면 

브라우저에서 요청(Request)을 보내는 우리는 클라이언트이고 그것을 처리 및 응답(Response)해주는 네이버는 서버인 것이다. 

 

이렇게 클라이언트/서버 구조로 각각 분리를 해놓음으로서 각각 독립적으로 발전, 진화를 할 수 있게 되었다.

 


무상태 프로토콜(Stateless)

 

이것은 이번강의를 들으면서 처음 들어본 단어였다.

 

무상태란 서버가 클라이언트의 상태를 보존하지 않는 것이다. 

 

이는 클라이언트가 서버에게 정보를 넘길 때 클라이언트가 필요한 정보를 그때그때 모두 넘기는 것이다.

그래야 서버가 무상태라도 클라이언트가 이전에 요구했던 사항을 알 수 있기 때문이다.

 

예)

~~~.text주세요

~~~.text, ~~~.png주세요

~~~.test, ~~~png, ~~~html주세요

 

무상태는 클라이언트가 필요한 정보를 그때그때 한꺼번에 넘기기 때문에 응답하는 서버가 장애가 일어나 중간에 교체되더라도 아무런 이상이 없다. 그렇기에 굉장한 확장성을 가진다.

 

로그인의 경우 서버는 클라이언트가 로그인했다는 사실을 알아야하는데 이는 세션, 쿠키, 토큰을 이용하여 이를 유지한다.

이는 뒤에가서 더 자세히 공부해 보겠다.


비 연결성(connectionless)

 

말 그대로 HTTP는 연결을 유지하지 않는 모델이다. 

즉, 클라이언트가 요청을하고 서버가 응답을하면 바로 연결을 끊어버리는 작업을 실행한다.

 

# 비 연결성으로 가지는 장점

서버 입장에서 클라이언트와 계속해서 연결을 해놓는다면 이는 서버의 자원은 계속 해당 클라이언트에게 쓰이고 있는 것이다. 하지만 바로 끊어버린다면 여러 클라이언트에게 쓰일 수 있고 서버 자원을 매우 효율적으로 사용할 수 있는 것이다.

 

# 비 연결성으로 가지는 단점

기본적으로 TCP에서는 3 way handshake 방식으로 서버와 클라이언트는 연결을 하는데 연결을 맺고 바로 끊어버린다면 이 과정이 한번 데이터를 주고 받을때마다 발생한다. 결국 연결, 해제에 대한 오버헤드가 발생하는 것이다.


HTTP 메서드

 

HTTP 메서드는 크게 GET, POST, PUT, PATCH, DELETE가 대표적이고 이 외에 HEAD, OPTIONS, CONNECT 등이 존재한다.

  • GET : 서버로 부터 데이터를 취득, 조회한다.
    • GET 방식은 데이터를 읽을 때만 사용된다.
    • 서버에 데이터를 전달하고자 할 때는 쿼리스트링을 통해 전달한다.
    • 아래의 URL을 보면 "?" 뒤에 type=post 이런식으로 적혀있는데 이것을 쿼리 스트링이라고 한다.

  • POST : 요청한 데이터를 처리한다.(새 리소스 생성, 요청 데이터 처리)
    • 데이터를 전달할 때 HTTP의 메시지 바디에 값을 추가해서 전달한다.
    • 게시판 글 등록, 주문 등등
  • PUT : 서버의 데이터를 갱신한다.
    • PUT은 서버의 데이터를 완전히 덮어 씌운다.
    • 요청한 데이터가 없는 데이터라면 새롭게 생성하지만 이미 존재한다면 그위에 요청한 데이터를 덮어씌우는 것이다. 
    • 이 또한 데이터를 전달할 때 HTTP 메시지 바디를 통해 전달한다.
  • PATCH : 리소스의 일부분을 수정한다.
    • PUT과 달리 리소스의 일부분을 수정할 수 있다.
  • DELETE : 서버의 데이터를 삭제한다.
  • HEAD : GET과 비슷하나, 실제 문서를 요청하는 것이 아닌 문서의 정보를 요청한다.
  • OPTIONS : 리소스가 지원하고 있는 메소드를 취득한다.
  • CONNECT : 프록시 동작의 터널 접속을 변경한다.

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함