공부혜옹

HTTP란 본문

LIKELION

HTTP란

Blair06 2020. 8. 18. 03:49

HTTP란?
Hyper Text Transfer Protocol

인터넷에서 데이터를 주고받을 수 있는 통신규약

HTTP 특징

  • HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석이 된다.
  • TCP/ IP를 이용하는 응용 프로토콜이다.
    (컴퓨터와 컴퓨터간에 데이터를 전송 할 수 있도록 하는 장치로 인터넷이라는 거대한 통신망을 통해 원하는 정보(데이터)를 주고 받는 기능을 이용하는 응용 프로토콜)
  • HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.
    (이러한 단점을 해결하기 위해 Cookie와 Session이 등장하였다.)
  • HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다.

 

Request(요청)
서버에 요청을 보낼때 요청에 대한 정보(어떤 데이터를 받기를 원하는지)를 담아 서버로 보낸다. 이러한 정보를 HTTP메세지라고 하며 시작줄, 헤더, 본문으로 구성된다.

첫번째줄은 HTTP메소드/주소/HTTP버전 의 형태로 이루어져있다.

HTTP메소드

  • GET : 지정된 리소스(URI)를 요청
  • POST : 서버가 클라이언트의 폼 입력 필드 데이터의 수락을 요청. 클라이언트는 서버로 HTTP Body에 Data를 전송
  • HEAD: 문서의 헤더 정보만 요청하며, 응답데이터(body)를 받지 않는다.
  • PUT: 클라이언트가 전송한 데이터를 지정한 uri로 대체한다. ftp의 PUT과 동일하며, 클라이언트는 서버로 HTTP Body에 Data를 전송한다
  • DELETE: 클라이언트가 지정한 URI를 서버에서 삭제한다
  • TRACE: 클라이언트가 요청한 자원에 도달하기 까지의 경로를 기록하는 루프백(loop back) 검사용.클라이언트가 요청 자원에 도달하기 까지 거쳐가는 프록시나 게이트웨이의 중간 경로부터 최종 수진 서버까지의 경로를 알아낼때 사용.

두번째 줄은 요청에 대한 정보를 담고있는 header이다. 요청의 header와 응답의 header가 있는데 요청과 응답 모두에게서 사용되는 헤더를 공통헤더라고 한다

공통헤더

  • Date : HTTP메세지가 만들어진 시각으로 자동생성이다.
  • Connection : 현재의 전송이 완료된 후 네트워크 접속을 유지할지 말지를 제어한다. ex) 전송된 값이 keep-alive면 연결은 지속되고 끊기지 않으며, 동일한 서버에 대한 후속요청을 수행할 수 있다.(기본적으로 keep-alive)
  • Content-Length : 요청과 응답메세지의 본문 크기를 바이트 단위로 표시해준다. 메세지크기에 따라 자동생성
  • Content-Type : 컨텐츠의 타입(MIME)과 문자열 인코딩(utf-8 등등)을 명시할 수 있다. Accept 헤더, Accept-Charset 헤더와 대응되며,  프론트엔드에서 서버로 데이터를 보낼 때는 text/html 대신 www-url-form-encoded나 multipart/form-data이 Content-Type이 된다.
  • Content-Language : 사용자의 언어
  • Content-Encoding : 컨텐츠가 압축된 방식. 응답 컨텐츠를 br, gzip, deflate 등의 알고리즘으로 압축해서 보내면, 브라우저가 해제해서 사용한다. 이 외에도 다양한 압축 알고리즘이 존재하며, 컨텐츠 용량이 줄어들어 요청이나 응답전송속도도 빨라지고, 데이터 소모량도 줄어들기 때문에 압축을 권장한다.

요청헤더

  • Host : 서버의 도메인 네임, 반드시 하나가 존재해야한다.
  • User-Agent: 현재 사용자가 어떤 클라이언트(운영체제, 앱, 브라우저)를 통해 요청을 보냈는지 알 수 있다.
    ex) User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

 

 

 

 

반응형
Comments