Web :: HTTP Request와 Response

안준성·2022년 8월 4일
0

Web

목록 보기
3/6

Web

  • WWW : World Wide Web. 1990년, 팀 버너스리가(Team 아님) 동료들과 함께 처음 개념을 만들고 구현했다.
    처음
  • 웹과 인터넷은 다르다.
  • 웹의 4요소
    • HTTP : 웹 브라우저와 웹 서버가 통신할 때 사용하는 통신 규약.
    • HTML : 내용을 표현하는 방식. 웹 페이지를 만드는 컴퓨터 언어
    • URL : 고유한 리소스를 표시하는 주소 방식. 원하는 웹페이지에 방문할 수 있도록 도와준다.
    • Web browser, Web server : 웹 페이지를 주고받는 소프트웨어

URI(Uniform Resource Identifier

  • URI = URL + URN

  • URI는 리소스를 식별하는 주소

  • URL 표준으로 시작해서 개념을 확장해서 URI를 만듦
    스킴:사용자이름:비번@호스트:포트/경로;패러미터?쿼리#프래그먼트

    • ex)
      https://honux77:pw1234@github.com:443/honux77/MMT?file=sum.py#30
  • 쿼리: 편의상 =& 을 사용한다.

  • 프래그먼트 : 클라이언트에서만 사용되며 서버측에 미치는 영향은 없다.

Web Client와 Server

image
  • 클라이언트 : 서버에 URL로 리소스(고유한 컨텐츠)를 요청한다.

  • 서버 : 클라이언트의 요청에 대해 적당한 리소스(문서)를 응답한다.

  • 프록시 : 클라이언트와 서버 사이에 존재하며 caching, filtering, load balancing, logging, 인증 등의 다양한 기능을 수행한다.


HTTP

  • HyperText Transfer Protocol 의 약자로
    WWW 상에서 정보를 주고받을 수 있는 프로토콜이다.

  • WWW 상에서 클라이언트와 서버가 정보를 요청하고 받을 수 있는 규칙(프로토콜)이다.

  • HTML을 주고받기 위한 표준으로 정해졌다.

  • HTTP는 Request와 Response 메세지의 형식 약속이라고 보면 된다.

  • 주로 TCP와 UDP를 방식으로 서버 80번 포트에 요청을 보낸다.

특징

  • 비교적 간단하며 확장 가능하다.

  • 상태가 없다(Stateless)

  • HTTP1 -> HTTP 1.1 -> HTTP 2 로 계속 발전하는 중이다.

HTTP/2.0 - 2015년

image

HTTP/1.1 버전에 비해 각 stream에 우선순위나, 병렬 처리 등의 기능이 추가 확장 됐다.

HTTPS

  • HTTPS(HTTP Secure)는 HTTP의 암호화된 버전이다.

  • 클라이언트와 서버 간의 모든 커뮤니케이션을 암호화 하기 위하여 보통 SSL이나 TLS를 사용한다.

  • 커넥션을 이용, 클라이언트가 민감한 정보를 서버와 안전하게 주고받도록 해준다.

  • 예전에는 HTTP 통신을 많이 사용했지만, 최근에는 대부분의 서비스에서 HTTPS를 사용하는 추세이다.

  • HTTPS용 인증서를 받기 어려웠지만, 최근에는 무료로도 HTTPS를 적용할 수 있다.

HTTP 동작방식

  • 사용자가 URL 주소를 입력하면, 그걸로 HTTP Request 요청 메세지를 만들어서 서버에 보내고, HTTP Response 메세지를 받아서 화면에 표시한다.

  • 이 과정에서 실제로는 특정 서버의 주소를 확인하기 위해 DNS 서버가 개입한다.

HTTP 요청 메소드

  • HTTP는 요청 메소드를 정의하며, 주어진 리소스에 수행하길 원하는 행동을 나타낸다.

  • 요청 메소드를 HTTP 동사라고도 부른다.

  • 각각의 메소드는 서로 다른 의미를 구현하지만, 일부 기능은 메소드 집합 간에 서로 공유되기도 한다.

  • 메소드

    • GET

      • GET 메서드는 특정 리소스의 표시를 요청합니다. GET을 사용하는 요청은 오직 데이터를 받기만 합니다.
    • POST

      • POST 메서드는 특정 리소스에 엔티티를 제출할 때 쓰입니다. 이는 종종 서버의 상태의 변화나 부작용을 일으킵니다.
    • PUT

      • PUT 메서드는 목적 리소스 모든 현재 표시를 요청 payload로 바꿉니다.
    • DELETE

      • DELETE 메서드는 특정 리소스를 삭제한다.

