HTTP로 통신하는 클라이언트와 웹 서버

HTTP는 네트워크에서 클라이언트와 서버가 통신하는 규약(Protocol) 중 하나입니다. 이전에 웹에서 이야기하는 서버와 클라이언트에 대해 간단하게 정리한 적이 있는데요. 웹 개발을 배우게 되면 일반적으로 프로그래밍을 주요하게 다루지만, 프로그래밍만큼 중요한 내용이 바로 웹에서 사용되는 네트워크 개념입니다. 그래서 이번 글에서는 이 부분을 조금 더 구체적으로 이야기해볼까 합니다.

HTTP 프로토콜은 왜 사용할까?

HTTP(Hypertext Transfer Protocol)는 TCP/IP 위에서 돌아가는 통신 프로토콜입니다. 웹에서 클라이언트와 서버는 HTTP를 기반으로 통신을 하기 때문에 웹 개발자라면 기본으로 숙지해야 하는 개념이기도 합니다.

 

 프로토콜이란 개념을 처음 접하셨다면 전문과 같은 규약 혹은 규칙으로 생각하시는 게 좋습니다. 클라이언트나 서버가 네트워크 통신을 통해 데이터를 주고받을 때 정해진 규칙이 없다면 서로가 이해할 수 없습니다. 이러한 이유로 통신에는 최소한의 규칙이 필요하고 이를 프로토콜(Protocol)이라고 정의합니다.

 

 또한, TCP/IP를 처음 듣는 분들을 위해 TCP/IP도 간략하게 설명드리면, TCP(Transmission Control Protocol)는 전송 제어 프로토콜로 어느 한쪽 노드에서 다른 한쪽 노드로 데이터를 보낼 수 있게 해 줍니다. IP(Internet Protocol)는 인터넷 규약 주소로 네트워크 상의 주소를 의미합니다. 즉 HTTP가 TCP/IP를 기반으로 한다는 말은 한 지점에서 다른 한 지점으로 요청(Request)과 응답(Response)을 한다는 이야기입니다.

TCP/IP 기반의 HTTP 통신

 다시 정리해보자면 네트워크 상에서 노드 간의 통신에는 정해진 규격이 필요하고 이러한 규격을 프로토콜(Protocol)이라고 정의합니다. 그리고 웹에서 이루어지는 클라이언트와 서버 간의 통신은 HTTP(Hypertext Transfer Protocol)를 사용합니다.

 

 

HTTP의 특징

HTTP의 가장 큰 특징은 바로 비연결성(Connectionless)과 무상태(Stateless)입니다. 단어만 보면 쉽게 이해하기 어렵지만 웹 통신에서는 매우 주요한 특징을 이야기하는 단어입니다.

 

비연결성(Connectionless)이란 말은 "계속 연결되지 않는다"라는 말로 핸드폰을 통해 예시를 들어보면 문자를 보내는 것과 같다고 생각할 수 있습니다. 문자를 보내는 순간에는 인터넷 접속해 메시지를 전달하지만 문자를 사용하지 않을 때는 인터넷 연결하지 않습니다. 만약 핸드폰이 지속적으로 인터넷에 연결이 되어 있다면 요금도 문제이지만 문자를 주고받기 위해 인터넷을 계속 사용하기 때문에 인터넷을 필요로 하는 다른 앱들은 계속 기다려야 하는 상황이 발생합니다. 간단하게 비연결성은 HTTP는 필요한 순간에만 네트워크를 이용해 클라이언트와 서버가 연결되고 데이터를 주고받는다는 이야기입니다.

 

무상태(Stateless)는 데이터를 주고받을 때 상태를 포함하지 않는다는 이야기입니다. 데이터를 주고받을 때 상태를 포함하지 않는다는 이야기는 지속적으로 발생하는 웹 통신의 요청과 응답을 매번 독립된 요청과 응답으로 판별한다는 말과 같습니다. 다르게 말하면 클라이언트와 서버는 수없이 많이 통신해도 서로를 모른다고도 이야기할 수 있습니다. 다시 말해 무상태는 항상 처음 보는 것처럼 데이터를 주고받을 수 있게 상태(식별 값)를 지니지 않는다는 의미입니다. 상태를 지니지 않는 이유는 상태를 관리하게 되면 많은 자원을 사용해야 하는 동시에 수많은 요청이 일어난 경우 부하를 감당하기 힘들기 때문입니다.

 

tip. HTML은 HTTP 응답의 일부분이다.

간혹 HTML을 서버에서 반환하는 응답(Response)의 전부로 알고 계신 분이 있으신데요. HTML은 HTTP 응답의 일부 일 뿐 응답 전부가 아닙니다. HTTP 응답 안에는 HTML 뿐만 아니라 헤더 정보나 반환하는 데이터의 종류, 길이 등 여러 가지 데이터가 있습니다.

반응형

댓글

Designed by JB FACTORY