HTTP Client & Server

bhs9610·2020년 9월 7일
0

HTTP

목록 보기
1/1

HTTP Client & Server

HTTP 는 서버와 클라이언트의 통신이다. 서버는 서비스할 자원들을 준비시켜놓으면 클라이언트는 필요시 마다 접속해서 원하는 정보를 받아가는 형태이다.

HTTP Request 는 클라이언트로 부터, HTTP Response 는 서버로부터 행해진다.

TCP Connection

많은 어플리케이션들이 TCP 에 기반한다. HTTP 도 마찬가지이다. 클라이언트와의 통신을 위해 먼저 TCP Session 을 서버와 맺어야 가능하다는 뜻이다.

HTTP Requset (요청) 은 클라이언트로 부터 시작이니 결국, TCP Session 도 마찬가지이다.

TCP Session 의 종료를 생각해보자, 일방적으로 서버에서부터 종료가 시작되지만 항상 서버로부터 시작되는 것은 아니다.

브라우저를 열고 네이버에 접속을 했다고 생각해보자, 우리는 네이버의 메인화면이 브라우저에 다 표시되기전에 브라우저를 닫을 수 있고, 다른 사이트로 접속 할수도 있다. 이럴때 클라이언트가 해당세션을 닫게 되는데 이경우는 클라이언트로부터 세션의 정료가 이루어지게 된다.

Persistence

HTTP 1.0 는 각 각의 웹컨텐츠 별로 TCP Connection 이 모두 필요했다. 과거 웹페이지는 매우 간단한 형태였을 때는 문제가 되지 않았으나, 점점 웹 어플리케이션의 크기와 복잡성이 증가하면서 성능 문제가 되기 시작했다.

보통 웹 페이지는 10개 이상의 오브젝트로 구성된 경우 하나의 페이지를 브라우저로 보려면 10개 이상의 TCP Connection 이 필요 하다. 이 문제를 해결하기 위해 등장한 것이 바로 연결지속 (Persistence) 이다.

하나의 TCP Connection 의 연결지속을 통해 지속적으로 HTTP Request 를 처리할 수 있게 한것이다. 이 기능을 사용하기 위해서는 클라이언트와 서버에서도 해당기능을 사용할 수 있도록 설정되어 있어야한다.

Pipelining

HTTP 성능을 향상하기 위한 옵션이다. TCP Session 은 순차적으로 처리된다.

예를 들어, '날씨.jpg' 와 '구름.jpg' 와 같이 2개의 이미지를 제공하느 웹 페이지의 경우 클라이언트는 '날씨.jpg' 를 요청한 후 응답을 모두 받아야만 '구름.jpg' 를 요청할 수 있다. 클라이언트가 요청한 컨텐츠를 서버가 빨리 처리를 못해 응답지연으로 이어질수 있는 것이다.

'날씨.jpg' 와 '구름.jpg' 를 응답의 완료여부와 상관없이 서버에 요청한 것이다. 정리하자면 '날씨.jpg' 를 응답을 다 받지 못하더라도 '구름.jpg' 를 요청할 수 있는것이다.

정리하자면

  • HTTP는 클라이언트-서버의 구조이며, TCP Session 의 시작은 클라이언트로 부터 시작된다.
  • HTTP는 TCP 기반의 프로토콜이다.
  • HTTP 성능개선을 위한 방법은 두 가지가 있다.
  1. 연결지속(Persistence) : HTTP 1.1 기본적으로 적용되어있으며, 다수의 HTTP Request 를 단일 TCP Session 에서 처리해 TCP Session 의 부하를 개선시킨 방법이다.
  2. 파이프라이닝(Pipelining) : HTTP Request 에 대한 응답에 상관없이 다음 요청을 처리할 수 있는 기능이다.

참고자료

http://withbundo.blogspot.com/2017/06/2.html
https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

profile
@changhyuni

0개의 댓글