HTTP

박선우·2023년 1월 11일
0

CS 스터디

목록 보기
12/53
post-thumbnail

🌼 HTTP

1️⃣ HTTP(Hyper Text Transfer Protocol)란,

  • 브라우저와 서버가 통신할 수 있도록 만들어주는 여러 프로토콜 가운데 한 종류로 웹 브라우저와 웹 서버 사이에 HTML(웹 문서를 만들기 위한 언어) 문서를 주고받는데 쓰이는 통신 프로토콜입니다.

2️⃣ HTTP 통신의 요청과 응답 (Request, Response)

  • 클라이언트란(요청 : Request) 요청을 보내는 쪽을 의미하며 일반적으로 웹 관점에서는 브라우저
  • 서버란(응답 : Response) 요청을 받는 쪽을 의미하며 일반적으로 데이터를 보내주는 원격지의 컴퓨터를

🐶 Request 구조

🫥 Request Line

  • HTTP 메서드 (GET, POST 등)를 사용해 서버가 수행해야 할 동작을 나타냅니다.
  • 요청 타겟 (URL, 또는 포르토콜, 포트, 도메인)을 나타내며, 이들은 요청 컨텍스트에 의해 특정 지어집니다.
  • HTTP 버전이 들어갑니다. 응답 메시지에 사용할 HTTP 버전을 알려주는 역할을 합니다.

🫥 Header

  • 요청에 들어가는 HTTP 헤더는 HTTP 헤더 기본 구조를 따릅니다.
  • 대소문자 구분 없는 문자열 다음 콜론 (' : ')이 붙으며, 그 뒤에 오는 값은 헤더에 따라 달라집니다.

🫥 Body

  • request의 마지막 부분에 들어갑니다. 모든 요청에 들어가지는 않고 Get, HEAD, DELETE, OPTIONS처럼 리소스를 가지고 오는 요청은 대부분 본문을 필요로 하지 않습니다.
  • 바디는 단일-리소스 본문(single-resource bodies), 다중-리소스 본문(multiple-resource bodies)으로 나눠집니다.

🐶 Response 구조

🫥 Status Line

  • 프로토콜 버전, 보통 HTTP/1.1 입니다.
  • 상태 코드, 요청의 성공 여부를 나타냅니다. (200, 404, 302 등의 코드)
  • 상태 텍스트, 짧고 간결하게 상태 코드에 대한 설명을 글로 나타냅니다. (Not Found)

🫥 Header

  • 응답에 들어가는 HTTP 헤더는 요청과 마찬가지로 HTTP 헤더의 기본 구조를 따릅니다.
  • 대소문자 구분 없는 문자열 다음 콜론 (' : ')이 붙으며, 그 뒤에 오는 값은 헤더에 따라 달라집니다.
  • 헤더를 세분화하면 General Header, Request Header, Entity Header으로 나눌 수 있습니다.

🫥 Body

  • response의 마지막 부분에 들어갑니다. 모든 응답에 들어가지는 않고 201, 204 같은 상태 코드를 가진 응답에는 보통 본문이 없습니다.
  • response body는 이미 길이가 알려진 단일 파일로 구성된 헤더 두 개(Content-Type, Content-Length)를 가진 단일-리소스 본문, 길이를 모르는 단일 파일로 구성된 단일-리소스 본문, 서로 다른 정보를 담고 있는 멀티파트로 이루어진 다중-리소스 본문 이렇게 크게 3가지로 나눌 수 있습니다.

🐶 HTTP Method

GET : 존재하는 자원에 대한 요청
POST : 새로운 자원을 생성
PUT : 존재하는 자원에 대한 변경 (자원 전체를 갱신)
PATCH : 존재하는 자원에 대한 변경 (자원 일부를 교체)
DELETE : 존재하는 자원에 대한 삭제
OPTIONS : 웹 서버에 지원되는 메서드의 종류를 확인할 경우 사용

🐶 Header의 종류

General header : 요청과 응답 모두에 적용되지만 바디에서 최종적으로 전송되는 데이터와는 관련이 없는 헤더.
Request header : 페치될 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더. == 내가 보내는 메세지의 헤더
Response header : 위치 또는 서버 자체에 대한 정보(이름, 버전 등)와 같이 응답에 대한 부가적인 정보를 갖는 헤더. == 내가 받은 메세지의 헤더
Entity header: 컨텐츠 길이나 MIME 타입과 같이 엔티티 바디에 대한 자세한 정보를 포함하는 헤더.

🐶 HTTP StatusCode

  • 1xx : Informational - 요청 정보를 처리 중
  • 2xx : Success - 요청을 정상적으로 처리함
  • 3xx : Redirection - 요청을 완료하기 위해 추가 동작이 필요함
  • 4xx : Client Error - 클라이언트의 요청 오류
  • 5xx : Server Error - 서버 측 오류
profile
코린이 열심히 배우자!

0개의 댓글