NetWork[HTTP_Connection]
Connection 헤더
HTTP 에서 Connection 헤더는 클라이언트와 서버 간의 연결을 관리하는데 주로 사용됩니다.
Connection헤더는 두 개의 인접한 HTTP 애플리케이션이 현재 맺고 있는 커넥션에만 적용될 옵션을 지정해야 할 때가 있습니다.
여기서 Connection 헤더에는 3가지 종류의 토큰이 전달될 수 있습니다.
- HTTP 헤더 필드 명은 이 커넥션에만 해당되는 헤더들을 나열합니다.
- 임시적인 토큰 값은 커넥션에 대한 비표준 욥션을 의미합니다.
- close값은 커넥션이 작업이 완료되면 종료되어야 함을 의미합니다.
HTTP 메세지는 클라이언트에서 서버까지 중개 서버가 있다면 중개 서버들을 하나하나 거치면서 전달됩니다.
근데 여기서 중요한 점이 있습니다. 앞서 HTTP메세지는 중개서버들을 거치면서 전달된다고 했습니다.
하지만 커넥션 토큰이 HTTP 헤더 필드 명을 가지고 있으면, 해당 필드들은 현재 커넥션만을 위한 정보이므로 다음 커넥션에 전달되면 안되고, 다른곳으로 전달되는 시점에 헤더 필드는 삭제되어야 합니다.
그 이유는 Connection 헤더에는 홉별 헤더 명을 기술하는데, 이는 Connection 헤더에 명시된 헤더들이 전달되는 것을 방지하기 떄문입니다.
- 홉별 - 특정 두 서버 간에만 영향을 미치고 다른 서버간에는 영향을 미치지 않음을 뜻합니다.
즉, 홉별 헤더 명을 기술하였기 때문에, 다음 홉(서버)에 메시지를 전달하기 전에 Connection헤더와 Connection헤더에 기술되어 있던 모든 헤더를 삭제해야합니다.
순차적인 트랜잭션 처리에 의한 지연
트랜잭션을 순차적으로 처리한다면 커넥션 또한 순차적으로 맺어지기 떄문에 커넥션을 맺는데 발생하는 지연과 함께 느린 시작 지연이 발생할 것 입니다.
예를 들어서 브라우저를 보여준다고 가정해보겠습니다. 트랜잭션 1개는 HTML을 받기 위한 트랜잭션이고, 나머지는 이미지를 받는 트랜잭션이라고 가정해보겠습니다.
그럼 HTML이 처리되고 이미지 1,2,3이 순차적으로 처리 될 것입니다.
이로 인해 페이지 로딩이 느리고 사용자는 불편하게 느낄 수 있습니다.
이러한 HTTL 커넥션의 성능을 향상시킬 수 있는 기술을 여럿 존재합니다.
다음 포스터에서는 이러한 기술에 대해 다뤄보겠습니다.