세션(컴퓨터 과학)

Session (computer science)

특히 컴퓨터 과학 및 네트워킹에서 세션은 컴퓨터, 자동 시스템 또는 라이브 액티브 사용자(로그인 세션 참조)를 불문하고 2개 이상의 통신 장치 또는 엔드 간에 대화식 표현과 정보 교환을 가능하게 하는 tcp/ip 프로토콜 내의 실용적인(상대적으로 높은) 쌍방향 링크입니다.세션은 특정 시점에 확립된 후 나중에 종료됩니다.확립된 통신 세션은 각 방향으로 여러 메시지를 포함할 수 있습니다.세션은 일반적으로 스테이트풀합니다.즉, 적어도 1개의 통신 당사자가 현재 상태 정보를 보유하고 세션 이력에 관한 정보를 저장해야 통신이 응답에 의한 독립된 요구로 구성되어 있는 스테이트리스 통신과는 반대로 통신이 가능합니다.

확립된 세션은 connection 지향 통신을 실행하기 위한 기본 요건입니다.세션은 무접속 통신 모드에서 전송하기 위한 기본 단계이기도 합니다.단, 단방향 전송에서는 [1]세션이 정의되지 않습니다.

통신 전송은 애플리케이션 계층, 세션 계층 또는 OSI 모델전송 계층에서 프로토콜과 서비스의 일부로 구현될 수 있습니다.

정식 세션 레이어(예를 들어 UDP)를 구현하지 않거나 애플리케이션 레이어에서의 세션이 일반적으로 매우 짧은 경우(예를 들어 HTTP) 세션은 교환되는 데이터에 정의된 방법을 사용하여 상위 레벨의 프로그램에 의해 유지된다.예를 들어 브라우저와 리모트호스트 간의 HTTP 교환에는 고유 세션 ID와 같은 상태를 식별하는 HTTP 쿠키가 포함될 수 있습니다.이 경우 사용자의 기본 설정 또는 권한 수준에 대한 정보를 확인할 수 있습니다.

HTTP/1.0 은, 1 개의 Web/HTTP 세션중에 1 개의 요구와 응답만을 허가하는 것으로 간주되고 있습니다.HTTP/1.1 프로토콜 버전은 CGI(Common Gateway Interface)를 완료하여 웹 세션을 보다 쉽게 유지하고 HTTP 쿠키 및 파일 업로드를 지원함으로써 이를 개선했습니다.

대부분의 클라이언트-서버 세션은 단일 세션에 대한 단일 연결인 전송 계층에 의해 유지됩니다.그러나 Web/HTTP 세션의 각 트랜잭션 단계는 별도의 연결을 만듭니다.단계 간 세션 연속성을 유지하려면 세션 ID가 필요합니다.세션 ID는 동적 웹 페이지의 <A HREF> 또는 <FORM> 링크에 포함되어 CGI로 반환됩니다.CGI는 세션 ID를 사용하여 트랜잭션 단계 간의 세션 연속성을 보장합니다.1상당 1개의 접속의 장점은 저대역폭(모뎀) 접속에서 잘 동작한다는 것입니다.

소프트웨어 구현

TCP 세션은 일반적으로 하위 프로세스 및/또는 멀티스레딩사용하여 소프트웨어로 구현됩니다.여기서 컴퓨터가 세션을 확립하거나 세션에 참여할 때 새로운 프로세스 또는 스레드가 생성됩니다.HTTP 세션은 일반적으로 세션당1개의 스레드를 사용하여 구현되지 않고 각 세션의 상태에 대한 정보가 포함된 데이터베이스를 통해 구현됩니다.여러 프로세스 또는 스레드의 장점은 각 스레드는 자체 이력 및 캡슐화된 변수를 가진 인스턴스이기 때문에 소프트웨어의 복잡성이 완화된다는 것입니다.단점은 시스템리소스에 관한 오버헤드가 크고 시스템을 재부팅하면 세션이 중단될 수 있다는 점입니다.

클라이언트가 서버 클러스터 내의 임의의 서버에 접속할 수 있는 경우, 서버가 세션 상태를 유지해야 할 때 일관성 유지에 특별한 문제가 발생합니다.클라이언트는 세션 기간 동안 동일한 서버로 전송되거나 서버가 공유 파일 시스템 또는 데이터베이스를 통해 서버 측 세션 정보를 전송해야 합니다.그렇지 않으면 클라이언트는 세션을 시작한 서버와 다른 서버에 재접속할 수 있습니다.이것에 의해, 새로운 서버가 낡은 서버의 보존 상태에 액세스 할 수 없게 되었을 때에 문제가 발생합니다.

서버측 웹 세션

서버측 세션은 편리하고 효율적이지만 로드밸런싱/고가용성 시스템과 연계하여 처리하기가 어려워질 수 있으며 스토리지가 없는 임베디드형 시스템에서는 전혀 사용할 수 없습니다.로드 밸런싱 문제는 공유 스토리지를 사용하거나 클러스터 내의 각 클라이언트와 단일 서버 간에 강제 피어링을 적용함으로써 해결할 수 있지만, 이로 인해 시스템 효율성과 부하 분산이 저하될 수 있습니다.

