본문 바로가기
시작/TIL(Today I Learned)

221209 - HTTP 기초, HTTP 이해하기, Request/Response Message, HTTP 요청,응답

by 백씨네 2022. 12. 10.

 

오늘 내가 배운 것

1. HTTP 이해

2. HTTP 특징

3. HTTP 동작 방식

4. Request Message, Response Massage

 

 

HTTP 이해

HTTP : HyperText Transfer Protocol

 

브라우저도 하나의 `클라이언트`이다.

  • HTTP는 서버와 클라이언트가 인터넷상에서 데이터를 주고받기 위한 프로토콜(규칙)
    • 규칙이 정해져 있기 때문에 모든 프로그램이 이 규칙에 맞춰 개발하면서 정보를 교환할 수 있다.
  • HTTP는 어떤 종류의 데이터도 전송할 수 있도록 설계되어 있다.(동영상, 오디오, 텍스트 문서 등...)
  • HTTP는 계속 발전하여 HTTP/2까지 버전이 있고, 현재 가장 많이 쓰는 버전 HTTP/1.1이다.

HTTP 특징

  • HTTP는 연결 상태를 유지하지 않은 '비연결성' 이다
    • 한번 연결을 해서 요청을 하고 응답을 받으면 연결이 끝난다는 뜻
      • HTTP는 불특정 다수와 통신하는 하기 위한 것이므로 계속 연결을 유지하면 많은 리소스가 필요하기 때문에 비연결성 특징을 가지고 있다.
      • TCP의 논리적 연결만 끊는다!
      • 서버는 클라이언트를 기억하고 있지 않기 때문에, 동일한 클라이언트의 요청을 매번 연결하고, 끊는 과정을 반복해야 한다.
  • 요청이 있으면 무조건 응답을 준다.

HTTP 동작 방식

 

4 Way Handshake 가 일어나서 서버가 닫히면서 연결이 끊긴다는 것은 연결성이 끊기는 것이지 프로세스가 종료되는 것은 아니다.

 

Request Message, Response Massage

요청, 응답 메시지는 크게 Header와 Body 2가지 영역이 있다. (빈 줄 기준으로 위아래)
가장 중요한 것은 Header의 첫 번째 줄과 Body영역이다.  

  • request header + request body -> request message
  • response header + response body -> response message

 

 

HTTP 요청 메시지

GET /user?name=baek HTTP/1.1
Host: 17.0.0.1:3000
User-agent:...
Content-type : application / x-www-form-...

name = baek

Request startline

HTTP 요청/응답 메시지에서 가장 중요한 것은 첫 번째 줄(startline)

 

`GET /user?name=baek HTTP/1.1`

[요청 메서드] [요청 URI] [HTTP 버전]

 

요청 메서드(Request Method)

  •  GET : 데이터 요청의 의미로 사용한다. (Read)
  •  POST : 데이터 입력의 의미로 사용한다. (Create)
  •  PUT : 데이터 수정의 의미 (Update)
  •  DELETE : 데이터를 삭제하기 위해서 사용 (Delete)
    - 데이터를 직접 삭제하는 것이 아니고 데이터 삭제를 서버에 요청한다.
  •  OPTION : 웹서버가 지원하는 메서드의 종류 요청

요청 URI

HOST(ip+port)를 제외한 나머지 URI를 적는다.

 

HTTP 버전

- HTTP버전이 2.0까지 있는데 1.1만 쓸 예정

 

Body

client가 server에게 요청할 데이터를 넣는 공간, body를 비운 상태로도 작동이 가능하다.

 

 

HTTP 응답 메시지

HTTP/1.1 200 OK
Date : ...
Content-Length : 3423
Content-Type : text/html

<html>
.....내용
</html>

 

Response startline

HTTP 요청/응답 메시지에서 가장 중요한 것은 첫 번째 줄(startline)

 

` HTTP/1.1 200 OK`

 [HTTP 버전] [상태 코드] [상태 메시지]

 

상태 코드

1xx(정보) : 요청을 받았으며 프로세스를 계속 진행할 때
2xx(성공) : 요청을 성공적으로 받고, 처리했음 (정상 상태)
3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요할 때
4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없을 때
5xx(서버 오류) : 서버가 유효한 요청에 대한 수행을 못 했을 때.

 

댓글