네트워크와 관련 있는 시스템을 운용하거나
네트워크 응용 프로그램을 개발하면서 많이 접하게 되는 것이
응용 계층 기술이다.
응용 계층 기술에 적용되는
응용 계층 프로토콜은
응용 프로그램들 간에 필요한 정보를 주고 받기 위해 사용하는
프로토콜이라고 할 수 있다.
응용계층의 대표적인 프로토콜인 파일 전송에 사용되는 FTP,
터미널 연결에 사용되는 TELNET,
이메일 송신 및 접근에 사용되는 SNMP 프로토콜이 있다.
웹 클라이언트와 웹 서버 간 데이터 전송을 위해 사용되는 HTTP 역시
응용 계층 프로토콜이다.
기존의 일반적인 통신 방식인
네트워크 인프라에 접속하는 방식이 아닌,
단말 대 단말 통신이 P2P 프로토콜 중에서
많이 알려진 비트 토렌트 프로토콜 또한
많이 사용되는 응용 계층 프로토콜이라 할 수 있다.
Hypertext Transfer Protocol은
텍스트를 동영상, 음성 파일과 연결시키는 하이퍼미디어 정보 시스템을 위한 응용 계층 프로토콜로
90년대 초반부터 사용된
월드 와이드 웹 콘텐츠를 전송하기 위한 목적으로 사용되고 있다.
첫 번째 버전인 HTTP/0.9는
인터넷을 통하여 저수준 데이터 전송을 위한 간단한 프로토콜이나
HTTP/1.0(RFC 1945)부터는 *MIME 형태의 메시지를 정의하여 사용하였다.
HTTP/1.1은 현재 사용 중인 버전으로 HTTP/1.0에 비해 좀 더 신뢰성 있게 설계되었다.
HTTP 프로토콜은 대부분의 표준 응용 프로토콜과 마찬가지로
클라이언트-서버 환경에 맞게
요청/응답 프로토콜을 구현한다.
마이크로소프트사의 인터넷 익스플로러, 구글 크롬 브라우저, 모질라 파이어폭스
같은 웹 브라우저와 아파치 HTTP 서버 같은 웹 서버에서
HTTP 프로토콜을 구현하므로
일반 사용자는 HTTP 프로토콜이 어떻게 구현되는지 몰라도
웹을 사용하는 데 아무런 어려움이 없을 것이다.
그러나 인터넷 응용 프로그램이나
새로운 응용 프로그램을 만들 때
HTTP와 같은 텍스트 형태의 응용 계층 프로토콜을 참조하면
쉽게 설계 및 구현이 가능하므로 알아두면 좋을 것이다.
*MIME : 이메일에 첨부된 파일의 형식을 지정하기 위해 개발되었으나,
현재는 인터넷에서 다양한 형식의 데이터를 전송하고 식별하는 데 사용되는 인터넷 표준
HTTP 프로토콜은 요청/응답 프로토콜을 사용한다.
클라이언트는 서버로 <요청 메소드, URI, 프로토콜 버전, MIME 형태 정보 메시지>
형태의 요청 메시지를 보내며,
서버는 이에 대한 응답으로 상태 줄을
클라이언트에게 응답 메시지로 보낸다.
여기서 프로토콜 버전은
현재 사용중인 “HTTP/1.1”이 주로 사용된다.
HTTP 요청 메시지의 Request-Line에서 지정하는 메소드는
HTTP 프로토콜의 동작을 지정한다.
8개의 메소드에 대한 정의가 RFC 2616에 되어 있으나,
확장하는 것도 가능하다.
이 중 많이 사용되는 메소드는
GET과 POST이다.
GET 메소드는 주로 홈페이지 접근 시
서버에 있는 콘텐츠를 검색할 때에 사용된다.
POST 메소드는 폼과 같이
사용자가 입력한 정보를 웹 서버로 전달할 때 주로 사용한다.
HTTP 응답 메시지의 보다 상세한 내용은
RFC 2616을 참조하면 된다.
특히 Status-Line의 Status-Code 정보는
HTTP 요청 메시지 처리가 어떻게 되었는지 알려준다.
200이나 206 같이 2로 시작하는 코드는
요청 처리가 성공적임을 알려주는 것이며,
4로 시작하는 코드는 클라이언트 오류,
5로 시작하는 코드는 서버 오류임을 나타낸다.