대량 저장 없이 시스템에서 서버 측 세션을 사용하는 방법은 세션 데이터를 저장하기 위해 RAM의 일부를 예약하는 것입니다.이 방법은 클라이언트 수가 제한된 서버(예를 들어 라우터나 액세스포인트 등 여러 클라이언트에 대한 접근이 빈번하지 않거나 동시에 허용되지 않는 서버)에 적용할 수 있습니다.

클라이언트 측 웹 세션

클라이언트 측 세션은 쿠키와 암호화 기술을 사용하여 서버에 데이터를 많이 저장하지 않고 상태를 유지합니다.동적 웹 페이지를 표시할 때 서버는 현재 상태 데이터를 쿠키 형식으로 클라이언트(웹 브라우저)에 보냅니다.클라이언트는 cookie를 메모리 또는 디스크에 저장합니다.연속된 요구가 있을 때마다 클라이언트는 쿠키를 서버로 되돌리고 서버는 데이터를 사용하여 특정 클라이언트의 애플리케이션 상태를 "기억"하고 적절한 응답을 생성합니다.

이 메커니즘은 상황에 따라 적절하게 동작할 수 있지만 클라이언트에 저장된 데이터는 사용자 또는 클라이언트 컴퓨터에 액세스할 수 있는 소프트웨어에 의해 조작될 수 있습니다.기밀성과 무결성이 필요한 클라이언트 측 세션을 사용하려면 다음 사항을 보장해야 합니다.

  1. 기밀성:서버 이외의 어떤 것도 세션 데이터를 해석할 수 없습니다.
  2. 데이터 무결성:서버 이외의 어떤 것도 세션 데이터를 조작해서는 안 됩니다(우발적 또는 악의적으로).
  3. 신뢰성:서버 이외의 어떤 것도 유효한 세션을 시작할 수 없습니다.

이를 위해서는 서버는 세션 데이터를 클라이언트에 전송하기 전에 암호화해야 하며 암호화 수단을 통해 다른 당사자에 의한 정보 변경을 방지해야 합니다.

모든 요청과 함께 상태를 주고받는 것은 쿠키 크기가 작을 때만 실용적입니다.기본적으로 클라이언트 측 세션은 서버 디스크 공간을 각 웹 요청에 필요한 추가 대역폭과 교환합니다.게다가, 웹 브라우저는 웹 사이트에 의해 저장될 수 있는 쿠키의 수와 크기를 제한한다.효율성을 향상시키고 더 많은 세션 데이터를 허용하기 위해 서버는 쿠키를 만들기 전에 데이터를 압축하고 나중에 클라이언트가 쿠키를 반환할 때 압축을 해제할 수 있습니다.

HTTP 세션토큰

세션 토큰은 현재 상호작용 세션을 식별하기 위해 서버에서 클라이언트로 생성 및 전송되는 고유 식별자입니다.클라이언트는 보통 토큰을 HTTP 쿠키로 저장 및 전송하거나 GET 쿼리 또는 POST 쿼리에서 파라미터로 전송합니다.세션 토큰을 사용하는 이유는 클라이언트가 ID만 처리할 필요가 있기 때문입니다.모든 세션 데이터는 해당 ID에 링크된 서버(일반적으로 클라이언트가 직접 액세스할 수 없는 데이터베이스)에 저장됩니다.일부 프로그래밍 언어가 HTTP cookie 이름을 지정할 때 사용하는 이름의 예로는 JSESSIONID(JSP), PHPESSID(PHP), CGISESSID(CGI), ASPSESSIOD(ASP) 등이 있습니다.

세션 관리

인간과 컴퓨터상호작용에서 세션 관리는 컴퓨터 시스템과의 상호작용 세션에 걸쳐 사용자의 활동을 추적하는 프로세스입니다.

데스크톱 환경의 일반적인 세션 관리 태스크에는 열려 있는 응용 프로그램과 각 응용 프로그램이 열려 있는 문서를 추적하여 사용자가 로그아웃하고 나중에 로그인할 때 동일한 상태를 복원할 수 있도록 하는 작업이 포함됩니다.웹 사이트의 경우 세션 관리에는 세션이 만료된 경우(즉, 사용자 액티비티 없이 특정 시간 제한이 경과한 경우) 사용자에게 재로그인을 요구할 수 있습니다.또한 HTTP 요청 간의 서버 측 정보 저장에도 사용됩니다.

데스크톱 세션 관리

데스크톱 세션 관리자는 데스크톱 세션을 저장하고 복원할 수 있는 프로그램입니다.데스크톱 세션은 현재 실행 중인 모든 창과 현재 컨텐츠입니다.Linux 기반 시스템의 세션 관리는 X 세션 매니저에 의해 제공됩니다.Microsoft Windows 시스템에서는 세션 관리가 Session Manager 서브시스템(smss.exe)에 의해 제공됩니다.사용자 세션 기능은 트윈 플레이 등의 서드파티 어플리케이션에 의해 확장될 수 있습니다.

