2009/10/22 14:35 Operating System/Windows
크리에이티브 커먼즈 라이선스
Creative Commons License

 

세상에는 배워야 할 것도 많고, 알아야 할 것도 많고, 몰라서는 안되는 것도 많고....

 

공부의 끝은 없다라는 말... ㅡ_-;;

언제 한번 공부가 이기나 내가 이기나 해봐야겠다!!!! ㅡ_-;;

(아.. 똘끼 또 발동??) 참자... 요새 나이 먹더니 힘들다 케켁!!

 

 

Mstsc
Updated: September 28, 2007

Creates connections to terminal servers or other remote computers, edits an existing Remote Desktop Connection (.rdp) configuration file, and migrates legacy connection files that were created with Client Connection Manager to new .rdp connection files.

 

Syntax

 

mstsc.exe [<Connection File>] [/v:<Server>[:<Port>]] [/admin] [/f] [/w:<Width> /h:<Height>] [/public] [/span]

 

mstsc.exe /edit <Connection File>

mstsc.exe /migrate

 

뭐 그닥 중요한 이야기는 없습니다. 실은 제가 원했던 자료는 이런게 아닌데, 제가 찾고 싶은 자료를 찾으려면 시간이 좀 걸릴듯 하네요. 오늘 밤도 늦었으니 일단 여기까지만 적겠습니다.

 

terminal session 관련되서 정보를 좀 찾고 싶은데 많이 피곤하네요^-^

 

cmd창에서 "mstsc /?" 을 입력하면 다음 그림과 같은 화면을 볼 수 있습니다.

 

 

 

다시 mstsc session으로 검색을 하였습니다.

저랑 같은 궁금증 가진 사람들이 많군요^-^

 

http://ms-os.com/windows-nt-server/214349-differance-between-mstsc-console-and-mstsc-session.html


When you connect to the /console session, you will take over the console
session. Meaning, you could log into the physical console of the server and see the same thing you saw remotely -
you could leave something running and it would still be there when you connected from the other means.

 

This may help: http://support.microsoft.com/kb/278845

 


여기 또 다른 답변도 있습니다. 설명을 좀 더 쉽게 해놓은 듯 하군요.

 

mstsc /console is used to connect to the "console session (session 0)" on
the server whereas mstsc will give you a "new session" on the server.

mstsc /console is generally used for administrative purposes.

Here are some links that you might find useful
1.
http://support.microsoft.com/kb/278845

2. http://technet.microsoft.com/en-us/l.../cc740144.aspx

 

 

팁으로 다른 사람이 옵션 /console과 /admin에 대해서 이야기 하고 있네요.

rdp client 6.1 버전부터 /console대신 /admin을 사용해야겠군요. 혹시 버전을 잘 모르시면 mstsc /? 을 쳐보면은 알 수 있다고 하네요. 제가 캡쳐한 그림을 보면은 /console은 없고 /admin에 대한 설명이 있는 것을 보니 rdp client 6.1인가보네요.

 

All the previous answers to your question (by Kaushal Mehta, jolteroli and Lanwench) are valid, but they only apply when you use the 5.x version of the rdp client (mstsc.exe). If you are using rdp client 6.1, then the /console flag is not supported anymore and it is silently ignored when used. The rdp 6.1 client uses the /admin flag instead.

 

Documented here:

947723 - Changes to remote administration in Windows Server 2008
http://support.microsoft.com/?kbid=947723

 

Tip: start a command window and type mstsc /? to see which flag is
valid for your version of the rdp client.

 

 

이것은 제가 확인 하지 못해서 뭐라 설명드리기가 ^-^

일단 적어두겠습니다. 다른 팁이네요.

By default, only user accounts that are part of administrators group have access to 'console' sessions. The following connections/winstations settings are not available in 'console' sessions (please refer to tscc.msc for win2k3 and earlier or tsconfig.msc for win2k8 and later):


Environment
General
Logon
NetworkAdapter
Sessions
Client

Also disable/enable/rename the 'console' connections/winstations are not
supported.

 

 

 

 

 

posted by 조금까칠한남자
2009/07/28 15:17 Voice Portal/WAS
크리에이티브 커먼즈 라이선스
Creative Commons License

흠... 예전부터 알고 싶었던 httpsession에 대한 이해.
예전에 httpsession관련 공부를 나름 인터넷을 검색하면서 했는데... 솔직히 이해하기 힘들었습니다....
대략의 내용은 이해하겠지만...httpsession관련 코딩을 하려면... 으..... 쉽지 않습니다...
지금도 이해하지 못하고 헤매고 있음 ㅠ_-

회사에서 교육 좀 보내주지 ㅠ_-
고급인력에게 이정도 투자는 해야 하지 않겠어?? 엉?? ㅋㅋㅋㅋ
나 요새 막나가고 있음... 내 입으로 고급인력 이러네 ㅋㅋㅋㅋ

