개발 지식

[개발지식]HTTP란? - 요청(Request)과 응답(Response)

아이딕 2021. 11. 4. 00:56
728x90
반응형

 

인터넷을 사용하면서 HTTP를 많이 봤지만, HTTP가 무엇이고, 하는 역할에 대해서는 간과하고 있던 것 같다.

웹 개발을 막 시작하면서 서버로 데이터를 전송하는 일들이 많아지면서 웹 개발자라면 HTTP프로토콜에 대해

반드시 집고 넘어가야겠다는 생각을 했다.

 

그럼 먼저 HTTP란 무엇인가?


HTTP는 Hyper Text Transfer Protocol의 두문자어로, 인터넷에서 문서와 같은 데이터를 주고받을 수 있는 프로토콜이다.
여기서 프로토콜은 웹 서버와 클라이언트 간의 통신을 하기 위한 통신 규약이다.
예를 들자면 우리가 어떠한 정보를 알아내기 위해 검색하는 행위라고 할 수 있다.
(이때 내가 검색을 하기위해 쓰는 하드웨어가 클라이언트, 요청한 데이터가 저장된 곳이 서버이다.)

 

 ◎ 요청 : 클라이언트  => 서버

 ◎ 응답 : 서버          =>  클라이언트


이러한 통신규약을 눈으로 확인할 수 있는 방법이 있는데, DevTools(개발자도구)를 이용하면 확인할 수 있다. (F12)

아래 이미지는 인터넷에 티스토리에 접속할 때 발생하는 요청과 응답에 대한 이미지다.
(https를 http로 바꿔서 실행하면 더 자세히 볼 수 있음)
 
Name 영역에 보이는 것들이 내가 현재 페이지에서 서버에 요청한 리소스 목록이고, 
요청한 리소스 중에 www.tistory.com 클릭하면 좌측에 사이트에 대한 요청과 응답을 확인할 수 있다.

 

요청 (클라이언트 => 서버)

 

첫 줄은 "시작줄"로 메서드 구조 버전으로 구성되어 있다.

GET : Request Method(요청의 종류)
HTTP/1.1 : HTTP 버전

◎요청의 종류

 GET :  URL형식의 웹 서버측 리소르(데이터)를 요청
 (파라미터를 넘겨서 해당하는 본문형식을 받는다.)

 POST : 내용 전송(파일 전송 가능)
 (클라이언트에서 서버로 전달하고자하는 정보를 서버로 보낸다.)

두 번째 줄부터 "헤더"로 요청에 대한 정보를 나타낸다.

 

응답 (서버 => 클라이언트)


응답도 요청과 마찬가지로 첫 줄은 "시작줄"로 구성되어 있다.

HTTP/1.1 : HTTP 버전
302 : 요청의 성공여부를 나타내는 상태코드(200,302,404,500...)

 ◎요청에 대한 상태코드

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

두 번째 줄부터 응답과 마찬가지로 "헤더" 정보를 나타낸다.


응답에서는 헤더보다 더 많은 정보가 있는 곳이 있는데, 
그 부분이 "본문"이다.

요청 시에 데이터를 요청하면 응답 메시지에는 요청한 데이터를
담아서 보내주는데, 이때 응답메시지에는 HTML이 담겨져 있다.

이 HTML을 받아 브라우저가 화면에 렌더링되는 것이다.

DevTools(개발자 모드)에서 Elements를 보면 요청받아 응답한 HTML을 볼 수 있다.

 

 

 

이번 포스팅에서는 시작줄과 헤더를 간략하게 포스팅하였다.

공부를 하다보니 요청헤더, 응답헤더 각 헤더들의 항목들이 다양하게 있었다.

다음에 시간이 되면 각 헤더의 항목들을 살펴봐야겠다.

 

 

728x90
반응형