Idealim
article thumbnail
Published 2021. 8. 3. 17:25
[Web] HTTP 이해하기 CS/CS 기초

/* 본 게시물은 ' ' 의 내용을 토대로 작성되었습니다. */

참고 자료

[BoostCourse HTTP 이해하기] : https://www.boostcourse.org/mo316/lecture/17089?isDesc=false 

 


# HTTP란?

 

우리는 인터넷에서 데이터를 주고 받을 때 HTTP를 많이 사용한다. 웹 브라우저에서 서버에 연결하고 웹페이지를 받아 와 화면에 보여줄 때 사용하는 것이 HTTP이기 때문에 인터넷에서 웹페이지를 요청하고 응답으로 받을 때는 HTTP를 사용한다고 생각하면 된다. 그러면 HTTP는 무엇일까?

HTTP에 앞서 소켓에 대해 간단히 설명해보자.

소켓
소켓은 서버 소켓과 클라이언트 소켓을 만들고 서로 연결하는 과정을 거치게 된다. 
서버 소켓은 연결을 기다리는 역할을 하고 클라이언트 소켓은 연결을 만드는 역할을 한다. 클라이언트에서 연결을 만들고 나면 데이터를 보내거나 받을 수 있다.
즉, 두 대의 컴퓨터(클라이언트와 서버) 사이의 통로를 만든다고 생각하면 된다.

HTTP는 위에서 설명한 소켓을 기반으로 동작한다. 데이터를 주고받을 때 HTTP라는 표준 프로토콜에 맞게 주고 받는 것이다. (프로토콜: 정해진 약속) 

 

HTTP 요청과 응답

웹서버는 HTTP 요청을 받아 처리할 수 있습니다. 웹브라우저와 같은 클라이언트는 웹서버에 연결을 만든 후 요청을 보내고 응답을 받아 화면에 보여주게 됩니다. 요청을 받거나 응답을 줄 때는 HTTP라는 국제표준에 맞는 포맷으로 주고받게 됩니다.

데이터를 주고받을 때의 포맷을 보면, 헤더(Header)와 바디(Body)로 구분되고 헤더에 어떤 것들이 들어갈 수 있는지가 표준으로 정해져 있습니다. 그리고 바디에는 보내고 받기 위한 대상 데이터를 넣어둘 수 있습니다.

요청 포맷

HTTP 요청 포맷을 보면, 첫 번째 줄이 기본적인 요청 정보를 포함하고 있습니다. GET이나 POST와 같은 요청 방식(Method), 요청 패스 그리고 HTTP 버전 등이 들어가 있습니다. 헤더에 들어가 있는 각각의 줄은 하나의 속성을 나타내고 속성이름 + 콜론(:) + 속성값으로 구성됩니다. 각각의 줄은 \r\n 코드로 구분되므로 한 줄씩 보이게 됩니다. 헤더와 바디는 \r\n으로 구분되므로 헤더와 바디가 한 줄 더 띄워져 있는 모양이라고 생각하면 됩니다. 바디에는 전송하고자 하는 데이터를 넣을 수 있습니다.

응답 포맷

응답 포맷은 요청 포맷과 크게 다르지 않습니다. 헤더와 바디로 구분되고 헤더에는 한 줄씩 속성이 들어갑니다.

응답의 첫 줄은 상태를 나타내며 HTTP 버전과 응답 코드, 응답 메시지 등으로 구성됩니다.

 

반응형
profile

Idealim

@Idealim

읽어주셔서 감사합니다. 잘못된 내용이 있으면 언제든 댓글로 피드백 부탁드립니다.