암튼 제가 가장 해보고 싶은 것은 WAS에 존재하고 있는 session의 갯수 체크와 session id등등 간단한 정보 몇개만 얻어오면 되는데;;;
Lambda probe같은 유틸 만들고 싶은데 ㅠ_-

암튼 오늘도 검색! 검색! 또 검색이다.

http://gogh914.tistory.com/64

HttpSession 클래스에 알아보기 전에 우선 Session이란 개념부터 설명해야 겠다. Session이란 어떤 중요한 동작이 진행중에 있는 상태를 나타낸다
고 생각하면 좋겠다. 그러니까, HTTP에 대한 어떤 연속된 관찰이라고 이해할 수 있다. 그런데, 왜 HTTP에 이런 연속된 관찰같은 개념이 필요한 것일까? 여기에는 이유가 있다. HTTP의 특성상 연속된 연결은 존재할 수 없다. HTTP는 한 번 웹서버에 접속했다가 데이터로딩이 끝나면 곧바로 연결을 끊어버린다. 즉, 연속성이 없는 것이다. 이런 개념은 부족한 network bandwidth를 효율적으로 사용하는 길이지만 웹비비에스등의 서비스에서의 사용자체크같은 문제를 야기시키게 된다.

물론, 앞서 배운 Cookie를 사용하면 사용자인증을 그럴듯하게 만들 수 있지만 Cookie를 이용한 이용자인증은 관리의 책임이 모두 프로그래머에게 떠넘겨진다는 한계 때문에 완벽한 대응책은 되질 못했다. 그래서, Servlet에서는 HttpSession이라는 개념으로 이런 한계를 뛰어넘는데 Servlet에서는 다음과 같은 개념을 사용한다. 즉, 하나의 사용자는 언제나 같은 컴퓨터에서 접속을 해온다는 사실을 이용한 것이다. 사용자는 여러 컴퓨터를 돌아가면서 같은 싸이트에 접속하지는 않기 때문에 서비스를 제공하는 측에서는 접속자의 정보를 체크해서 동일한 접속클라이언트인지 아닌지를 체크할 수 있다. 접속자의 정보로는 Cookie를 사용한다. 이렇게 함으로써 Cookie를 직접 이용하는 것 보다 더 효과적인 Client관리가 이루어질 수 있다.

 

으응...

http://gogh914.tistory.com/64

HttpSession객체를 얻으려면 HttpServletRequest 객체의 getSession(boolean) 메소드를 사용한다는 사실을 알 수 있다. 여기서 인자로 주는 boolean 값은 Session을 새로 만들건지 아닌지를 결정한다. true 일때는 기존에 존재하는 Session을 지우고 새로운 Session을 만들라는 뜻이며, false는 유지되고 있는 Session을 그대로 사용하겠다는 의미이다. 맨 처음 접속했을때는 HttpSession이 없는 상태이므로 보통 true를 넣어서 많이 쓴다. 이미 HttpSession이 존재하는 경우에는 true값을 넣었더라도 기존 HttpSession객체를 돌려준다. 새로 만든 것인지 아닌지는 isNew()메소드를 통해서 확인할 수 있다. 그렇다면 false는 어떨 때 쓰는걸까? 사실,
Session은 30분마다 자동으로 갱신된다. 즉, 이미 Session이 만들어져서 관리되고 있다고 하더라도 30분 이내에 다른 접속을 해오지 않으면 또다른 Session이 만들어진다는 뜻이다. 이렇게 되더라도 기존의 Session은 그대로 남게 되는데, 이때 getSession(false)를 이용한다. 자동갱신되는 시간은 자바웹서버에서는 세팅할 수 있지만, JSDK 2.0에서는 세팅을 할 수 없다. 이렇게 얻은 HttpSession객체를 가지고 할 수 있는 일이 많이 있다. 우선 HttpSession이 언제 만들어졌는지도 알 수 있고 HttpSession에 있는 Properties객체를 이용해서 정보를 저장시킬 수도 있다. 예를 들어 어떤 클라이언트가 서버에 접근한 카운터를 알고 싶다면 Client의 접근이 있을때마다 HttpSession 내부에 관리되고 있는 Properties 객체에 저장시키면 일은 간단하다. 이 Properties 객체에는 처음에는 아무것도 저장되어 있지 않다. 프로그래머의 편의를 위해서 만들어 놓은 객체이기 때문이다. 그래서 이 소스에서는 우선 "counter"라는 이름을 먼저 설정해둔다. HttpSession객체를 얻어와서 맨 먼저 "counter"의 값을 조사해보고 값이 없으면 putValue("counter", new Integer(1)) 으로 세팅해둔다. 값이 있으면 이 값을 하나 증가시켜서 사용하면 된다. 이 값은 HttpSession이 유지되는 동안에는 계속 사용할 수 있으므로 다른 용도로 얼마든지 사용가능하다. 그리고, HttpSession객체에는 HttpSessionContext객체가 포함되어 있어서 모든 HttpSession객체가 이 객체를 사용하는데, HttpSessionContext객체를 이용해서 다른 HttpSessoin은 어떤 것들이 있는지도 체크할 수 있다.