브라우저 세션 관리

세션 관리는 사용자가 열려 있는 모든 페이지와 설정을 저장하고 나중에 또는 다른 컴퓨터에 복원할 수 있는 웹 브라우저에서 특히 유용합니다(데이터 이식성 참조).

시스템 또는 응용 프로그램 충돌로부터 복구하기 위해 다음 실행 시 페이지 및 설정을 복원할 수도 있습니다.Google Chrome, Mozilla Firefox, Internet Explorer, OmniWeb Opera는 세션 관리를 지원하는 웹 브라우저의 예입니다.세션 관리는 많은 경우 쿠키 응용 프로그램을 통해 관리됩니다.

웹 서버 세션 관리

HTTP(Hypertext Transfer Protocol)는 스테이트리스입니다.웹 브라우저를 실행하고 있는 클라이언트컴퓨터는 새로운 HTTP GET 또는 POST 요청마다 새로운 Transmission Control Protocol(TCP) 네트워크 연결을 웹 서버에 설정해야 합니다.따라서 웹 서버는 확립된TCP 네트워크 접속에 1회 이상의 HTTP GET 또는 POST 조작을 의존할 수 없습니다.세션 관리는 웹 개발자가 상태 비저장 HTTP 프로토콜 지원 세션 상태를 만들기 위해 사용하는 기술입니다.예를 들어 사용자가 웹 서버에 대해 인증되면 사용자의 다음 HTTP 요청(GET 또는 POST)으로 인해 웹 서버가 사용자의 계정과 비밀번호를 다시 요청하지 않습니다.이를 위해 사용되는 방법에 대한 자세한 내용은 HTTP cookie 및 Session ID를 참조하십시오.

여러 웹 서버가 (클러스터 환경에서 일반적으로 그렇듯이) 세션 상태에 대한 지식을 공유해야 하는 상황에서는 웹 서버 소프트웨어를 실행하는 클러스터 노드 간에 세션 정보를 공유해야 합니다.클러스터 내의 노드 간에 세션스테이트를 공유하는 방법에는 멤버노드로 세션 정보를 멀티캐스팅하는 방법(이 기술의 예에 대해서는 JGroups 참조), 분산 공유 메모리 또는 메모리 가상화를 사용한 파트너 노드와의 세션 정보 공유, 네트워크 소켓을 사용한 노드 간 세션 정보 공유, 저장 등이 있습니다.분산 파일 시스템이나 글로벌 파일 시스템 등의 공유 파일 시스템상의 sion 정보 또는 데이터베이스 의 세션 정보를 저장합니다.

세션 정보가 트랜잭션 거부 방지를 위해 필요하지 않고 컴플라이언스 감사 대상이 되는 데이터가 포함되지 않은 일시적인 휘발성 데이터로 간주되는 경우(예를 들어 미국에서는 의료보험의 이식성과 설명 책임법Sarbanes 참조).컴플라이언스 감사를 필요로 하는 2가지 법률의 예에 대해서는 Oxley Act를 사용하여 세션 정보를 저장할 수 있습니다.단, 세션 정보가 감사에 준거한 경우 세션 저장, 복제 및 클러스터링에 사용되는 방법을 고려해야 합니다.

서비스 지향 아키텍처에서는 Extensible Markup Language(XML) 메시지로 구성된 Simple Object Access Protocol 또는 SOAP 메시지를 소비자 응용 프로그램에서 사용하여 웹 서버가 세션을 생성할 수 있습니다.

SMS를 통한 세션 관리

HTTP가 상태 비저장 프로토콜인 것처럼 SMS도 1999년[2]경쟁 네트워크 간에 상호 운용이 가능해졌고 문자메시지가 유비쿼터스 글로벌 [3]통신 형태가 되면서 다양한 기업들이 SMS 채널을 상업적 목적으로 사용하는 것에 관심을 갖게 되었다.초기 서비스는 단방향 통신이었기 때문에 세션 관리가 필요하지 않았습니다(예를 들어 2000년에 핀란드에서 최초의 모바일 뉴스 서비스가 SMS를 통해 제공되었습니다).현재 이러한 애플리케이션은 P2P(Peer-to-peer) 메시징과는 다른 Application-to-Peer(A2P) 메시징이라고 불립니다.인터랙티브 엔터프라이즈 애플리케이션의 개발은 세션 관리가 필요했지만, SMS는 GSM [4]표준에 의해 정의된 상태 비저장 프로토콜이기 때문에, 초기 구현은 최종 사용자가 명령어와 서비스 식별자를 수동으로 입력하도록 함으로써 클라이언트 에서 제어되었습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ 세션 없는 프로토콜 및 세션 지향 프로토콜
  2. ^ InterCarrier Messaging Guidelines (PDF), CTIA, retrieved 2018-06-02
  3. ^ Hppy bthdy txt!BBC News World Edition, http://news.bbc.co.uk/2/hi/uk_news/2538083.stm 2002년 12월 3일
  4. ^ GSM Doc 28/85 "GSM 시스템에서 제공될 서비스와 시설" rev2, 1985년 6월

외부 링크