본문 바로가기

ComputerScience/Network

[Network]HTTP(웹) 서비스 개요 및 HTTP 메시지 포멧

1
HTTP(HyperText transfer Protocol) 은
웹서버와 웹클라이언트가 주고 받는 메시지 구조 및
교환 방식을 정의한 프로토콜.

2
기본적으로 사용자에게는
온디멘드(on-demand) 방식으로 동작.
 *on-demand란?
  - 그들이 원할 때 원하는 것을 수신한다.

3
HTTP는 TCP를 전송프로토콜로 사용.

4
HTTP는 비상태 프로토콜(stateless)
 -> 서버에서 클라이언트에 대한 정보를 유지하지 않음.
    ex)클라이언트에서 수초내에 요청했던 페이지를 다시 요청해도 다시 객체를 전송.

5
비지속 연결 HTTP / 지속연결 HTTP
 *HTTP의 default mode는 파이프라이닝을 이용한 지속연결.
비지속 연결은 TCP연결이 다른 객체를 전송하기 위해 유지 되지 않는 연결방식.
즉 한개의 TCP연결은 하나의 요청메시지와 하나의 응답메시지만 전송.
따라서, 웹페이지에 다양한 객체가 포함되어 있다면 객체의 수만큼 TCP연결이 필요.

지속연결은 서버가 클라이언트의 요청의 대해서 응답한 후
TCP연결을 유지하는 방식으로,
같은 클라이언트-서버간의 요청-응답이 동일한 TCP연결을 통해 이루어지는 연결방식.

비지속연결은 각 요청객체마다 새로운 연결이 설정되어야 함.
 -> TCP버퍼가 할당되어야 하고 TCP변수들이 클라이언트와 서버 양쪽에 유지 되어야 함으로
      웹서버에 심각한 부담을 줌.
 -> 또한 각 객체마다 2RTT를 필요로 하는데 이를 별도로 진행해야 함으로 성능이 떨어짐.

*RTT란?
 -> 패킷이 클라이언트로부터 서버까지 가고, 다시 클라이언트에게 돌아오는 데
      걸리는 시간 RTT(round-trip time)

6
HTTP 메시지 포멧
 6-1) HTTP 요청메시지

 WireShark를 통하여 패킷을 떠본 화면이다.
 HTTP 요청메시지는 첫 줄 요청라인(request line), 이후 줄들 헤더라인(header line) 으로 구성되어 있다. 
 요청라인은 3개의 필드, 방식(method) 필드, URL필드, HTTP 버전필드로 구성되어 있다.
 방식 필드는 GET, POST, HEAD, PUT 그리고 DELETE를 포함하는 여러가지 다른 값을 가질 수 있다.
 하지만 대부분의 요청메시지의 방식필드 값은 GET으로 이루어져 있다.
 
 헤더라인은 HTTP 서버와 클라이언트에 따라 필드는 달라지지 않지만, 필드의 값이 상이한 경우가 있다.
 또한 헤더라인은 요청할 때 마다 달라질 수 있다.
 특히 HTTP 표준을 많이 따르지 않는 익스플로러8,7,6 등에서와 다른 웹브라아저 간의 같은 웹페이지 요청메시지를 비교해보면
 확실히 알 수 있는데, 어쨌거나, 헤더라인을 간단히 살펴보면,
  
  Accppt-Languge - 언어
  User-Agent - client의 웹브라이저 정보.
  HOST - 요청하는 URL
  Connection - 지속 연결의 사용 여부.
  IF-Modified-since - 클라이언트가 가지고 있는 캐시(임시웹페이지)의 갱신일자.
  *IF관련 헤더는 클라이언트가 웹캐시를 가지고 있지 않은 경우에는 나타나지 않는다.
 
 6-2) HTTP 응답메시지