HttpSession으로는 접속되어온 클라이언트의 정보를 알 수는 없지만, 이 역시 HttpSession의 Properties객체로 정보를 넣어두면 다른 HttpSession에서 사용할 수 있으므로 가능한 일이다.

내가 원하는 정보를 HttpSessionContext로 알 수 있을듯 ^0^b

 


검색을 하던 도중에 Session Tracking에 대해서 이야기하고 있는 사이트 발견!!
http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-Session-Tracking.html
대략 내용을 봤는데 이거 좀 응용하면 뭔가 될듯 :")

1. What is Session Tracking?
There are a number of problems that arise from the fact that HTTP is a "stateless" protocol. In particular, when you are doing on-line shopping, it is a real annoyance that the Web server can't easily remember previous transactions. This makes applications like shopping carts very problematic: when you add an entry to your cart, how does the server know what's already in your cart? Even if servers did retain contextual information, you'd still have problems with e-commerce. When you move from the page where you specify what you want to buy (hosted on the regular Web server) to the page that takes your credit card number and shipping address (hosted on the secure server that uses SSL), how does the server remember what you were buying?

There are three typical solutions to this problem.
1. Cookies
2. URL Rewriting
3. Hidden form field


HTTP의 특성인 stateless connection가 가져다 주는 몇가지 문제점을 on-line shopping의 예를 들면서 이야기 하고 있다. 그리고 이를 해결하기 위한 3가지 solutions에 대해 이야기 하고 있음. 자세한 내용은 링크를 통해서 확인해보세요.

 

계속 읽다가 보면은 아래와 같은 내용이 나옵니다.

Although the data that was explicitly associated with a session is the part you care most about, there are some other pieces of information that are sometimes useful as well.

    * getId. This method returns the unique identifier generated for each session. It is sometimes used as the key name when there is only a single value associated with a session, or when logging information about previous sessions.
    * isNew. This returns true if the client (browser) has never seen the session, usually because it was just created rather than being referenced by an incoming client request. It returns false for preexisting sessions.
    * getCreationTime. This returns the time, in milliseconds since the epoch, at which the session was made. To get a value useful for printing out, pass the value to the Date constructor or the setTimeInMillis method of GregorianCalendar.
    * getLastAccessedTime. This returns the time, in milliseconds since the epoch, at which the session was last sent from the client.
    * getMaxInactiveInterval. This returns the amount of time, in seconds, that a session should go without access before being automatically invalidated. A negative value indicates that the session should never timeout.



메소드의 이름을 보면은 Probe에서 보여주는 내용들과 비슷하군요 :")


3. Example: Showing Session Information
Here is a simple example that generates a Web page showing some information about the current session. You can also download the source or try it on-line.

package hall;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.net.*;
import java.util.*;

/** Simple example of session tracking. See the shopping
 *  cart example for a more detailed one.
 *  <P>
 *  Part of tutorial on servlets and JSP that appears at
 * 
http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/
 *  1999 Marty Hall; may be freely used or adapted.
 */

public class ShowSession extends HttpServlet {
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
      throws ServletException, IOException {
     Integer accessCount = new Integer(0);
    HttpSession session = req.getSession(true);
    String heading=null;
    if(session.isNew()){
        heading="Welcome, Newcomer";
    }else{
        heading = "Welcome back";
        Integer oldAccessCount = (Integer)session.getAttribute("accessCount");
         if (oldAccessCount != null) {
            accessCount =
              new Integer(oldAccessCount.intValue() + 1);
          }
    }
    session.setAttribute("accessCount", accessCount);
    PrintWriter out;
    res.setContentType("text/html; charset=EUC-KR");
        out = res.getWriter ();     
        out.println("<html>");
        out.println("<head><title>Request 정보 출력 Servlet</title></head>");
        out.println("<body>");
        out.println("<h1>요청 정보 출력</h1>");
        out.println("<pre>");

        out.println("----- Session Information ----------");
        out.println("Session ID : " + session.getId());
        out.println("Creation Time : " + new Date(session.getCreationTime()));
        out.println("Time of Last Access : " + new Date(session.getLastAccessedTime()));
        out.println("Number of Previous Accesses : " + accessCount);
        out.println("</pre>");
        out.println("</body></html>");

  }

  public void doPost(HttpServletRequest request,
                     HttpServletResponse response)
      throws ServletException, IOException {
    doGet(request, response);
  }
}


 

일단 제가 찾고자 했던 정보이므로 포스팅 해두었습니다. 본사 들어가면 다시 웹 공부 좀 하면서 테스트를 해봐야 할것 같습니다. was에 있는 모든 session id를 가져오는 방법을 공부해봐야겠습니다.

혹시 아시는 분 댓글 좀 부탁드립니다. :")

posted by 조금까칠한남자
2009/07/27 15:58 Voice Portal/WAS
크리에이티브 커먼즈 라이선스
Creative Commons License

