컴퓨터 네트워크

HTTP의 개념 (application layer)

dong1 2021. 1. 21. 23:11

1. 웹과 HTTP

 

웹 페이지는 HTML file + referenced object 로 이루어져 있는데, 이 때 각 object들은 URL을 통해 reference 되는 구조이다. 여기서 URL이란, Uniform Resource Locator의 약자로 아래 그림과 같은 구조로 이루어져 있다.

 

URL

 

2. HTTP

 

HTTP(Hyper Text Transfer Protocol)는 Application layer의 여러 프로토콜 중 하나로 주로 에서 많이 쓰이는 프로토콜이다. HTTP 프로토콜을 통해 우리는 웹사이트에서 다양한 활동을 할 수 있다.

 

HTTP의 특징은 다음과 같다.

 

1) HTTP는 TCP와 짝지어져 있다.

 : 처음에 TCP가 연결을 맺으면 이후 HTTP 메시지가 교환되는 구조이다. TCP를 통해 통신을 하므로 신뢰성 있는 통신을 할 수 있다.

 

2) HTTP는 'stateless' 하다.

 : 클라이언트의 상태나 과거 연결했던 기록 등을 신경쓰지 않고, 그냥 그 순간 요구하는 것만을 처리한다. 이러한 특징 덕분에 간단하고 빠르게 프로토콜이 동작할 수 있다.

 

 

3. HTTP 연결 종류

 

HTTP는 어떻게 연결을 하느냐에 따라서 다음과 같이 분류할 수 있다.

 

1) Non-persistent HTTP

 : HTTP 의 초기 모델로, 한번의 연결에 1개의 컨텐츠를 처리하는 형식이다.

 

2) persistent HTTP

 : 한 번 연결하는 동안에 컨텐츠를 계속해서 교환하는 형식이다. TCP로 처음 연결하는데 RTT(Round Trip Time)이 너무 오래 걸려서 고안된 연결 방식이다.

참고로 RTT는 패킷을 전송하고 다시 되돌아올 때 걸리는 queueing delay와 propagation delay를 고려한 시간을 나타낸다.

 

3) HTTP pipelining

 : 한 번 연결하는 동안에 컨텐츠를 계속해서 교환하되, pipelining을 통해 더 효율적으로 컨텐츠를 교환할 수 있는 방법이다.

 

HTTP connections

 

 

 

4. HTTP request / response

 

HTTP 프로토콜에 사용되는 메시지들은 ASCII로 작성되어 일반 사용자들이 읽을 수 있는 형태이다. HTTP 프로토콜 메시지는 크게 HTTP request와 HTTP response로 구분할 수 있다.

 

  • HTTP request 메시지

이름 그대로 클라이언트가 서버에게 컨텐츠를 요구할 때 사용되는 메시지로, 아래와 같은 구조로 되어 있다.

 

 

HTTP request message

 

1) request line : HTTP request 메시지의 가장 첫번째 줄에 위치한다. GET, POST, PUT, DELETE와 같은 메소드 +요청하는 object + 프로토콜 버전 정보 등으로 이루어져 있다.

 

2) header line : 주요 내용들을 담고 있다. 서버 호스트 주소, 클라이언트 사용자 정보, 클라이언트가 지원하는 언어 / 형식 / 파일 등을 나타낸다.

 

참고로 메소드 중 POST 라는 메소드는 클라이언트가 서버에게 변화를 알려줄 때 사용한다. 그래서 인스타그램에 게시글을 올리는 등 사용자가 웹페이지에 어떤 변화를 주면 POST 메소드를 이용한다.

같은 맥락으로 사용자가 구글 검색을 할때, 사용자가 입력한 검색어를 POST 메소드를 통해 서버에게 넘겨주는게 국룰이다. 하지만, POST 메소드보다 GET 메소드가 더 간단하므로, GET 메소드에 검색어를 parameter로 넘겨주는 형태로 이용하기도 한다.

 

  • HTTP response 메시지

서버가 클라이언트에게 보낼 때 사용되는 메시지로, 아래와 같은 구조로 되어 있다.

 

HTTP response message

 

1) status line : HTTP response 메시지의 가장 첫번째 줄에 위치한다. 사용되는 프로토콜 정보status code 등을 담고 있다.

참고로 status code는 번호에 따라 아래와 같은 의미를 가지고 있다.

 

status code

 

2) header line : 서버가 제공하는 컨텐츠에 대한 정보를 담고있다. 시각, 서버 정보, 마지막 수정 시각, 컨텐츠 길이, 연결 지속 여부 등을 나타낸다.

 

3) data : 컨텐츠에 대한 데이터를 나타내는 영역이다.

 

 

 

오늘 배운 내용을 정리해보면,

 

1. HTTP 는 주로 웹에 이용되는 프로토콜이며, object 들은 URL을 통해 reference 된다.

 

2. HTTP는 TCP와 밀접한 관련이 있으며, 'stateless'하다는 특징이 있다.

 

3. HTTP는 연결형식에 따라 Non-persistence, persistence, HTTP pipelining 으로 구분할 수 있다.

 

4. HTTP 메시지는 클라이언트가 서버에게 보내는 request message와 서버가 클라이언트에게 보내는 response message 로 구분할 수 있다.

 

 

위 내용은 공부하며 정리한 것으로, 오류가 있을 수 있습니다.