network

http란

aeongsseu 2023. 1. 18. 17:00

hyper text transfer protocol은 이름에서 알 수 있듯이 protocol 즉 어떠한 약속, 규칙입니다.

HTTP는 클라이언트-서버 프로토콜입니다. 이는 수신자 측에 의해 요청이 초기화 되는 프로토콜을 의미합니다.

HTTP는 사람이 읽을 수 있으며 간단하게 고안되었습니다.

HTTP에는 요청(req)과 응답(res)가 있는데 각각의 생김새는 아래와 같습니다.

  • Start line : 요청의 종류(get,post 등등..), 요청을 보내는 리소스의 경로, HTTP의 버전을 나타냅니다.
  • status line : 응답의 start line을 status line이라 하는데, 요청의 성공 여부와, 그 이유를 나타내는 상태코드를 나타냅니다.
  • HTTP headers : 클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송할 수 있도록 해줍니다. HTTP 헤더는 대소문자를 구분하지 않는 이름과 콜론 ':' 다음에 오는 값(줄 바꿈 없이)으로 이루어져있습니다. 값 앞에 붙은 빈 문자열은 무시됩니다
  • Empty line : 헤더(header)와 본문(body)을 구분하는 빈 줄 입니다.

요청의 종류에는 GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH가 있는데 이중 자주쓰이는 GET POST PUT PATCH DELETE에 대해 간략히 알아보면

  • GET : 리소스의 조회에 사용됨 요청에 적은 경로로부터 리소스를 얻어온다
  • POST : 서버에 요청 데이터를 전달한다. 주로 신규 리소스의 등록, 프로세스 처리 등에 사용된다. 성공적으로 등록시 201상태 코드와 생성된 URI 경로를 반환한다.
  • PUT : 새로운 리소스를 생성하거나, 대상 리소스를 수정한다. POST와의 차이점은 멱등성으로 PUT은 멱등성을 가진다. PUT은 한 번보내는 것과 여러번 보내는 것과 같은 효과를 가집니다.
  • PATCH : 리소스의 부분적인 수정을 할 때에 사용됩니다. PUT은 문서 전체의 수정만을 허용합니다. PATCH는 멱등성을 가지지 않는데 이는 동일한 PATCH요청이 다른 결과를 야기 할 수도 있음을 뜻합니다.
  • DELETE : 지정한 리소스를 삭제합니다.

응답 상태 코드는 정말 많지만 크게 묶어 알아보면

  • 100 : 클라이언트가 보낸 요청이 문제 없으니 다음 요청을 이어서 보내도 된다는 것을 의미합니다. 만약 클라이언트의 작업이 완료 됐다면 이 응답은 무시해도 됩니다.
  • 200 : 요청을 성공했음을 나타냅니다. 200 응답은 보통 캐시 가능합니다. 캐시란 주어진 리소스의 복사본을 저장하고 있다가 요청 시에 제공하는 기술입니다. 웹 캐시가 자신의 저장소에 요청된 리소스를 가지고 있다면, 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신 리소스의 복사본을 반환합니다. 일반적으로 GET요청에 대한 응답만 캐싱합니다.
  • 300 : 리다이렉션 상태를 나타냅니다. 즉 요청에 가능한 응답이 두개 이상 있음을 의미합니다. 응답 중 하나를 선택하는 표준화된 방법이 없기 때문에 이 응답 코드는 거의 사용되지 않습니다.
  • 400 : 요청에 오류가 있음을 감지해 요청을 처리할 수 없거나, 하지 않는다는 것을 의미합니다.
  • 500 : 요청을 처리중 서버가 예상치 못한 상황에 놓임을 의미합니다. 서버 관리자들은 미래에 같은 에러가 발생하는 것을 방지하기 위해 500응답들에 추가적인 설명을 남겨둡니다.

 

 

HTTP에는 무상태성과 비 연결성이라는 특징을 가집니다.

 

stateless(무상태)란 서버가 클라이언트의 요청을 저장하지 않는다는 겁니다. 하지만 이는 장바구니 기능을 생각해보시면 문제가 있단걸 간단히 떠올리실 수 있을겁니다. 쿠키는 상태가 있는 세션을 만들도록 해줍니다. 

 

connectionless(비 연결성)란 요청을 주고 받을때만 연결을 유지하고 응답을 주고 나면 TCP/IP 연결을 끊음을 의미합니다. 이를 통해 최소한의 자원으로 서버를 유지할 수 있도록 합니다. 하지만 이는 웹브라우저로 사이트를 요청시에 여러 리소르를(html,js,css,img 등등) 다운로드하기 위해 각 다운로드시마다 연결과 종료를 반복해야하는 문제를 야기한다. 그래서 현재는 연결이 이루어지고 난 뒤 각 자원들을 요청하고 모든 자원에 대한 응답이 들어온후에 연결을 종료한다.

 

 

 

 

 

 

ref

https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP

 

HTTP 기본 - HTTP | MDN

HTTP는 상당히 확장 가능한 프로토콜입니다. 자원과 URI의 개념, 메시지의 단순한 구조, 통신 흐름을 위한 클라이언트-서버 구조와 같은 몇 가지 기본 개념에 의존합니다. 이러한 기본 개념을 토대

developer.mozilla.org

https://hanamon.kr/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-http-http%EB%9E%80-%ED%8A%B9%EC%A7%95-%EB%AC%B4%EC%83%81%ED%83%9C-%EB%B9%84%EC%97%B0%EA%B2%B0%EC%84%B1/

 

'network' 카테고리의 다른 글

https란  (0) 2023.01.18