tomcat의 세션관련 정보를 검색하던 중 "끊기지 않는 세션"에 대해서 간략히 다룬 블로그를 방문하게 되었습니다. 세션을 백업해야하는 이유를 설명했주었다면 더 좋았을 텐데 :") 저 같은 초보자들은 궁금합니다~:")

제가 나중에 검색하다가 찾게 되면 추가 포스팅 하겠습니다.

http://blog.naver.com/ikos/20031328523

Tomcat 4.1 부터 지원하는 기능입니다.
Tomcat 서버를 재시동하거나 심지어 컴퓨터를 껐다 켜도 기존의 세션이 백업이 되는 기능입니다.
일정시간 사용되지 않는 세션은 하드에 저장되어서 메모리를 차지하지 않게 됩니다. 그러다 다시 그 세션의 요청이 들어오면 복원되어서 사용이 됩니다.
톰캣을 셧다운할 때에 현재 있는 모든 세션이 저장됩니다.

%TOMCAT_HOME%\conf 디렉토리

server.xml 의 <Manager> 엘리먼트를 통해서 이에대한 세팅을 기호에 맞게(?) 변경할 수 있습니다.
좋은 기능입니다.

<!--
          <Manager className="org.apache.catalina.session.PersistentManager"
              debug="0"
              saveOnRestart="true"
              maxActiveSessions="-1"
              minIdleSwap="-1"
              maxIdleSwap="-1"
              maxIdleBackup="-1">
                <Store className="org.apache.catalina.session.FileStore"/>
          </Manager>
    -->


saveOnRestart="true" 유지
saveOnRestart="false" 유지하지 않음


그래서 일단 테스트를 한번 해봤습니다.

일단 위와 같이 설정을 해두고 session 요청했습니다. 요청이라니까 좀 이상한데 암튼 sesison을 만들었습니다. 그리고 tomcat을 shutdown하고, startup했습니다.

 

와우... 정말 session이 살아 있네요 :")

이거 포스팅 하기 전에 session을 kill하려고 restart를 했을 때는, session이 다 죽었었거든요 :")


 

언제인가 써먹을 일이 있겠죠 :")

 

후덜덜;; 그런데;;

위 설정이 저에게 필요가 없어서 관련 정보를 삭제하고 tomcat을 restart했는데;;;

여전히 살아있네요;; 직접 expired를 해주거나... 컴퓨터 reboot을 해야지 없어지는 것 같습니다.

 

강제로 expired 시켜야 tomcat을 restart했을 때,  아래와 같이나오는 군요;;

 

웁스;; 실서버에 이거 사용하면 난리 날듯;;;

꼭 필요할 때가 아니면 사용을 자제 해야 할듯;;;

'Voice Portal > WAS' 카테고리의 다른 글

[jsp/servlet] httpsession의 이해.  (2) 2009/07/28
[tomcat] Lambda tomcat 모니터링 툴  (0) 2009/07/27
[tomcat] Persistent Session Manager - 끊기지 않는 세션  (0) 2009/07/27
tomcat 6.0 설정  (0) 2009/03/18
What is Web service?  (0) 2009/01/08
[log4j] log4j:ERROR  (0) 2008/12/09
posted by 조금까칠한남자
2009/06/11 00:35 Operating System/Windows
크리에이티브 커먼즈 라이선스
Creative Commons License

 

여기 지대로 설명이 되어 있네요. 조금 읽다가 말았는데. 지금 다른 일이 생겨서 일단 링크만 해둡니다.

http://blogs.technet.com/askperf/archive/2007/07/24/sessions-desktops-and-windows-stations.aspx

 

 

다음 날 읽으면서 정리를...

그런데 이거 한두번 읽고는 이해가 잘 안가네요^^ 여러번 읽어야 할 것 같습니다.

간단히 mstsc만 공부하려고 했는데... 점점 깊게 들어가네요.

이해가 가는 부분만 먼저 정리를 해야겠습니다.

몇 번 읽었는데 저는 쉽게 이해가 가지 않습니다.

 

Sessions, Desktops and Windows Stations

 

A session consists of all of the processes and other system objects that represent a single user’s logon session.  These objects include all windows, desktops and windows stations.  A desktop is a session-specific paged pool area and loads in the kernel memory space.  This area is where session-private GUI objects are allocated from.  A windows station is basically a security boundary to contain desktops and processes.  So, a session may contain more than one Windows Station and each windows station can have multiple desktops.

 

제가 생각하고 있는 desktop과 windows가 잘못된건지... 하핫 이해하기가 어렵네요^0^

 

 

Only one windows station is permitted to interact with the user at the console; this is called Winsta0. Under Winsta0 there are three desktops loaded: Winlogon (the logon screen), Default (the user desktop) and Disconnect.  All three of these have separate logical displays, which is why your main desktop disappears if you lock the workstation.  When you lock the workstation, the display switches from Default to Winlogon and there is no user interaction between the two.  In Windows Vista this is even a bit more extreme.  When you get a UAC prompt for instance, it takes a screenshot of your Default desktop and then displays it dimmed out behind the UAC window in the foreground.  The UAC window is part of the Secure Desktop (new for Vista and similar to the logon desktop) and will not allow you to interact with the Default desktop until you provide input.

