블로그 이전했습니다. https://jeongzero.oopy.io/
HTTP 개요
본문 바로가기
컴퓨터 관련 과목/Network

HTTP 개요

728x90

HTTP 란?

HTTP(HyperText Transfer Protocol, 문화어: 초본문전송규약, 하이퍼본문전송규약)는 WWW 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 쓰인다. TCP와 UDP를 사용하며, 80번 포트를 사용한다. 1996년 버전 1.0, 그리고 1999년 1.1이 각각 발표되었다.

HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다.

HTTP를 통해 전달되는 자료는 http:로 시작하는 URL(인터넷 주소)로 조회할 수 있다.

- 출처 : 위키백과-


웹의 애플리케이션 계층 프로토콜인 HTTP(HyperText Transfer Protocol)는 웹의 중심이다. 누구나 한번쯤은 HTTP라는 단어를 들어봤을 것이다.

이번 챕터에서는 HTTP가 무엇이며, 애플리케이션 계층에서 어떠한 역할을 하는지 자세히 알아볼 것이다.

 

HTTP는 두 가지 프로그램으로 구현된다. 아래의 그림처럼 클라이언트 - 서버 로 말이다. 서로 다른 종단 시스템에서 수행되는 클라이언트 프로그램과 서버 프로그램은 서로 HTTP 메시지를 교환하여 통신하는데 어떻게 어떠한 메시지 형식을 이용하여 통신하는지를 자세히 알아보쟈.



우선 HTTP는 누구다 다 사용하고있다. 나도 모르게 말이다. 인터넷을 하고 네이버에 들어가고 구글에 들어가고 학교 홈페이지에 들어가고... 이런게 다 HTTP 프로토콜을 사용하면서 이루어 지는 것이다. 기본적인 용어를 알아보면 사용자가 보고있는 웹 페이지 화면은 여러가지 객체들로 이루어진다. 객체라고 해서 어렵게 생각하지 말고 단순하게 이루어져 있는 파일(그림이나 글, 오디오) 등을 의미한다고 보면 된다. 유튜브에 들얼가보면 영상, 텍스트, 그림 등 수많은 화면을로 구성되어 있고 이러한 객체들은 하나의 HTML 파일안에 포함되어 있다. 예를 들어 웹 페이지가 HTML 텍스트와  5개의 JPEG 이미지로 구성되어 있으면, 이 웹 페이지는 6개의 객체를 갖고 있는 것이다.


기본 HTML 파일은 페이지 내부의 다른 객체를 그 객체의 URL로 참조한다. 어렵게 생각하지말고 URL로 참조한다는 소리는 위에 주소창에 주소를 써서 원하는 페이지로 이동하는 것이다. 네이버에서 메일을 누른다던가 뉴스를 누르다던가 하는 것도 사실 URL을 통해서 원하는 페이지로 이동하는 것이다. 사용자는 모르고 단순 클릭만 하면 되는 것이다.



정리를 하자면 HTTP는 웹 클라이언트가 웹 서버에게 웹 페이지를 어떻게 요청하는지와 서버가 클라이언트로 어떻게 웹 페이지를 전송하는지를 정의한다. 클라이언트와 서버의 상호작용은 나중에 자세히 설명하겠지만 간단히 설명하자면 다음의 그림과 같다. 사용자가 웹 페이지를 요청할 때(주소창에 주소를 직접 입력하거나 또는 버튼을 클릭하거나 할 때), 브라우저는 페이지 내부의 객체에 대해 HTTP 요청 메시지를 서버에게 보낸다. 서버는 요청을 수신하고 객체를 포함하는 응답 메시지로 응답한다.


HTTP의 요청-응답 관계



HTTP는 TCP를 전송 프로토콜로 사용한다. HTTP 클라이언트는 먼저 서버에 TCP 연결을 시작하고 브라우저와 서버 프로세스는 그들의 소켓 인터페이스는 통해 TCP로 접속한다. 소켓은 하나의 출입구라고 보면 된다. 클라이언트는 소켓 인터페이스로 HTTP 요청 메시지를 보내고 서버로부터의 응답 메시지를 다시 소켓 인터페이스로 받는다. TCP는 신뢰성을 보장하는 프로토콜이기 때문에(일단 그렇다고 알고 넘어가자. 나중에 자세히..) 클라이언트 프로세스가 발생시킨 모든 HTTP 요청 메시지가 안정적으로 서버에 잘 도착하게 된다.


가장 중요한 부분은 서버가 클라이언트에게 요청 파일을 보낼 때, 서버는 클라이언트에 관한 어떠한 상태 정보도 저장하지 않는다. 

이를 흔히 말하는 HTTP는 stateless protocal 이다! 라고 한다. 만약 서버가 클라이언트에 대한 정보를 유지하게 된다면 수많은 클라이언트의 정보를 관리하기가 매우 복잡하고 이로 인해 유지보수가 매우 어려워진다. 또한 보안문제도 늘어나기 때문에 따로 클라이언트의 정보를 저장하지 않는다. 하지만 이러한 비상태의 특징으로 인한 단점도 있기 때문에 쿠키라는 것이 등장했다. 이는 나중에 설명하겠다.





728x90

'컴퓨터 관련 과목 > Network' 카테고리의 다른 글

HTTP 메시지 포맷  (0) 2019.01.03
HTTP 비지속 연결과 지속 연결  (3) 2019.01.02
프로토콜 계층과 서비스 모델  (0) 2019.01.01
컴퓨터 네트워크에서의 처리율  (0) 2018.12.29
ISP란?  (0) 2018.12.25