본문 바로가기
CS/Network

HTTP 기본적인 내용

by gamxong 2023. 4. 6.

0. HTTP (HyperText Transfer Protocol)

HTTP는 Hyper Text Transfer Protocol(하이퍼텍스트 전송 프로토콜)의 약자로, 인터넷에서 데이터를 주고받기 위한 프로토콜(규약) 중 하나입니다. HTTP는 웹 브라우저와 서버 간 통신에서 사용됩니다. 웹 브라우저는 HTTP를 통해 서버로 요청(request)을 보내고, 서버는 이 요청에 대한 응답(response)을 반환합니다.

1. HTTP 의 2가지 특징

Request / Response

클라이언트와 서버간의 통신은 요청(Request) 응답(Response)을 통해 이루어집니다.
ex)
1. 브라우저가 HTML 파일을 요청합니다. 서버는 HTML 파일을 반환합니다.
2. 브라우저가 스타일 시트를 요청합니다. 서버는 CSS 파일을 반환합니다.
3. 브라우저에서 JPG 이미지를 요청합니다. 서버는 JPG 파일을 반환합니다.
4. 브라우저가 JavaScript 파일을 요청합니다. 서버는 JavaScript 파일을 반환합니다.
5. 브라우저가 데이터를 요청합니다. 서버는 데이터(xml, json)를 반환합니다.

Stateless & Connectionless

각각의 HTTP 통신은 비연결적인 특성으로 연결이 해제됨과 동시에 서버는 클라이언트가 이전에 요청한 결과에 대해서 잊게됩니다. 만약 클라이언트가 이전 요청과 같은 대답을 원한다 하더라도 다시 한번 동일한 요청을 보내야만 합니다.

여러 번의 통신 과정에서 연속된 데이터 처리가 필요한 경우를 위해 로그인 토큰 또는 브라우저의 쿠키, 세션, 로컬 스토리지와 같은 기술이 필요에 의해 만들어졌습니다.

HTTP는 위와 같은 특징으로 인해 'Stateless Protocol' 이라고 부르며, 각각의 통신은 독립적으로 처리됨에 따라 단순하고, 서버에 부담을 줄일 수 있습니다.

 

2. HTTP - request 메소드

HTTP 클라이언트-서버 모델을 따릅니다. 클라이언트는 요청을 보내는 측이며, 서버는 요청을 받아서 응답하는 측입니다. HTTP 요청은 다양한 메서드를 사용할 있으며, 가장 일반적인 메서드는 GET POST입니다. GET 메서드는 서버로부터 데이터를 요청하고, POST 메서드는 서버로 데이터를 보냅니다.

 

GET : 리소스를 검색하고, 반환받기 위해 사용되는 메소드로, 원하는 정보를 서버에 요청할 때 쓰입니다. 일반적으로 URL에서 쿼리를 통해 보내기 때문에 RequestBody가 없습니다.

POST : 요청된 자원을 생성하기 위한 메소드.

PUT : 요청된 자원을 수정하기 위해 사용되는 메소드

DELETE : 요청된 자원을 삭제하기 위해 사용되는 메소드

 

3. HTTP - response status

2xx (성공) : 이 클래스의 상태 코드는 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킵니다.

  • 200 - 서버가 요청을 제대로 처리했다는 의미이며 주로 요청한 페이지를 제공했을 때 사용
  • 201 - 성공적으로 요청되었으며 서버가 새 리소스를 작성
  • 202 - 서버가 요청을 접수했지만 아직 처리하지 않았을 경우

4xx (실패) : 이 클래스의 상태 코드는 클라이언트에 오류가 있음을 나타낸다.

  • 400(잘못된 요청) - 서버가 요청의 구문을 인식하지 못했을 경우
  • 401(권한 없음) - 인증이 필요한 요청으로, 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있습니다.
  • 402(결제 필요) - 결제가 필요한 리소스에 결제 없이 접근했을 경우

5xx (서버오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.

  • 500(내부 서버 오류) - 서버에 오류가 발생하여 요청을 수행할 수 없는 경우
  • 501(구현되지 않음) - 서버에 요청을 수행할 기능이 없을 경우로, 서버가 요청 메소드를 인식하지 못할 때 이 코드를 표시

'CS > Network' 카테고리의 다른 글

[Network] RFC에 정의된 HTTP Method  (0) 2025.01.13
Rest, Rest API, Restful  (0) 2023.04.06

댓글