HTTP란 무엇인가?

홍산의·2023년 3월 5일
1

2023백엔드로드맵

목록 보기
3/5

📌What is HTTP?

📎HTTP (HyperText Transfer Protocol)

텍스트 기반의 통신 규약으로 '인터넷에서 데이터를 주고받을 수 있는 프로토콜'이다.
이렇게 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰 개발해서 서로 정보 교류를 할 수 있게 되었다.

📎HTTP동작

클라이언트(사용자)가 브라우저를 통해 어떤 서비스를 url을 통하거나 다른 것을 통해 요청하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 클라이언트에게 응답하는 형태로 동작한다.

  • 요청(request) : 클라이언트 -> 서버
  • 응답(response) : 서버 -> 클라이언트

HTML문서만 HTTP통신을 위한 유일한 문서는 아니다.
Plain text로 부터 JSON 데이터 및 XML과 같은 형태의 정보도 주고 받을 수 있다.
보통은 클라이언트가 어떤 정보를 HTML형태로 받고싶은지, Json형태로 받고 싶은지 명시해주는 경우가 많다.

📎HTTP 특징

  • HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석이 된다.
  • TCP/ IP를 이용하는 응용 프로토콜이다.
    (컴퓨터와 컴퓨터간에 데이터를 전송 할 수 있도록 하는 장치로 인터넷이라는 거대한 통신망을 통해 원하는 정보(데이터)를 주고 받는 기능을 이용하는 응용 프로토콜)
  • HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.
    (이러한 단점을 해결하기 위해 Cookie와 Session이 등장하였다.)
  • HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다.

📎HTTP의 예시

  • 서버 : 어떠한 자료에 대한 접근을 관리하는 네트워크상의 시스템. (요청에대한 응답을 보냄)
  • 클라이언트 : 그 자료에 접근할 수 있는 프로그램. ex)웹 브라우저, 어플리케이션 등...

클라이언트 프로그램에서 사용자가 회원가입을 시도하면 서버로 회원 정보를 보내고 서버는 회원 정보를 저장한다. 이 과정에서 클라이언트와 서버간의 교류가 HTTP라는 규약을 이용해서 발생하게 된다.

📎요청(Request)

클라이언트가 서버에게 "해줘" 라고 하는 것이다. 이를 요청이라 하며 요청을 보낼때는 요청에 대한 정보를 담아 서버로 보낸다.
예를들어 웹이 식당, 클라이언트가 손님, 서버가 주방 이라고 치자. 그렇다면 요청은 손님이 식당에서 원하는 메뉴를 주문서에 작성하는 것 과 같다.

Request Method

  • GET : 자료를 요청할때 사용
  • POST : 자료의 생성을 요청할 때 사용
  • PUT : 자료의 수정을 요청할 때 사용
  • DELETE : 자료의 삭제를 요청할 때 사용
GET https://velog.io/@hongsanui/ HTTP/1.1	//시작줄							
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...	//헤더			  
Upgrade-Insecure-Requests: 1

예시로 위 코드에서 첫줄을 보면

두번째줄은 '헤더'라고 부르며 요청에대한 정보가 담겨있다. User-Agent, Upgrade-Insecure-Requests 등등이 헤더에 해당되며 헤더의 종류는 매우 다양하다.

본문은 요청을 할 때 함께 보낼 데이터를 담는 부분이다. 현재 예시에는 단순 주소만 요청하고 있기때문에 본문이 비어있다.

📎응답(response)

'서버가 요청에 대한 답변을 클라이언트에게 보내는 것'을 응답이라 한다.

Status Code

상태코드에는 많은 종류가 있다. 모두 세 자리로 이루어져 있으며, 아래와 같이 크게 다섯부류로 나눌 수 있다.

  • 1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
  • 2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.
  • 3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
  • 4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다.
  • 5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.

Response HTTP 메시지 예시

HTTP/1.1 200 OK				// 시작줄
Connection: keep-alive		// 헤더
Content-Encoding: gzip												 
Content-Length: 35653
Content-Type: text/html;

<!DOCTYPE html><html lang="ko" data-reactroot=""><head><title...
  1. 시작줄 (첫 줄)
    첫 줄은 버전 상태코드 상태메시지로 구성되어 있다. 200은 성공적인 요청이었다는 뜻이다.

  2. 헤더 (두 번째 줄부터)
    두 번째 줄부터는 헤더로 응답에 대한 정보를 담고 있다.

  3. 본문 (헤더 뒤부터)
    응답에는 대부분의 경우 본문이 있다. 보통 데이터를 요청하고 응답 메시지에는 요청한 데이터를 담아서 보내주기 때문이다. 응답 메시지에 HTML이 담겨 있는데 이 HTML을 받아 브라우저가 화면에 렌더링한다.

📎마치며

오늘도 여러 블로그, 사이트를 참고하며 만들었으며 그 사이트들은

를 참고하였다.
요 몇일 일이 많아서 공부를 제대로 못 했다. 반성하며 이번주도 화이팅해보자!
다음 시간에는 브라우저의 동작 원리에 대해서 서술하겠다!

profile
백엔드 개발자 지망생!

0개의 댓글