GET vs POST

  • GETURL 뒤에 쿼리스트링으로 필요한 인자를 전달한다. GET 요청은 필요한 데이터나 웹 페이지를 받아오는데 사용된다.

  • POST 메서드는 BODY에 값을 붙여서 보내며, 종종 서버의 상태변화를 일으킨다.

  • 웹 폼을 이용한 대용량 파일 전송의 동작 방식은 어떻게 될까?

  • 구글 주소창에서 검색을 하면 무슨 일이 벌어질까?

주요 HTTP 상태 코드

상태응답의미
200OK정상적인 처리
302See Other주로 리다이렉트 용도
304Not Modified수정된 사항이 없음.(= 캐시 사용 해라)
404Not Found리소스가 없다
403Forbidden권한 없음
500Internal Server Error서버 내부 오류
502Bad Gateway중간 계층 오류
503Service Unavailable서비스 제공불가

HTTP Request와 Response

웹 브라우저 개발자 관리 도구(F12)에서 Network 탭 -> 요소 클릭 -> Header -> view source를 클릭하면 웹 브라우저와 웹 서버간의 Request, Response 메세지를 볼 수 있다.

HTTP Request 메세지의 구조

  • Request Line, Headers, Body로 이루어져 있다.

  • 실제로는 한 줄마다 \r\n 줄바꿈 문자가 포함되어 있다.
    image

메세지 해석

  • Request Line

    • GET : 웹 브라우저와 웹 서버가 어떤 방식으로 통신할 것인가.
    • /doc/test.html : 웹 서버에게 요청하는 정보가 무엇인가
    • HTTP/1.1 : 웹 브라우저가 현재 사용하고 있는 HTTP의 버전
  • Request Headers

    • Host :
    • www.test101.com : 요청하는 웹 서버의 주소를 나타냄.
      Host란 인터넷에 연결되어있는 컴퓨터 한대 한대를 식별하기 위한 것.
      하나의 서버가 여러개의 도메인을 서비스 할 수 있음.
      각 도메인의 주소가 다르면 웹 서버는 주소에 따라 다른 정보를 보내줄 수 있다.(= 가상호스트)
    • localhost:8080 : 웹 서버 한대의 컴퓨터에는 여러개의 서버가 설치 되어 있을 수 있는데 8080 포트에 등록 되어있는 웹 서버를 의미.
  • Body : 웹서버로 전송할 정보. POST 방식일 때 데이터가 포함되어 서버로 보내진다.

HTTP Response 메세지의 구조

  • Status Line : 서버가 응답했을 때 응답결과와, 실패했다면 실패이유 등이 적혀있다.

  • Headers : 헤더 정보

  • Body : 웹 브라우저가 요청한 html 코드를 포함한다.

  • Request와 마찬가지로 한 줄마다 \r\n 줄바꿈 문자가 포함되어 있다.
    image

  • HTTP Response 메세지 예제

HTTP/1.1 200 OK
server: ecstatic-3.3.2
cache-control: max-age=3600
last-modified: Mon, 06 Jul 2020 05:09:48 GMT
etag: W/"8624175389-20-2020-07-06T05:09:48.268Z"
content-length: 20
content-type: text/html; charset=UTF-8
Date: Mon, 06 Jul 2020 05:12:29 GMT
Connection: keep-alive

<h1>Hello</h1>
Connection closed by foreign host.

메세지 해석

  • HTTP/1.1 : HTTP 버전
  • 200 : Status code
  • OK : 응답 결과를 사람이 이해하기 쉬운 언어로 나타낸 것.
  • Content-Type : 웹서버가 응답할 때 이 응답은 text고 html이라는 언어이다. 웹 클라이언트는 이 정보를 바탕으로 html로 화면을 표시한다.

리소스 포맷

MIME (Multipurpose Internel Mail Extensions) 타입으로 파일의 포맷을 분류한다.
원래는 전자 우편을 위한 표준이었는데, 웹에서도 활용하고 있다.

Content-Type:
text/plain
text/html
text/css
image/jpeg
image/png
audio/mpeg
audio/ogg
audio/*
video/mp4
application/octet-stream
multipart/mixed

페이지 로딩 시간 측정

서버의 성능을 측정하기 위한 척도중 하나가 TTFB(time to first byte) 이다.

TTFB란 HTTP 요청을 했을 때 첫 바이트가 브라우저에 도달하는 시간을 의미한다.

TTFB가 빠를수록 사용자가 최초로 내용을 받아보는 시간이 짧기 때문에 좀 더 만족을 할 수 있다.

실제로 검색 우선순위를 결정할 때 TTFB가 중요한 요소라고 한다.

이 밖에도 클라이언트의 요청부터 서버로 부터의 응답을 받아 브라우저에 표현하는 전체 시간, 요청 이후 서버의 응답 까지의 시간 등 페이지의 로딩 시간을 측정하는 데에는 다양한 방식들이 존재한다.


profile
안녕하세요

0개의 댓글