Other windows stations exist that do not interact with the user.  For example, services load under the ‘Service-0x0-3e7$’ non-interactive windows station. The exceptions to this are services that need to interact with the console user, so these load into Winsta0 instead.

 

Winlogon이 저에게는 생소한 단어라... Wikipedia에서 찾아봤습니다.

Winlogon을 이해하니까 위 설명이 조금 더 쉬워지네요. 먼저 Winlogon에 대해서 읽어보시는 것도 위 글을 이해하는데 도움이 많이 될 것 같습니다.

http://en.wikipedia.org/wiki/Winlogon

In computing, Winlogon is the component of Microsoft Windows operating systems that is responsible for handling the secure attention sequence, loading the user profile on logon, and optionally locking the computer when a screensaver is running (requiring another authentication step).

 

 

All pages mapped to a specific user use the same memory pages, but each user has their own session space mapped in virtual memory. Session space is divided into four different areas:

 

Session Structure : Memory management control structures including session Working Set List.
Session Image Space : holds a private copy of Win32k.sys modified data, a single copy of Win32k.sys code and unmodified data and various session drivers.
Session View Space : session mapped views including desktop heap
Session Paged Pool : paged pool memory used for this session

 

이런 정보는 도대체 어디서 얻는 것인지.. 대단하다고 느껴지네요.


 

벌써 시간이... 곧 있으면 차가 끊길지도 ㅠㅜ

집에서 샤워하고 마저 정리 해야겠네요.

으~ 밑에 내용이 궁금해지는 군요.

 

As mentioned above, a desktop is an object under which a logical display surface loads.  This contains windows, menus and hooks. Session 0 is the base session where services run and is typically also the console session.  In Windows Vista this has been changed to exclusively run services, and the console session is typically Session 1.  The diagrams below show the relationships between sessions, windows stations, desktops and services in Windows Vista as compared to earlier operating systems (this is from our earlier post on Session 0 Application Compatibility Issues)

 

 

 

 

 

So now let's dig a little deeper using an example.  In the diagram below, we are looking at Session 0 with a user logged in named Bob.  As you can see, Winsta0 contains both processes from the user console session as well as any service that is marked as Interactive.  In this case, that includes Winlogon.exe, Explorer.exe and others that need to interact with the user.  The Service-0x0-3e7$ windows station owns any service that loads under Local System and is non-interactive.  In this case I have shown Services.exe.  As you can see by the connecting bars, it is possible for processes from different virtual sessions to load into a single windows station.  The SQL process loads under its own windows station and credentials, so it is not included in either of the other windows stations.

 

 

So, to reiterate what is going on in the diagram above:

The whole diagram is Session 0.
Processes that start under the Bob account all load in Winsta0.
Interactive processes that start under Local System load in Winsta0
Non-interactive processes that start under Local System load in the Service-0x0-3e7% windows station
Processes that start under their own credentials start in their own windows station (like SQL)

 

그림과 함께 설명을 해주니까 이해하기가 더 쉽네요.

하지만 아직 확실히 이해를 한 것은 아니기 때문에, 몇 번 더 읽어보고 정리를 해야 할 것 같습니다.

 

아우... 또 읽었는데도 어렵네요 ㅎ

 

posted by 조금까칠한남자
2009/01/06 10:44 Voice Portal/Network
크리에이티브 커먼즈 라이선스
Creative Commons License
아래 내용은 SIP 세미나를 위해 찾았던 자료를 정리한 것입니다.


SIP 소개
- http://blog.naver.com/blow1/150003192676
SIP/SDP
- http://blog.naver.com/blow1/150026889877
SIP 응답 메세지
- http://blog.naver.com/blow1/150032662135

SIP의 기능 개요
- 통신하고자 하는 측의 end system의 결정
- 통신에 참여할 것에 대한 결정
- 통신에 사용되는 미디어와 미디어 파라미터 결정
- 통신하고자 하는 양측에서 세션 파라미터의 결정
- 세션의 전달 및 종료, 세션 파라미터의 수정

RFC3261에서는 사용자에 대한 인증은 HTTP digest인증방법을 사용하며,
End-to-End 메시지 암호화 방법은 e-mail 보안을 위한 S/MIME을 선택하고 있다.
HTTP 인증 이해
S/MIME 이란

SIP 관련 용어
Dialog : 일정시간 동안 유지되는 두 UA간에 Peer-to-Peer SIP관계
Transaction : UAC가 request message를 보내고 UAS가 이를 받아 response를 보내는 일련의 과정(즉, client가 server로 처음 보내는 request부터, server가 client에게 마지막으로 보내는 response까지)

SIP 통신



