Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

웹개발

이제 웹 기반 응용개발 지식은 거의 필수적으로 요구되는 시대입니다. 구체적인 웹 사이트 개발은 아니더라도 거시적인 웹 기반 서비스에 대한 지식 배양을 위해 할 것이 참 많네요 ^^

[HTTP 프로토콜] Stateless

작성자 : 박종명
최초 작성일 : 2008-05-07 (수요일)
최종 수정일 : 2008-05-07 (수요일)
조회 수 : 5526

* HTTP 특성
HTTP 1.1 과 이전 버전의 동작 원리는 약간의 차이가 있습니다.여기서는 현재 많이 사용되고 있는 HTTP 1.1을 기준으로 작성하였습니다. 이전 버전과 다른 점은 간략히 언급하도록 하겠습니다

- 비 연결 지향 -
HTTP 는 인터넷 상에서 불특정 다수의 통신 환경을 기반으로 설계 되었습니다. 따라서 서버에서 다수의 연결을 유지 하는 리소스 낭비를 방지 하기 하고 더 많은 연결을 위해 비 연결 지향으로 설계 되었습니다. 즉, HTTP 요청이 있으면 서버는 그 요청에 대한 응답 후 바로 TCP 연결을 해제하는 구조 입니다. 동일한 클라이언트의 다음 요청은 다시 서버와 TCP 연결을 시도하는 구조입니다. 이러한 특징은 수 많은 클라이언트의 연결을 수용할 수 있게 하며 이것은 곧 웹의 특징을 그대로 반영한 것입니다. 웹 환경은 불특정 다수의 사용자가 접근하여 사용하기 때문에 많은 사용자의 Connection 을 유지 하는 것은 서버의 입장에서는 상당한 자원 사용을 초래 합니다. 심지어 HTTP 1.1 이전 버전에서는 하나의 파일에 이미지가 포함되어 있다면 그 이미지 수만큼 새로운 연결을 하는 구조였습니다

- 비 연결 지향의 문제점 -
이런 비 연결 특성은 몇 가지 문제를 야기 시켜왔습니다. 동일한 클라이언트의 모든 요청에 매번 새로운 연결시도/해제의 과정을 거쳐야 하기 때문에 연결/해제에 대한 오버헤드가 발생합니다. 연결을 유지하는데 필요한 비용은 줄었지만 새로운 연결을 생성하는 것에는 오히려 부담이 늘어난 것이지요. HTTP 1.1 에서는 이러한 연결 오버헤드를 방지 하기 위해 특정 시간 동안 연결유지하는 새로운 메커니즘이 등장하였습니다. 즉, 새로 HTTP 연결을 생성할 때 마다 발생되는 오버헤드를 줄이기 위해 HTTP 스택은 HTTP KeepAlive 를 이용하여 가능하면 오랫동안 서버와의 TCP 연결을 열어둔 상태로 놓아두게 됩니다. 클라이언트 또는 서버에 설정된 시간만큼 HTTP 는 서버와 연결을 유지 한 채로
그 시간 안의 새 요청은 기존의 연결을 사용하는 방식으로 개선 되었습니다. 물론 이것이 HTTP 의 기본 적인 비 연결성적인 특성을 완전히 변경 한 것은 아닙니다.

- Stateless -
또한 이와 같은 비 연결성은 상태를 가질 수 없는 문제점도 야기 시킵니다.비 연결적 특징으로 인해 서버는 클라이언트를 식별할 수 없는 문제가 발생합니다. 매번 새로운 요청을 하기 때문에 서버 입장에서는 매번 새로운 클라이언트로 밖에는 인식을 할 수 밖에 없습니다. 이런 문제점을 해결하기 위해 많은 방법들이 사용되어 지는데 대표적으로 쿠키,세션,Hidden Field,GET 요청의 파라메타 등을 사용합니다.

 

이름
비밀번호
홈페이지
OS <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요