HTTP 개관

Jaeyoung·2022년 7월 18일
0
post-thumbnail

HTTP란?

전 세계의 웹브라우저, 서버 , 웹 어플리케이션은 모두 HTTP(Hypertext Transfer Protocol)를 통해 서로 대화한다. 그래서 이미지, Html 페이지, 텍스트 파일, 동영상, 음성파일 등등 HTTP를 통해 인터넷에 떠다닐 수 있다. HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용하기 때문에 손상되거나 꼬이지 않음을 보장한다. 그렇기 때문에 HTTP 통신이 전송 중 파괴되거나, 중복되거나, 왜곡되는 것을 개발하면서 걱정하지 않아도 된다.

웹 클라이언트와 서버

웹에 대한 컨텐츠는 웹 서버에 존재하게 된다. 웹 서버는 HTTP 프로토콜로 서로 통신하기 때문에 HTTP 서버라고도 불린다. 웹 서버에서는 HTTP 클라이언트가 요청한 데이터를 처리한다. 그래서 HTTP 클라이언트가 요청한 데이터를 처리하는 과정을 보면 아래와 같다.

클라이언트가 HTTP 메서드를 통해 요청을 보내면 서버는 해당 요청을 처리하며 HTTP 응답으로 클라이언트에 전송한다.

미디어 타입

인터넷에서는 수천 가지 데이터 타입을 다루기 때문에 HTTp는 웹에서 전송되는 객체에 각각 MIME 타입이라는 데이터 포맷 라벨을 붙인다. MIME은 Multipurpose Internet Mail Extensions으로 원래 각기 다른 전자메일 시스템 사이에서 메시지가 오갈 때 겪는 문제점을 해결하기 위해 설계 되었다. 이게 이메일에서 잘 동작했기 때문에 HTTP에서 채택되게 되었다고한다.

MIME 타입은 슬래시(/)로 구분된 주타입과 부타입으로 이루어진 문자열 라벨이다.

MIME 타입의 몇가지 예는 아래와 같다..

  • HTML → text/html
  • JPEG → image/jpeg
  • GIF → image/gif

URI

웹 서버 리소스는 각자 이름을 갖고 있기 때문에, 클라이언트는 자기가 필요한 리소스를 지목할 수 있다. 서버 리소스 이름은 통합 자원 식별자 혹은 URI(uniform resource identifier)라고 불린다. URI는 해당하는 리소스의 주소같은 존재라고 생각하면 된다. 그렇기 때문에 리소스를 고유하게 식별하고 위치를 지정할 수 있다.

URI에는 두가지가 있는데 URL, URN이지만 대부분의 URI가 URL이다. URL은 통합 자원 지시자라고도 한다.

URL은 특정 서버의 한 리소스에 대한 구체적인 위치를 서술한다. URL은 리소스가 정확히 어디에 위치하고 어떻게 접근할 수 있는지 분명히 알려준다. URL은 세 부분으로 이루어진 포맷을 따르는데 URL의 첫 번째 부분은 스킴(scheme)이라고 불리는데, 리소스에 접근하기 위해 사용되는 프로토콜을 서술한다. 예를들어 http://example.com/index.html 이라고 하면 http가 이에 해당한다. 두 번째 부분은 서버의 인터넷 주소를 제공한다 위와 같은 url이 있으면 naver.com 을 뜻한다. 마지막은 리소스를 가르킨다. /index.html이 이에 속한다.

URN은 많이 사용하지 않는다. 그래도 간단하게 적어본다면 한 리소스에 대해 가져올 때 리소스의 위치에 영향을 받지않는 유일무이한 이름 역할을 한다. 그렇기 때문에 URN은 리소스를 여기저기로 옮겨도 문제 없이 동작하지만 아직 실험 중인 상태고 널리 채택되지 않아 많이 사용하지않는다.

HTTP 메서드와 상태 코드

HTTP는 HTTP 메서드라고 불리는 여러 가지 종류의 요청 명령을 지원한다. 모든 HTTP 요청 메세지는 한 개의 메서드를 갖는다. 메서드는 서버에서 어떤 동작이 취해져야 하는지 말해준다

흔히 사용하는 HTTP 메서드 종류는 아래와 같다

  • GET - 서버에서 클라이언트로 지정한 리소스를 전달한다
  • PATCH - 클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장한다.
  • DELETE - 지정한 리소스를 서버에서 삭제한다.
  • POST - 클라이언트 데이터를 서버 게이트웨이 어플리케이션으로 보낸다.
  • HEAD - 지정한 리소스에 대한 응답에서, HTTP 헤더 부분만 보낸다.

모든 HTTP 응답 메시지는 상태 코드와 함께 반환이 되는데 상태 코드는 클라이언트에게 요청이 성공했는지 아니면 추가 조치가 필요한지 알려주는 세자리의 숫자다.

흔히 사용하는 상태코드는 아래와 같다

  • 200 - 요청 성공
  • 302 - 다시요청해라 다른 곳에 가서 리소스를 가져와야 한다.
  • 404 - 리소스를 찾을 수 없다.
profile
Programmer

0개의 댓글