SIP Request Message
INVITE - 클라이언트와 서버간에 콜을 성립하는 가장 기본적인 method. 이 때 Media Type, Media Port정보를 Message에 포함시킨다.
ACK - INVITE의 RESPONSE 메시지
BYE - 호 종료
CANCEL - 호 성립 취소
OPTION - UA에게 "가능한 옵션)을 요청합니다. 예를 들면, 해당 에이전트가 이해하는 메시지와 코덱 정보)
REGISTER - 사용자가 Contact Header에 위치 정보를 기입하고, Expire Time을 이용하여 위치를 Update, Delete, Add를 할 때 사용
INFO - UA에 의해서 호 시그널 링 정보를 미디어 세션이 설립된 다른 UA에게 보낼 때 사용


Multiple media list
http://blog.naver.com/ardor78?Redirect=Log&logNo=110007410738

RTP payload type
http://dorigom.springnote.com/pages/643594

SDP
Session Description
v= (protocol version)
o= (owner/creator and session identifier)
s= (session name)
i=* (session information)
u=* (URI of description)
e=* (email address)
p=* (phone number)
c=* (connection information)
b=* (bandwidth information)
z=* (time zone adjustments)
k=* (encryption key)
a=* (zero or more session attribute lines)

Time description
t= (time the session is active)
r=* (zero or more repeat times)

Media description
m= (media name and transport address)
i=* (media title)

SDP time field
v=0
o=alice 2345566342 2346553445 IN IP4 pc33.atlanta.com
s=
c=IN IP4 pc33.atlanta.com
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000

- "fmtp"는 format-specific parameters를 의미하는데 이것은 캐릭터들이 SDP가 이해하지 못하는 방향(그러나 미디어 포맷에 분명히 나타나는, it's is specific to RPT)으로 전달 될 수 있음을 의미한다.

- "t="라인은 answer와 offer가 같아야만 한다. " t=0 0 "

time 필드를 0 0 으로 두는 것은 time 제한을 두지 않습니다. 협상 결과에 대한 유효 시간이 없으며, time을 지정하는 경우는 start time과 stop time 간의 time동안만 협상 결과가 유효하게 됩니다.

If the <stop-time> is set to zero, then the session is not bounded, though it will not become active until after the <start-time>.  If the <start-time> is also zero, the session is regarded as permanent.

telephone-event는 dynamic payload이기 때문에 media desc. 필드의 attribute가 명시된 것입니다. 말씀하신대로 DTMF 협상을 위해 표기한 것입니다.

posted by 조금까칠한남자
TAG sdp, SESSION, sip
2008/12/11 18:23 Voice Portal/Network
크리에이티브 커먼즈 라이선스
Creative Commons License
VoIP 기밀성과 무결성 제공이라는 제목을 달았지만 실제적으로 나와 보안은 상관이 없다.
단지 평소에 알고자 했던 그리고 알아야만 하는 TLS나 SRTP에 대한 이야기가 나와있기 때문에 그냥 끄적여 본다.

일단 VoIP 보안의 필요성에 대해서 알아보는 것이 좋겠다.
왜 VoIP 보안이 중요한가?

먼저 이 자료는
http://cafe.naver.com/asterisker에서 가져온 자료를 읽고 간략히 정리했음을 밝힙니다.

VoIP 기밀성과 무결성 제공
- VoIP 트래픽의 보호는 콜 성립과정과 미디어 트래픽 전송과정에서 보호가 필요하다.  그리고, 키의 원활한 공유 및 관리를 위한 키 관리 프로토콜이 필요하다.
- 시그널 트래픽, 미디어 트래픽, 키 교환을 위한 기본 구성이다.

- 시그널 트래픽의 기밀성과 무결성 제공하기 위해서는 UA <-> 프록시 <-> 프록시 <-> UA 간의 데이터의 암호화가 필요하다. 이를 위해 IPSec이나 TLS(Transport Layer Security)를 사용할 수 있다.
- 미디어 트래픽의 기밀성과 무결성을 제공하기 위해서는 UA <-> UA간의 암호화가 필요하다. 미디어 트래픽은 개인의 사생활에 대한 보호가 요구되므로, end to end의 암호화가 필요하다. 이를 위해 IPSec나 SRTP(Secure RTP)를 사용할 수 있다. 


'Voice Portal > Network' 카테고리의 다른 글

SRTP(Secure Real-Time Transport Protocol)  (0) 2008/12/15
TLS(Transport Layer Security Protocol)란  (0) 2008/12/15
VoIP 기밀성과 무결성 제공  (0) 2008/12/11
What is MIB(Management Information Base)?  (0) 2008/12/10
What is TLS?  (0) 2008/12/10
What is LDAP?  (0) 2008/12/10
posted by 조금까칠한남자
2008/12/05 17:47 Voice Portal/WAS
크리에이티브 커먼즈 라이선스
Creative Commons License
아래와 같은 exception이 발생하였다.
아래 box안의 내용들은 구글링을 통해서 얻은 정보들이다.
sessions.ser와 workDir에 대해 이해하는데 도움이 되었다.


타이틀:
[Axis2] FileNotFoundException (SESSIONS.ser) during tomcat shutdown

Tomcat normally creates a directory for each webapp under
work/Catalina/localhost during deployment. If it's not there now,
either someone deleted it while Tomcat was running or there's a
permissions problem.

아래부터는 pingpong talking입니다. ㅎ
http://forums.sun.com/thread.jspa?threadID=678715&tstart=0

What is happening is that tomcat tries to save the current web app sessions when it shuts down. It is attempting to serialize the session objects to the file E:\tomcat4.1\work\Standalone\localhost\_\SESSIONS.ser . The underscore ("_") represents the root web app.

So first verify that the path is correct an the directory E:\tomcat4.1\work\Standalone\localhost\_ exists.

Second make sure that all attributes that you store in the session are serializable.

Or if you wish you could configure tomcat not to serialize the sesions:

http://tomcat.apache.org/tomcat-4.1-doc/config/manager.html

Personally I don't believe that this is what is causing tomcat to crash. It may be that tomcat is going down and attempting to save the sessions.

I would also check how much data you are storing in the sessions. I would also make sure that I have good try-catch blocks to catch all potential errors.

Tomcat provides space for a webapp's use via the context attribute
javax.servlet.context.tempdir; this normally points to the directory
work/Catalina/localhost/[appname], which is the one getting deleted. I
suspect your webapp is taking the value of that attribute, using it for
a bit, and then erroneously thinking it should clean up by deleting it.

As an experiment, you can configure the name of the webapp's tempdir via
the <Context> attribute workDir; Tomcat creates this directory during
deployment of the webapp, but otherwise doesn't seem to touch it.
Setting the workDir attribute to some other location might solve your
problem, although the real fix is to have your webapp stop deleting
things it didn't create.

Don't change the workDir attribute for the <Host> - let that one stay as
the default. The idea is to give the webapp a different work directory
than the one Tomcat uses. You need to change just the workDir attribute
for the webapp, inside its <Context> element.

Where do I find the <Context> element related to axis2 (which  
> is a servlet)?

First you said axis2 is a webapp, now you say it's a servlet; I suspect
the former is correct. A webapp can utilize many servlets, which I
think is the case here.

> Should it be inside $CATALINA_HOME/webapps/axis2/WEB-INF/web.xml?

No, the contents of that file are defined by the servlet spec (JSR-154),
whereas the <Context> element is specific to Tomcat. It can be in
webapps/axis2/META-INF/context.xml or in
conf/Catalina/localhost/axis2.xml; the latter overrides the former if
it's in both places. (It can also be in server.xml, but that location
should not be used for recent versions of Tomcat.) It may not exist at
all, in which case you'll need to create it in one of the above
locations, with just the workDir attribute.

