[HTTP] 기초 - Request

배정규·2020년 7월 11일
0

http

목록 보기
1/2

1. HTTP란?

  • 하이퍼텍스트(HTML)문서를 교환하기 위해 만들어진 protocol(통신규약)
  • 즉 웹상에서 네트워크로 서버끼리 통신할 때 어떤 형식으로 통신을 하는지 정해놓은 규칙이다.
  • 프론트앤드 서버와 클라이언트간의 통신에 사용된다.
  • 백앤드와 프론트앤드 서버간의 통신에도 사용된다.
  • HTTP는 TCP/IP 기반으로 되어 있다.

2. HTTP 핵심 요소

HTTP 통신 방식

  • 요청(request)과 응답(response) 구조로 되어있다.
    - 클라이언트가 HTTP request 를 서버에 보내면 서버는 HTTP response를 보내는 구조.
    • 클라이언트와 서버의 모든 통신이 요청과 응답으로 이루어 진다.
  • HTTP는 Stateless 이다.
    - Stateless 란 말 그대로 state(상태)를 저장하지 않는 다는 뜻
    • 즉, 요청이 오면 그에 응답을 할뿐, 여러 요청/응답끼리 연결되어 있지 않다는 뜻이다.
      즉 각각의 요청/응답은 독립적인 요청/응답 이다.

HTTP Request 구조

  • HTTP Request 메세지는 크게 3부분으로 구성된다
    - start line
    - headers
    - body

Start Line

  • 말 그대로 HTTP request 의 첫 라인
  • HTTP request 의 start line 또한 3부분으로 구성되어 있다.
    • HTTP Method
      • 해당 request 가 의도한 action 을 정의하는 부분.
      • HTTP Methods 에는 GET, POST, PUT, DELETE, OPTIONS 등이 있다.
      • 주로 GETPOST가 쓰임.
    • Request target
      • 해당 request 가 전송되는 목표 uri.
      • 예를 들어 /login.
    • HTTP Version
      • 말 그대로 사용되는 HTTP 버전. 버전에는 1.0, 1.1, 2.0 등이 있다.

ex) GET /search HTTP/1.1

Headers

  • 해당 request 에 대한 추가 정보(additional information)를 담고 있는 부분.
    • 예를 들어, request 메세지 body 의 총 길이 (Content-Length) 등.
  • Key: Value 값으로 되어있다. (: 이 사용됨).
    • key:value
    • HOST: google.com => Key = HOST, Value = google.com
  • Header도 크게 3부분으로 나뉘지만(general headers, request headers, entity headers) 너무 자세한 부분임으로, 3부분응로 구성되어 있다는 것만 알고 있어도 괜찮다.
  • 자주 사용되는 header 정보에는 다음이 있다
    • Host
      • 요청이 전송되는 target 의 host url: 예를 들어, google.com
    • User-Agent
      • 요청을 보내는 클라이언트의 대한 정보: 예를 들어, 웹브라우저에 대한 정보.
    • Accept
      • 해당 요청이 받을 수 있는 응답(response) 타입.
    • Connection
      • 해당 요청이 끝난 후에 클라이언트와 서버가 계속해서 네트워크 커넥션을 유지할 것인지 아니면 끊을 것인지에 대한 부분.
    • Content-Type
      • 해당 요청이 보내는 메세지 body 의 타입. 예를 들어, JSON을 보내면
      • application/json.
    • Content-Length
      • 메세지 body 의 길이
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/json
Content-Length: 257
Host: google.com
User-Agent: HTTPie/0.9.3




다음에는 HTTP Response 와 HTTP Methods, HTTP Status Code 에 대해 알아보겠습니다.

Today I Leaned


제 글이 조금이라도 도움이 되었으면 좋겠습니다.
읽어주셔서 감사합니다.

Seize the day!


profile
Seize the day

0개의 댓글