어제의 나보다 성장한 오늘의 나

HTTP란? 본문

CS/네트워크

HTTP란?

NineOne 2021. 5. 22. 22:59

HTTP란?

  • HTTP는 Hyper Text Transfer Protocol로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다.
  • 프로토콜은 규칙이라고 생각하면 된다. 그렇기 때문에 모든 프로그램은 이 규칙에 맞춰 개발해서 서로 정보를 교환할 수 있게 된 것이다.
  • 추가적인 설명으로 인터넷이라는 거대한 통신망을 통해 원하는 정보(데이터)를 주고받는 기능을 이용하는 응용 프로토콜이며, 사용하는 포트 번호는 기본적으로 80이다.

HTTP 특징

  • 클라이언트와 서버들은 개별적인 메시지 교환을 통해 통신한다. 보통 브라우저인 클라이언트에 의해 전송되는 메시지를 요청(requests)라고 부르며, 그에 대해 서버에서 응답으로 전송되는 메시지를 응답(responses)라고 부른다.
  • 우리가 보고, 듣는 형식으로 웹페이지에 표시하기 위해, 브라우저는 페이지의 HTML 문서를 가져오기 위해 요청 -> 파일을 구문 분석하여 실행해야 할 스크립트 그리고 페이지 내 포함된 하위 리소스들(이미지, 비디오 등)을 잘 표시하기 위한 레이아웃 정보(CSS)에 대응하는 추가적인 요청들을 가져온다. 이 과정을 렌더링이라고 불리는 소프트웨어를 사용한다.
  • 요청과 응답으로 인해 심플하고 전산 자원이 적게 든다는 장점이 있다.
  • 연결이 지속적이지 않기에 Web-Client와 연결이 종료 후 추가적인 요청 시 어떤 Web-Client인지 모른다는 단점이 있다.
  • 즉 다수의 Web-Client가 요청 시 각각의 Web-Client 요청을 구분할 수가 없다. -> HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다. ( HTTP와 반대로 연결 상태를 유지하는 프로토콜 FTP, Telnet이 있다 )
  • 이러한 단점을 해소하기 위한 방법으로 Cookie, Session, URL Rewriting 등이 있다.

웹 프론트 엔드

  • 사용자에게 웹을 통해 다양한 콘텐츠 (문서, 동영상, 사진등)을 제공한다.
  • 또한 사용자의 요청(요구사항)에 반응해서 동작한다.

URL (Uniform Resource Locator)

  • 인터넷 상의 자원의 위치
  • 특정 웹 서버의 특정파일에 접근하기 위한 경로 혹은 주소

 

HTTP 흐름

1. TCP 연결을 한다. TCP 연결은 요청을 보내거나(혹은 여러 개의 요청) 응답을 받는 데 사용한다. 

2. HTTP 메시지를 전송한다. 

  • GET / HTTP/1.1 : 브라우저가 서버에게 "/"에 위치한 문서를 HTTP/1.1 protocol로 달라는 의미
  • Host : HTTP/1.1 protocol에서만 필수이며, 의미하는 바는 다양한 도메인을 가지고 있을 수 있는 ex) google.co.kr, google.co.uk etc.. 서버에게 google.com이라는 특정한 host를 요청하는 것.
  • Accept : Optional header, 브라우저가 서버에게 어떤 응답도 받아들이겠다는 뜻. 서버가 JSON, XML, 또는 HTML 포맷을 다 가지고 있어도 아무거나 보내도 상관없다는 뜻.

3. 서버에 의해 전송된 응답을 읽어 드린다.

Status Code (상태 코드)

상태 코드는 모두 숫자 세 자리로 이루어져 있으며, 아래와 같이 크게 다섯 부류로 나눌 수 있다.

  • 1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
  • 2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.
  • 3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
  • 4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다.
  • 5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.

Headers

응답에는 대부분의 경우 본문이 있다. 보통 데이터를 요청하고 응답 메시지에는 요청한 데이터를 담아서 보내주기 때문이다. 응답 메시지에 HTML이 담겨 있는데 이 HTML을 받아 브라우저가 화면에 렌더링 한다.

4. 마지막으로 연결을 닫거나 다른 요청들을 위해 재사용한다.

 

출처

'CS > 네트워크' 카테고리의 다른 글

[네트워크] REST, REST API, RESTful  (0) 2021.06.04
유니캐스트, 멀티캐스트, 브로드캐스트  (0) 2021.04.09
로드 밸런싱  (0) 2021.04.08
TCP/IP 4계층  (0) 2021.04.07
OSI 7계층  (0) 2021.04.07
Comments