230103 - TIL

Junho Yun·2023년 1월 3일
0

TIL

목록 보기
47/81
post-thumbnail

간단한 프로토콜 http

기본 정의

HTTP는 클라이언트와 서버 간에 통신을 합니다. 요청을 하는 쪽을 클라이언트, 요청을 받고 응답하는 쪽을 서버라고 할 수 있습니다. 2대의 컴퓨터가 통신하는 경우 반드시 한쪽은 클라이언트, 나머지는 서버를 담당해야합니다. HTTP 프로토콜에서 이는 명확하게 구별되어야합니다.

리퀘스트와 리스폰스

클라이언트가 요청하는 것을, 리퀘스트 라고 합니다. 반대로 서버가 응답하는 것을 리스폰스라고 합니다. 리퀘스트 없이 리스폰스를 할 수 없습니다.

HTTP는 상태를 유지 하지 않습니다.

HTTP는 상태를 유지하지 않는 스테이트리스(stateless) 프로토콜입니다. 즉 이미 실행된 리퀘스트와 리스폰스에 대해 전혀 기억을 하지 못한다는 말 입니다.
그런데 현대 웹에서는 로그인과 같이 상태를 유지해야하는 경우들이 발생합니다.
이러한 경우들을 처리하기 위해 쿠키(cookie)라는 기술이 도입 되었습니다.
쿠키로 인해 http를 이용한 통신에서도 상태를 계속 관리할 수 있게 되었습니다.

서버에 임무를 부여하는 HTTP 메소드

  1. GET : 리소스 획득
    리퀘스트 URI로 식별된 리소스를 가져올 수 있도록 요구
  2. POST : 엔티티 전송
    엔티티를 전공하기 위해 사용됩니다.
  3. PUT : 파일 전송
    파일 전송할 때 사용하지만, 인증 기능이 없어 보안상의 문제가 있습니다. 그래서 사용하지 않는 추세 입니다.
  4. HEAD : 메시지 헤더 취득
    GET과 같은 기능이지만 메시지 바디는 돌려주지 않습니다.
  5. DELETE : 파일 삭제
    파일을 삭제하기 위해 사용됩니다. PUT 메소드와는 반대로 동작하며 URI로 지정된 리소스의 삭제를 요구합니다. 인증 기능이 없기에 잘 사용하지 않습니다.
  6. OPTION : 제공하고 있는 메소드의 문의
  7. TRACE : 경로 조사 (거의 사용하지 않습니다.)

지속 연결로 접속량을 절약

HTTP 초기 버전에서는 HTTP 통신을 한 번 할 때마다 TCP에 의해 연결과 종료를 할 필요가 있었습니다. 이렇게 통신과 종료를 하게 되는 쓸모없는 일은 통신량이 늘어나게 됩니다.

이를 해결하기 위해 지속 연결이라는 방법을 사용합니다. 이는 간단하게 말하면, 한 쪽이 연결을 종료하지 않는 이상 TCP연결을 계속 유지하는 것 입니다.

파이프라인화는 리스폰스가 오는 것을 기다리지 않고 리퀘스트를 보낼 수 있도록 하는 것을 말합니다. 병렬처리가 가능하다는 것은 그만큼 효율적으로 동작할 수 있는 웹을 말합니다.

쿠키를 사용한 상태 관리

HTTP는 스테이트리스 프로토콜이라고 말했습니다. 그렇기 때문에 쿠키가 등작했다고 말했습니다.

쿠키를 가지지 않은 상태에서의 리퀘스트
클라이언트 -> 리퀘스트 -> 서버 -> 쿠키 붙여서 리스폰스 -> 클라이언트한테 쿠키 전달

위와 같은 방식으로 서버에서 쿠키를 전달해 줍니다. 그러면 이제 쿠키를 가진 클라이언트가 리퀘스트 하는 걸 보면

쿠키를 가진 상태에서의 리퀘스트 -> 쿠키를 가져야 확인할 수 있는 내용을 리퀘스트로 전달 -> 클라이언트에서 확인

예를들면 로그인해야 볼 수 있는 웹사이트 같은 것이 있습니다. 쿠키가 없으면 로그인이 안돼있다면, 화면을 보여주지 않습니다. 로그인이 되어있다. 즉, 쿠키를 갖고 있다면 이를 서버가 확인하고 적절한 응답을 해주는 것

이것이 쿠키를 사용한 상태 관리입니다.

profile
의미 없는 코드는 없다.

0개의 댓글