The relevant doc is here:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html


You're right; I thought I had checked that Tomcat would still use the
<Host> workDir for SESSIONS.ser, but further testing shows that's not
true.

Something else to try is configuring a nested <Manager> element inside
the axis2 <Context>, and specifying the pathname attribute as an
absolute path to where SESSIONS.ser should be stored, while having some
alternate location for the axis2 <Context> workDir attribute. The
pathname attribute should include the file name (SESSIONS.ser), and
every component of the path must already exist prior to Tomcat shutdown.
In your situation, you could try the pathname value:
/home/nmm42/devel/tomcat/apache-tomcat-6.0.13/work/Catalina/localhost/ax
is2/SESSIONS.ser

However, you really should search the webapp source code for references
to javax.servlet.context.tempdir, and fix the code that's removing that
directory. Deletion of the workDir affects not only session
persistence, but also trashes class files generated from JSPs.

둘이서 열심히 이야기를 하는데 누군가 나타나서 한 마디 툭 하네요 ㅋ

Looks a lot like an Axis problem after all:
https://issues.apache.org/jira/browse/AXIS2-3052
"Undeploy fails to persist sessions on Tomcat 5.5 and 6"

과연 이게 도움이 될까요 ㅎ
지금 이슈와는 좀 다르지만 한번 테스트 해보죠 ㅎ
흠... 역시... -0-;;;

다시 아까 그 대화로 돌아가서 ㅎ
The serialised session files are kept in the temp folder so starting tomcat
with tomcat.work.dir=NewFolderThatWontBeDeleted will solve the problem
e.g. assume for the moment you have a perm folder assigned to you called
/usr/local/michele
%CATALINA_HOME%/bin/java -Dtomcat.work.dir=/usr/local/michele bootstrap.jar

일단 시간이 없으므로 여기까지만....
좀 더 구글링을 해서 해결방법을 찾아봅시다!!








'Voice Portal > WAS' 카테고리의 다른 글

