도당탕탕

Http Request VS Response 본문

Web

Http Request VS Response

backlo 2020. 1. 16. 00:02

Intro

  1. Http프로토콜에 대해서 알기
  2. HttpRequest의 구조를 알아보기
  3. HttpResponse의 구조를 알아보기
  4. 요청 흐름 구조 알아보기

HTTP 프로토콜이란?

WebFlow

  • HTTP 프로토콜이란 인터넷 상에서 데이터를 주고 받기위한 상호간의 규칙을 정의하고 특정 기간내에 데이터를 송수신을 할 수 있는 규약이라고 보면 된다.
  • 웹상에서는 서버와 클라이언트가 서로 데이터를 주고 받기위한 방식으로 Http프로토콜을 사용하고 있다.
  • Http는 어떤 종류의 데이터 이든지 전송 할 수 있다.
  • OSI 7계층중 응용계층 프로토콜이며 TCP/IP위에서 작동하도록 되어있다.
  • 일반적으로 포트번호 80을 가진다.

Http Request 구조

POST /user/create HTTP/1.1

Host: localhost:8080
Connection: keep-alive
Content-Length: 57
Cache-Control: max-age=0
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1

userId=test&password=1234&name=testName&email=test%40test.com

Request StartLine

  • Request가 올 때 요청의 시작줄 이다.
  • Method Path Version 형식으로 온다.
  • Method 종류
    • GET: 요청받은 URI의 정보를 검색하여 응답
    • POST: 요청된 자원을 생성, 보통 Response에 Location 필드를 넣고 응답
    • PUT: 요청된 자원을 수정, Location을 포함시키지 않고 주로 클라이언트가 요청한 URI 주소를 포함하여 응답 * DELETE: 요청된 자원을 삭제할 것을 요청
    • HEAD: GET방식과 동일하지만, 응답에 BODY가 없고 응답코드와 HEAD만 응답
    • OPTIONS: 메소드의 종류를 확인할 경우 사용
    • TRACE: 원격지 서버에 루프백 메시지 호출하기 위해 테스트용으로 사용
  • Path : HTTP 요청 주소이다.
  • Version : HTTP Version이다.
    • 보통 요청 Version을 통해 응답 Version을 맞춘다.)
    • 버전은 0.9/1.0/1.1/2.0이 있다.

Request Header

  • Request의 요청 정보를 담고있는 부분이다.
  • Key-Value 형식으로 되어 있다.
  • Connectionless, Stateless
    • Http는 클라이언트가 요청을 보내면 연결을 끊어 버리는 특징을 가지고 있다.(Connectionless)
    • 따라서 Header에 keep-alive라는 속성을 줘서 재활용 한다.
    • stateless는 통신이 끝나면 상태를 유지하지 않는 특징이다.
    • 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성을 가지고 있다.
    • 이 두가지를 해결하기 위해서 쿠키와 세션을 사용한다.
  • 참고 사이트 : https://blog.outsider.ne.kr/888

Request Body

  • Request의 요청할 데이터를 담고 있는 부분이다.
  • 전송하는 데이터가 없으면 Body부분은 비어있다.

Http Response

HTTP/1.1 200 OK

Content-Type: text/html; charset=UTF-8
Content-Length: 6097

<!DOCTYPE html...

Response Status

  • Http Response의 응답 상태를 나타내주는 부분이다.
  • Version StatusCode Status로 구성 되어 있다.
  • 대표적인 상태 코드 및 텍스트

Response Header

  • Http Request 헤더와 동일
  • Response 헤더가 따로 있음 (참고 사이트 확인)

Response Body

  • Http Request Body와 동일
  • 전송하는 데이터가 없으면 Body부분은 비어있음
  • 용도에 따라 html코드나 Json등 데이터를 내보냄

요청 흐름 구조

flow

  • 클라이언트(브라우저)에서 요청을 보내면 서버에서 받아 데이터를 처리하고 클라이언트에게 응답을 보내주는 구조로 되어있다.
  • 서버컴퓨터가 어디에 있는지 알려주는 URL 프로토콜을 사용한다.
  • URI vs URL vs URN
    • URI : 인터넷의 우편물 주소 같은 것으로, 정보 리소스를 고유하게 식별하고 위치를 지정한다.
    • URL : URL은 특정 서버의 한 리소스에 대한 구체적인 위치를 서술하는 프로토콜, 리소스가 정확히 어디에 있고 어떻게 접근할 수 있는지 분명히 알려준다.
    • URN : URN은 콘텐츠를 이루는 한 리소스에 대해, 그 리소스의 위치에 영향 받지 않는 유일무이한 이름 역할, 이 위치 독립적인 URN은 리소스를 여기저기로 옮기더라도 문제없이 동작한다.

'Web' 카테고리의 다른 글

TCP와 UDP  (0) 2020.01.16
WebServer vs Was  (0) 2020.01.15
Comments