2020. 10. 31. 16:52ㆍ네트워크/HTTP
웹 페이지 문서에 있는 하이퍼 텍스트 개념은 여러 번의 요청과 응답을 필요로 할 수 있다. 그런데 웹 페이지들이 서로 다른 서버에 있는 경우도 있고, 같은 서버에 있는 경우도 있다. 다른 서버에 있는 웹 페이지들을 가져올 경우에는 새로운 TCP 연결을 생성하는 것 말고는 답이 없다. 하지만 웹 페이지들이 같은 서버에 있는 경우는 다르다. 페이지들을 일일히 가져올 때마다 TCP 연결을 생성해야 하는 방법이 있고, 하나의 TCP 연결로 모든 웹 페이지들을 가져오는 방법이 있다. 전자의 방법을 비 영속적 연결이라하고, 후자의 방법을 영속적 연결이라고 한다.
1. 비 영속적 연결
비 영속적 연결은 HTML 1.1 이전 버전에서 사용하던 연결 방식으로 각 요구/응답에 대해 새로 TCP 연결이 만들어지고, 응답 후 서버를 바로 닫는다. 따라서 각 연결마다 다른 버퍼들을 필요로 하고, 연결/종료 시 Three-way Handshaking 작업을 해줘야하기 때문에 왕복시간(Round Trip Time, RTT)에 의한 오버헤드가 크다는 단점이 있다. [그림 1]은 비 영속적 연결이 예를 보여준다.
[그림 1]의 상황에서 클라이언트는 같은 서버에 있는 두 개의 파이썬 파일을 요청하려고 한다. 그러면 총 두 번의 연결 설정/해제 작업이 필요하다. 새 연결을 만들기 위해 TCP는 적어도 세 번의 핸드세이크 메시지를 전송해야 하고, 요청 메세지는 세 번째에서나 보내질 수 있다. 연결이 설정된 후에야 파일이 전송될 수 있고, 파일 수신 후 연결 종료를 위해 또 다시 세 개의 핸드세이크 메세지가 필요하다. 만약 파일이 두 개가 아니라, 100개 이상이라면? 웹 페이지 하나를 로드하는데 엄청난 시간이 걸릴 것이다.
2. 영속적 연결
영속적 연결은 HTML 1.1 이후 버전에서 사용하는 방식으로, 서버가 응답을 전송한 후에 차후의 요청을 위해 연결을 열어놓은 상태로 유지한다. 서버는 클라이언트 요청 또는 타임아웃이 되야 연결을 닫을 수 있다. 따라서 영속적 연결을 사용하면, 시간과 자원을 절약할 수 있다. [그림 2]는 영속적 연결의 예시를 보여준다.
3. 참고자료
- 데이터통신과 네트워킹 5판, McGraw-Hill Korea
'네트워크 > HTTP' 카테고리의 다른 글
웹 캐시 (0) | 2020.11.21 |
---|---|
하이퍼 텍스트 프로토콜(HTTP)이란? (0) | 2020.10.30 |