[Network] HTTP

Jay Mild Lee·2022년 12월 1일
0

web programming

목록 보기
9/9

I. 개요

1. HTTP란?

HyperText Transfer Protocol의 약자로, 데이터를 주고 받는 양식을 정의한 일종의 통신규약이다. 범용적인 양식을 가지고 있어 가장 널리 쓰이는 Protocol로, 모든 브라우저에서 HTTP를 지원한다.

2. Client-Server Architecture

HTTP는 클라이언트와 서버의 역할이 명확하게 구분되어 있다. 클라이언트 혹은 서버 측에서 Request(요청)을 보내면, 반대편에서 Response(응답)을 반환하는 구조이다. 서버와 클라이언트는 Response(응답)을 보내고 나면, 해당 내용을 저장하지 않는다. 이러한 HTTP의 특성을 Stateless라고 부르며, 상태를 유지해야하는 경우 Cookie와 같은 기술을 사용한다.

클라이언트와 서버 사이에서 데이터가 전송되는 과정을 간략하게 정리하면 다음과 같다.

  1. 클라이언트는 서버에게 자신이 원하는 데이터를 Request(요청)한다.
  2. 서버는 클라이언트가 원하는 데이터가 있는지 확인하고, 경우에 따라 Request(요청)를 가공한다.
  3. 서버는 가공된 결과를 Response(응답)로 반환하거나, Request(요청)이 잘못되었을 경우 해당 내용을 Response(응답)로 반환한다.
  4. 클라이언트는 전달받은 Response(응답)을 응용 프로그램(브라우저 등)을 통해 시각화한다.

3. TCP/IP

HTTP 통신은 TCP를 통해서 이루어지는데, 클라이언트와 서버는 TCP/IP 연결을 수행한다. TCP는 데이터의 신뢰성을 보장하며, 이를 통해 클라이언트와 서버는 원활한 데이터 통신이 가능한다.

II. HTTP message

HTTP 메세지는 HTTP 어플리케이션 간에 주고 받은 데이터를 의미한다. HTTP는 앞서 이야기했듯이, Request(요청)Response(응답)로 구분할 수 있다. HTTP 메세지는 3가지 부분으로 나뉜다.

  1. Start Line
  2. Header
  3. Body

1. Start Line

1) Request(요청)

MethodURLVersion
Get/api/member1.1
  1. Method 영역은 Request(요청)의 종류를 나타내며 GET, HEAD, POST, PUT, TRACE, OPTIONS, DELETE로 나뉜다.
  2. URL 영역은 요청한 URL의 값을 의미한다.
  3. Version은 HTTP의 버전을 의미한다.

2) Response(응답)

VersionStatus CodeMessage
1.1404NOT_FOUND
  1. Version은 HTTP의 버전을 의미한다.
  2. Status CodeRequest(요청)에 대한 처리 결과를 의미한다.
  3. MessageStatus Code와 1대 1로 매칭되며, 사용자에게 요청에 대해 어떤 결과가 나타났는지 알려주기 위한 텍스트 구문이다.

2. Header

헤더는 HTTP Message Body에 대한 부가적인 정보를 표현한다. 다양한 헤더가 존재하며, 인자로 생성한 시간을 표시하는 Date, 종류를 나타내는 Content-Type, 언어를 명시하는 Content-Language 등이 있다.

3. Body

실질적으로 클라이언트나 서버에서 사용해야하는 데이터가 저장되는 부분이다.

III. HTTP Status Code

HTTP 상태 코드에 대해 매우 잘 정리된 글이다.

https://brunch.co.kr/@leedongins/65

0개의 댓글