HTTP ( Hypertext Transfer Protocaol ) 란?

  • HTTP는 서버와 클라이언트가 인터넷 상에서 데이터를 주고받기 위한 프로토콜이다.
  • HTTP는 어떤 종류의 데이터도 전송할 수 있도록 설계되어있다. ( 이미지, 동영상, 오디오, 텍스트 문서 등.. )

HTTP 작동방식

  • HTTP는 서버/클라이언트 모델이다.
  • 서버와 클라이언트가 연결되고 난 후 클라이언트가 서버에게 요청을 보낸다. 요청받은 서버는 클라이언트에게 응답하고 이후 연결을 끊어버린다.
  • 응답 후 연결을 끊어버리기 때문에 무상태(stateless) 프로토콜이라고도 불린다.
  • 장점
    - 불특정 다수를 대상으로 하는 서비스에 적합하다.
    - ex) 윈도 공유폴더 : 최대 사용자가 10명일 때, 최대 연결할 수 있는 수가 10개이다. stateless는 계속 연결 상태를 유지하는 것이 아니기 때문에 최대 연결 수보다 많은 요청과 응답을 처리할 수 있다.
  • 단점
    - 같은 클라이언트가 연속해서 요청을 보내도 클라이언트를 구별할 수 없다.
    - 연결을 끊어버려서 클라이언트가 이전에 무엇을 했는지 알 수 없다.
    - 정보 유지를 위한 Cookie 같은 기술이 등장했다.

URI ( Uniform Resource Locator )

  • 웹 상에서 다른 자원(이미지, 동영상 등)들의 위치를 나타내기 위해서 사용한다.
  • 접근 프로토콜, 자원이 있는 서버의 ip주소나 도메인 주소와 포트번호, 자원의 위치 3가지로 나뉠 수 있다.
  • 물리적인 서버를 찾기 위해 ip주소나 도메인 주소가 필요하고, 소프트웨어 서버를 찾기 위해서 포트 값이 필요하다.
  • ex) ip는 집 주소, 포트는 집안의 각각의 방이라고 볼 수 있다. 각 서버는 각 하나의 방을 차지하고 하나의 방에 여러 개의 서버가 존재할 수 없다. 따라서 포트 번호는 모두 달라야 한다.
  • 다시 말해 하나의 물리적 컴퓨터에는 여러 개의 소프트웨어 서버가 동작할 수 있는데, 이 서버의 포트 값은 다르게 작동해야 한다.
  • 포트의 값은 0보다 크며, http 서버의 기본 포트 값은 80번이다.
[##_Image kage@bECKfq/btqBkM6IvsA/XauCHIPsz855gg4hH15l1k/img.png CDM 1.3 {“originWidth”:398,”originHeight”:96,”style”:”alignLeft”}_##]

HTTP ( Hypertext Transfer Protocol )

[##_Image kage@bqPx6I/btqBlALxhtK/qjnvrr5ad8y2Bm7W4SBw6K/img.png CDM 1.3 {“originWidth”:1046,”originHeight”:605,”style”:”alignLeft”}_##]
  • 반드시 클라이언트가 먼저 원하는 서버에 접속해야 한다. 접속 후 클라이언트가 서버에게 요청을 보내고 요청에 따른 응답 결과를 서버가 클라이언트에게 응답한다. stateless에 따라 응답이 끝난 서버와 클라이언트는 연결이 끊어진다.
  • 이때, 데이터들은 정해진 규칙에 따라서 전송된다.
  • 요청 데이터 포맷
    -웹 브라우저는 요청 메시지를 갖는데 이 메시지는 헤더, 빈 줄, 요청 바디 3 부분으로 나뉜다.
    - 헤더 : 요청 메서드, 요청 URI, http 프로토콜의 버전 3가지로 나뉜다. 요청 메서드는 여러 가지가 존재하고, 요청 URI는 자원의 위치를 명시해주는 부분이다. http 프로토콜의 버전은 웹브라우저가 사용하는 프로토콜의 버전을 명시한다. 이때, 요청 바디가 비어있는데, GET 요청 메서드는 요청할 때 가지고 가야 하는 자원을 URI에 붙여서 가지고 가기 때문에 특별히 요청 바디가 없다. 두 번째 줄부터 여러 줄의 헤더 정보를 가지며 헤더 명과 헤더 값이 콜론으로 구별되어 있다. 각 줄은 라인피드와 캐리지 리턴으로 구분된다.
    (Line Feed(LF) : 현재 위치에서 바로 아래로 이동
     Carriage Return(CR) : 커서의 위치를 다음 줄 맨 앞으로 이동)
    -바디 : 요청 메서드가 POST 나 PUT을 사용했을 때 들어오게 된다.
  • 응답 데이터 포맷
    - 요청 데이터 포맷과 마찬가지로 헤더, 빈 줄, 응답 바디 부분으로 나뉜다. 
    - 헤더 : 첫 줄에는 응답 http 프로토콜의 버전, 응답 코드, 응답 메시지 등으로 나올 수 있다. 나머지 헤더 부분에는 날짜, 웹서버 이름과 버전, 콘텐츠 타입, 캐시 제어 방식, 콘텐츠 길이 등이 나온다.
    - 바디 : 빈 줄 다음 부분이 실제 응답 리소스 데이터가 나오는 부분이다.

첫 번째 줄의 요청 메서드는 서버에게 요청의 종류를 알려주기 위해서 사용되며, 각각의 메서드 이름은 다음과 같은 의미를 가진다. 참고로 최초의 웹서버는 GET 방식만 지원했다.

  • GET : 정보를 요청하기 위해서 사용한다. (SELECT)
  • POST : 정보를 밀어 넣기 위해서 사용한다. (INSERT)
  • PUT : 정보를 업데이트하기 위해서 사용한다. (UPDATE)
  • DELETE : 정보를 삭제하기 위해서 사용한다. (DELETE)
  • HEAD : (HTTP) 헤더 정보만 요청한다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용한다.
  • OPTIONS : 웹서버가 지원하는 메서드의 종류를 요청한다.
  • TRACE : 클라이언트의 요청을 그대로 반환한다. 예컨대 echo 서비스를 서버 상태를 확인하기 위한 목적으로 사용한다.

HTTP 와 HTTPS 의 차이

HTTPS는 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer) 프로토콜을 이용하여 웹브라우저(클라이언트)와 서버가 데이터를 주고 받는 통신 규약이다. 한마디로 HTTP의 보안을 강화한 프로토콜이다.


출처

[https://www.edwith.org/boostcourse-web/lecture/16661/]

업데이트:

댓글남기기