[tomcat] tomcat 6.0 migration guide  (0) 2008/12/08
[log4j] log4j:ERROR LogMananger.repositorySelector  (0) 2008/12/05
[tomcat]sessions.ser  (199) 2008/12/05
Apache Tomcat 서비스 실행시 에러  (0) 2008/11/26
Servlet Reloading  (0) 2008/11/24
[shell] tomcat 로그 파일 관리  (0) 2008/11/17
posted by 조금까칠한남자
2008/10/15 12:29 CodeIN/Java
크리에이티브 커먼즈 라이선스
Creative Commons License
- Session 속성
: 세션은 웹 서버의 서비스를 받는 사용자를 구분할 수 있는 단위이다. 클라이언트들은 웹 브라우저를 실행한 후 하나의 웹사이트에만 머무르지 않고 여러 웹 사이트들을 이동한다. 그러다가 다시 이전 웹사이트로 되돌아갈 경우가 있다. 다른 사이트로 이동하였다가 다시 그 사이트를 접속해도 이전에 로그인한 정보라든지 구입한 상품 내역들이 그대로 유지되는 것을 볼 수 있다. 이것은 세션을 사용하기 때문이다. 여러 사이트를 돌아 다녀도 사용자가 웹 서버의 세션에 의해 가상적으로 연결되어 있으므로 그 에 대한 정보 역시 잃지 않게 되는 것이다.

페이지가 세션에 참여할 것인가 여부를 기술한다. true이면 session변수가 현재 페이지에 대한 레퍼런스를 가진다.



'CodeIN > Java' 카테고리의 다른 글

java.lang.UnsupportedClassVersionError  (0) 2008/10/18
javax.servlet.ServletException  (0) 2008/10/17
[JSP]Session  (1) 2008/10/15
[java]File에 이어쓰기  (0) 2008/09/21
[JAVA]currentTimeMills()  (0) 2008/09/21
java.net.SocketException: Connection reset  (0) 2008/09/17
posted by 조금까칠한남자
2008/04/23 16:46 Voice Portal/Dialog Designer
크리에이티브 커먼즈 라이선스
Creative Commons License
CCXML Concepts

CCXML은 event-driven을 하게 끔 appications을  build 할 수 있게 해준다. 즉, external events(like call control events) 는 CCXML application에 의해 'caught'되어 질 것이다. 그럼 CCXML application은 각기 다른 액션을 취할 것이다. 그리고 아마도 CCXML session의 상태를 바꿀 것이다. CCXML environment에 의하여 application에서의 전체 상태는 유지될 것이다.
- Create and destory conferences
- Create, destory, and interact with dialogs(for example, a VoiceXML session)
- Accept, merge, redirect, and reject calls
- Join calls to conferences, dialogs, and each other
- Create and interact with other CCXML session
- Interact with the outside wold using HTTP

CCXML Platform는 call control signaling을 이용하여 이런 모든 것들(아래 diagram상에서 dashed line)을 관리할 것이다.(i.e. Session Initiation Protocol(SIP)). CCXML은 실제로 'media'를 다루지 않는다.(i.e. voice and video) CCXML은 call signaling만 다루며 이 call signaling을 다른 'endpoints'와 연결하기 위하여 'media channel'을 이동시키기 위해서 사용할 것이다. CCXML은 다른 components의 능력에 의존적이다. - like dialog(VoiceXML) platform과 conference server.

아래 diagram을 보면 CCXML platform은 multiple CCXML sessions을 다르고 있다. CCXML session은 Web application server로부터 받은 CCXML document 를 실행시킨다. CCXML application은 서로 다른 endpoints들 사이에서 media channels을 관리하기 위하여 SIP signaling을 이용한다. dialog는 VoiceXML platform상에서 돌아가는 VoiceXML dialog를 말한다. Connection은 telephone network로부터 온 call을 말하며 Conference는 다른 채널의 audio를 mixing하는 mixing element를 말한다.

사용자 삽입 이미지





















CCXML applicationss are concerned with different kinds of entities as compared to VoiceXML applications. Within a VoiceXML application, we worry about a session, or dialog, which represents a 'call'. A VoiceXML application is driven by caller interaction, and the VoiceXML. Form Interpretation Algorithm(which controls how a VoiceXML platform collects infromation from the caller)

CCXML에서 우리는 call control과 signaling과 관련된 elements들에 신경을 쓴다. 이런 것들은 events로 전달되어지고, 우리가 core CCXML entities를 관리할 수 있게 해준다.

- Session: CCXML Session은 'owns' connections, conferences and dialogs인 context이다.
- Connections: Connections은 서로 다른 endpoints들 사이에 존재하는 calls이다. 예를 들어, PSTN user와 VoiceXML platform.
- Conferences: Conferences는 서로 다른 endpoints로부터 media의 mixing이라 말한다.
- Dialogs: Dialog는 전통적인 Interactive Voice Response(IVR) systems을 사용하여 구현되어지고 관리되어지는 VoiceXML applications나 dialogs같은 것들을 포함한다.

그러므로  CCXML은 위의 diagram에 있는 dashed line을 creating, moving과 destroying하는 것을 주로 한다.
posted by 조금까칠한남자
prev 1 next