ActiveX 권한..1

Program Visual C++ 2012. 1. 12. 17:40 Posted by HisPark

사내에서 Vista 지원때문에 새로 입사한 이지화씨를 통해 Vista지원여부와 방법들의 확인을 요

청하여 결과물로 나온 1차본이다.

여러가지 자료들도 잘 정리되어 있고 많은 정보를 링크하여 놓은 좋은 정보이다.

1. Windows Vista 표준사용자의 File Save & Open

(0) Administrator 계정으로 로그인해도 프로그램은 표준 사용자 권한으로 실행됩니다.

(1) CFileDialog를 이용해서 파일을 Save, Open 하는 프로그램을 만들어서 파일을 생성해

보았습니다.

C:\ => Root Directory에서는 경고 메시지가 나타납니다.

(Root 대신 \My Documents에 저장할 것인지를 묻습니다.)

C:\TEMP\ => 이와 같이 '쓰기 권한'이 사용자에게 부여된 폴더에는 자유롭게 저장이

가능합니다.

C:\Program Files\ => '읽기/실행 권한' 이 주어져 있습니다. 파일을 쓰는 시도를 하면

에러 없이 파일을 자유롭게 쓸 수 있는 것처럼 보이지만, 실제로 이 폴더에 쓰는 것이

아니라 C:\Users\<사용자 이름>\AppData\Local\VirtualStore\Program Files\

이 곳에 따로 저장이 됩니다. 작업 시 사용자가 C:\Program Files\ 에 저장을 지시하

면, 성공적으로 파일이 저장된 것처럼 보이지만, 물리적으로는

C:\Users\...\VirtualStore\Program Files\ 에 파일이 저장됩니다.

(그러므로 C:\Program Files\ 에 찾아가보면 파일이 없습니다.)

C:\Windows\ => \Program Files\ 폴더와 동일하게 작동합니다.

C:\Users\<사용자 이름>\AppData\Local\VirualStore\Windows\ 로 Redirection

시킵니다.

이렇게 Vista에서 자체 Redirection 시키는 디렉토리는 C:\Windows\ 와 C:\Program

Files\ 두 Folder만이 확인 되었습니다. C:\Users\...\VirtualStore\ 의 하위 Folder가

\Windows\ 와 \Program Files\ 밖에 없기 때문에, 현재로서는 이 두 Folder가 전부인

듯 합니다.

(2) 역시 CFileDialog를 이용해서 C:\Windows\ 와 C:\Program Files의 파일을 읽어보면,

먼저 C:\Users\...\VirtualStore\Windows\ 와 C:\Users\...\VirtualStore\

Program Files\ 에 그 파일이 있는지를 확인해 본 후, 있으면 그 VirtualStore에 있는 파

일을 읽어오고, 없으면 C:\Windows\ 와 C:\Program Files\ 에 그 파일이 있는지 확

인해서 읽어옵니다. 두 폴더에 같은 이름의 파일이 모두 존재할 때, 어떤 파일이 열릴 것인

가에 대한 정리입니다.

\VirtualStore\Program Files\ C:\Program Files\ 어느 쪽의 파일이 열리는가?

X X 파일 없음
X O C:\Program Files\
O X \VirtualStore\Program Files\
O O \VirtualStore\Program Files\
즉, 항상 VirtualStore가 우선적으로 검토되고, 만일 적절한 파일을 발견하지 못한 경우에

한해서만, 물리적인 저장 위치인 C:\Program Files를 access한다고 정리하시면 됩니다.

(3) 김명신의 즐거운 하루 블로그에서 잘 정리된 정보를 얻을 수 있습니다.

- Vista Note #1. 환경설정 파일 저장, http://himskim.egloos.com/1471216

- Vista Note #2. Virtualization, http://himskim.egloos.com/1473911

(4) Registry에 대한 저장은 아직 직접 실행해보지 않았습니다.

위에 소개된 블로그에 나타나있는 텍스트를 그대로 붙여넣기 합니다.

Registry의 경우는 어떨까요? 핵심적인 메커니즘은 파일과 유사합니다. Registry

Virtualization은 HKEY_LOCAL_MACHINE\Software 이하만을 가상화 합니다. 즉

HKEY_LOCAL_MACHINE\Software\AppKey1 에 접근을 시도하면 실제로는

HKEY_USERS\<User SID>_Classes\VirtualStore\Machine\Software\AppKey1

에 접근하게 됩니다.

Registry Virtualization에 대한 보다 자세한 내용은 Registry Virtualization 를 참고하십시

오.

마지막으로 이러한 virtualization 기능은 다음 version의 windows 출시나 혹은 그 이전

에라도 제거될 수 있다는 것입니다. 실제로 64bit Vista에서는 이러한 virtualization 기

능이 전혀 동작하지 않습니다. 따라서 virtualization 기능에 대해서 전혀 기억하지 못하

더라도 다음 한가지만은 기억해야 합니다.

Program Files나 windows 혹은 windows/system 폴더 그리고

HKEY_LOCAL_MACHINE\Software 등에는 파일 혹은 정보를 수정,삭제,저장할 수 없으

므로 프로그램을 수정해서 다른 위치에 이러한 정보를 저장하도록 고쳐야 한다는 것입니

다.
(5) '관리자 권한으로 실행' 하면 물리적으로 C:\Program Files\ 혹은 C:\Windows\ 에도

파일을 저장할 수 있습니다.

(관리자 권한으로 C:\Users\...\VirtualStore\Program Files\ 에 저장하려면, 직접

찾아가야 됩니다!)

(6) 프로그램을 Install 하거나 Uninstall 할 때는 VirtualStore 저장하지 않고,

C:\Program Files\ 에 접근할 수 있도록 권한을 줍니다.

이에 대한 편의를 위해 Microsoft에서는 'MSI(Microsoft Windows Installer) 3.1 및 4.0을

사용하는 것' 을 권장하고 있습니다.

p.s. 파일명에 Setup이나 Install이 있으면 Vista에서 자동으로 권한을 상승시켜 준다고

합니다.

이전에 쓰던 프로그램들을 모두 재패키징해서 재배포해야 하는 수고를 덜어주기 위해

MS에서 지원하는 레거시 지원이라고 합니다.

http://aromi.tistory.com/29 에서 관련된 내용을 찾아보실 수 있습니다.

(7) http://www.microsoft.com/korea/windows/ie/ie7/technology/default.mspx 에서

Microsoft가 제공하는 GuideLine을 다운 받을 수 있습니다.

최소권한부여 환경에서 어플리케이션 개발자를 위한 모범사례 및 지침(Word 문서, 720KB)

2. Windows Vista 표준사용자의 ActiveX

(1) 위의 File Write 하는 프로그램을 ActiveX로 바꾸어서 같은 방법으로 실행을 하였습니다.

Local Resource로 실행 시, 보호모드로 작동하지 않기 때문에 IIS server를 열어서 접속

하는 방법으로 테스트를 진행하였습니다.

(2) Regsvr32 으로 등록 해줄 때, '관리자 권한' 이 필요합니다.

cmd.exe 를 '관리자 권한으로 실행' 하거나, 아예 regsvr32.exe 의 실행 권한을 바꾸어 버

리는 수가 있습니다.

(Administrator가 아닌 사용자가 '관리자 권한으로 실행' 을 시도하면 관리자 권한이 있는

계정의 비밀번호를 묻습니다.)

(3) Regsvr32 등록이 잘 이루어졌다면 VC6 에서 작성한 ocx가 보호모드에서 정상적으로 작

동합니다. 앞서 진행한 것과 동일한 테스트를 진행하였고, File Save & Open은 (기대한

바와 같이) 위와 동일한 결과가 나타납니다.

IE7.0을 '관리자 권한으로 실행' 하면 IE7.0 내의 ActiveX 프로그램에서도 VirtualStore 말

고, C:\Windows\ 와 C:\Program Files\ 에 저장할 수 있습니다.

(4) SNAIPER의 조그마한 블로그 에 가보시면 Windows Vista 를 위한 ActiveX 마이그레이션

작업 절차 정리 문서 1 (http://snaiper.tistory.com/206)

문서를 참고하시면 VC6 에서 작성된 ActiveX를 Vista용으로 Migration 하는 경험담이 잘

정리되어 있습니다. (PDF 파일이 Adobe Reader 구버젼에서는 열리지 않는 듯 합니다.)

(5) 기타 ActiveX 에 관해 참고할만한 게시물들을 링크시켜 두겠습니다.

MS Windows Vista와 ActiveX에 대한 오해 http://aromi.tistory.com/29

(위에서 이미 링크한 그 블로그 입니다.)

Vista 와 ActiveX 그리고 보안

- (1) http://blog.naver.com/p4ssion/50013835648

(사실 이 글보다는 이 다음 글에 원하는 내용이 들어 있을 것 같습니다.)

비스타에서 강제로 액티브X 설치

- http://itviewpoint.com/tt/index.php?pl=2445

비스타와 보안 (Vista & ActiveX) 관련하여

- http://blog.naver.com/simonsayz?Redirect=Log&logNo=120034059886

Vista에서 ActiveX 사용 팁 한가지

- http://www.delmadang.com/cwb-bin/CrazyWWWBoard.exe?mode=read&num=4136&page=2&db=dmdlec3&backdepth=3

이어지는 답글 Code Sign 생략하기

- http://www.delmadang.com/cwb-bin/CrazyWWWBoard.exe?backdepth=1&db=dmdlec3&mode=read&num=4139

(6) http://www.microsoft.com/korea/windows/ie/ie7/technology/default.mspx 에서

Microsoft가 제공하는 GuideLine을 다운 받을 수 있습니다.

Internet Explorer 7 보호 모드의 이해 및 작업 (Word 문서, 366KB)

Internet Explorer 7 기술 개요 읽기 (Word 문서, 2.09MB)

(Internet Explorer 7에서는 웹 및 응용 프로그램 개발자를 위해 최종 사용자 환경, 보안,

개인 정보 보호, 플랫폼이 대폭적으로 향상되었습니다. 이 놀라운 새 버전의 기능에 대해

알아보려면 이 문서를 읽어보십시오.)

Internet Explorer 7.0 호환성 백서 (Word 문서, 1.92MB)

(이 문서에서는, 변화된 IE 7.0으로 인해 발생할 수 있는 전형적인 문제 및 현재 다양한 사

이트에서 보고되는 사례들을 알아보고 그에 대한 대처 방법을 소개합니다.)

위의 자료를 보면 Vista의 권한에 대한 대처 방안을 미약하게나마 생각할 수 있을 거 같다.

[출처] Windows Vista - VirtualStore, ActiveX (1차)|작성자 자유인

Hennesy 알아보기

Knowledge General 2012. 1. 9. 17:45 Posted by HisPark

 

Hennessy V.S.O.P                                                         Hennessy X.O

700ml \150,000                                                              700ml \300,000

375ml \100,000

 

  

헤네시는 꼬냑입니다. Cognac(꼬냑) 브랜디에 속하며 여러분이 번쯤은 들어봤음직한 알마냑(Armagnac) 역시

브랜디 입니다. V.S.O.P X.O 같은 것은 꼬냑의 숙성연도를 말하는데 잠시 살펴보도록 할까요

 

 

 

 

 

 

 

 

 

 

 

 

 

* V.O => Very Old(15)
* V.S.O => Very Superior Old(15~25
)
* V.S.O.P => Very Superior Old Pale(15~30
)
* X.O => Extra Old(45
이상)
* Extra(70
이상)
<1865
헤네시사 발표기준>

cf) Pale '창백한' 이라는 뜻이죠.여기서는 색이 옅다, 맑다 정도입니다.

이것도 인기있는 꼬냑브랜드죠. Remy Martin 인데 저희는 안키웁니다ㅎ

그럼 Cognac Armagnac 무슨 차이가 있을까요. ㅎㅎ 별거 없습니다.

꼬냑은 프랑스 중부 샹파뉴 지방의 항구마을인 꼬냑에서 생산되는 포도주만을 원료로 하는 브랜디이며

알마냑은 프랑스 보르도 지방의 남쪽 피레네 산맥에 가까운 알마냑 지역에서 생산되는 포도주만을 원료로 하는 브랜디가 되겠습니다.

여담으로 말씀드리자면 회사마다 등급이 의미하는 수는 다릅니다.

예를 들면 Remy Martin 볼께요


* V.S : Very Special (3~10
) Remy Martin Grand Cru
* V.S.O.P : Very Superior Old Pale (4~12
) Remy Martin V.S.O.P
* XO : Extra Old (10~37
) Rémy Martin XO Excellence, REMY MARTIN XO Premier Cru

[출처] Hennessy V.S.O.P & X.O ( P E N E L O P E ) |작성자 MISSION

'Knowledge General' 카테고리의 다른 글

손연재 에어컨 모델별 구별법  (0) 2012.10.09
KBCard  (0) 2011.12.07
공채할인 계산  (0) 2011.09.05
자동차 등록 인터넷  (0) 2011.09.05
경조사비?!  (0) 2011.07.25
 

레지스트리 함수 사용시 winreg.h을 인클루드하고, advapi32.lib을 Library에 등록해야 된다. 대부분 windows.h에 포함되어 있다.

레지스트리 등록
BOOL SHRegWriteString(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue, LPCTSTR lpData)
{
HKEY key;

if (RegCreateKeyEx( // 레지스트리키를 새로 만들어주는 함수이다. 만약 생성하려는 키가 존재하는 경우 해당 키를 오픈.

hKey, // 생성할 키의 루트키

lpKey, // 생성할 서브키(문자열)

0, // 반드시 0

NULL, // 키의 지정된 클래스명(문자열), (보통 NULL 입력)

REG_OPTION_NON_VOLATILE, // 정보를 파일에 기록한다. ( 보통 이 옵션을 사용 ), REG_OPTION_VOLATILE - 정보를 메모리에 기록합니다. ( 시스템종료시 기록이 지워진다. )


KEY_WRITE, // 쓰기와 관련된 모든 권한, KEY_ALL_ACCESS - 모든 권한, KEY_READ - 읽기와 관련된 모든 권한, KEY_EXECUTE - KEY_READ와 동일

NULL, // SECURITY_ATTRIBUTES 구조체의 포인터. (보통 NULL 입력)


&key, // 생성된 키의 핸들포인터

NULL // DWORD의 포인터, 생성된 키의 상태, (보통 NULL 입력)

)!=ERROR_SUCCESS) // 성공시 ERROR_SUCCESS, 실패시 0이 아닌값이 리턴됨

return FALSE;


if (RegSetValueEx( // 레지스트리키를 저장 하는 함수

key, // RegCreateKeyEx에서 얻은 핸들값

lpValue, // 값 이름

0, // 반드시 0

REG_SZ, //문자열 데이타 타입

(LPBYTE)lpData, // 값 데이터

lstrlen(lpData)+1 //값의 타입이(REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ) 일 경우 문자열의 크기

)!=ERROR_SUCCESS) // 성공시 ERROR_SUCCESS, 실패시 0이 아닌값이 리턴됨
return FALSE;

RegCloseKey(key); // RegCreateKeyEx에서 얻은 핸들을 닫는 함수
return TRUE;
}

ROOT KEY
HKEY_CLASSES_ROOT - 윈도우에 사용하는 프로그램과 각 프로그램에 연결된 확장명에 대한 정보, 단축키, 드래그 앤 드롭, 윈도우의 OLE에 관련된 정보가 저장
HKEY_CURRENT_USER - 사용자가 설정한 윈도우 환경에 대한 정보가 저장
HKEY_LOCAL_MACHINE - 컴퓨터에 설치된 하드웨어와 소프트웨어에 관련된 모든 설정 내용이 저장. 특히 하드웨어와 하드웨어를 구동시키는 드라이버와 설정 사항에 대한 정보가 저장
HKEY_USERS - HKEY_CURRENT_USER 에 저장된 정보 전체와 데스크탑 설정, 네트워크 연결등의 정보가 저장
HKEY_CURRENT_CONFIG - HKEY_LOCAL_MACHINE 키의 하위키인 Config 키의 내용만 담고 있슴.

데이터 형식
문자열 값(REG_SG) - 문자열 값을 가지는 데이터 형식
이진 값(REG_BINARY) - 0과1로 표현되는 2진수 값을 가지는 데이터 형식
DWORD 값(REG_DWORD) - DWORD는 더블워드(Double Word)를 의미하는 것
다중 문자열 값(REG_MULTI_SZ) - 여러 유니코드 문자열의 묶음
확장 가능한 문자열 값(REG_EXPAND_SZ) - 윈도우 XP는 여러 개의 시스템 정의 변수를 사용한다. 이러한 변수들은 BAT 파일이나 제어판의 ‘시스템’ 환경 변수에서 설정

레지스트리 삭제
BOOL SHRegDelValue(HKEY hKey, LPCTSTR lpKey, LPCTSTR lpValue)
{
HKEY Key;
LONG lRet = 0;

if(RegOpenKey( // 레지스트리를 오픈하는 함수

hKey, // 생성할 키의 루트키

lpKey, // 생성할 서브키(문자열)

&Key // 생성된 키의 핸들포인터

) != ERROR_SUCCESS) // 성공시 ERROR_SUCCESS, 실패시 0이 아닌값이 리턴됨
return FALSE;

lRet = RegDeleteValue( // 레지스트리를 삭제하는 함수

key, // RegOpenKey에서 얻은 핸들값

lpValue, // 값 이름

);

RegCloseKey(key); // RegCreateKeyEx에서 얻은 핸들을 닫는 함수
return ((lRet == ERROR_SUCCESS)? TRUE : FALSE); // 성공시 ERROR_SUCCESS, 실패시 0이 아닌값이 리턴됨
}

윈도우 시작에 등록 및 삭제

ex>

#include <windows.h>

// 등록

SHRegWriteString(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run","ProgramName", szPath);

// 삭제

SHRegDelValue(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run","ProgramName");

=========================================================================================================

레지스트리 등록

TCHAR value[1028] = "C:\\Program Files\\abc\\abc.exe -as";

HKEY hk;

RegCreateKey(HKEY_CURRENT_USER, "Software\\Microsoft\\windows\\CurrentVersion\\Run", &hk));


RegSetValueEx(hk, "abc", 0, REG_SZ, (LPBYTE) value, strlen(value)+1);


RegCloseKey(hk);


=========================================================================================================

레지스트리 삭제

HKEY key;

RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS,&key);


RegDeleteValue(key, "abc") ;


RegCloseKey( key );

=========================================================================================================

레지스트리 데이터 구하기

HKEY hhkey;
TCHAR str1[4 + 1];
DWORD data_size1 = sizeof(str);
RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DEVICEMAP\\SERIALCOMM",0, KEY_ALL_ACCESS, &hhkey);
int ret = RegQueryValueEx(hkey, "\\Device\\Silabser0", 0, NULL, (LPBYTE)str, &data_size1);
AfxMessageBox(str);

'Program Visual C++' 카테고리의 다른 글

ActiveX 권한2  (0) 2012.04.18
ActiveX 권한..1  (0) 2012.01.12
MFC CInternetSession클래스 사용시_유의점  (0) 2011.12.01
AVI 파일 다루기  (0) 2011.08.30
정적 라이브러리에서 MFC 사용  (0) 2011.08.25

홀펀칭 화상통화...등등

Program RFC/Algorithm 2012. 1. 4. 09:40 Posted by HisPark
아이폰4와 갤럭시S와 화상 전화는 왜 안나올까?


사실은 이 동영상에서 시작되었다.

잡스는 아이폰4에서의 화상통신이 wifi를 이용해서 이루어 지며, 무료(당연히)라고 했다.
그리고 특히 강조하며, no server, no setting...zero setting required 이라고..
즉 서버없이 사용자끼리, 완전 무료로, 아무런 세팅없이 화상통신이 가능하다는 얘기다.
위 내용을 그대로 보자면..
아이폰4끼리
wifi가 되는 곳 어디서나.
가로, 세로 모드
앞뒤 카메라
그리고 놀라운 화질과 음질...
듣기만 해도 기분좋은 얘기다...그런데...왜?
아이폰4끼리만 되는가 하는 문제이다. 왜 왜 왜!!!

갤럭시S나 , 다른 화상통신 프로그램과는 왜 안될까? 또는 Nate나 MSN, 또는 Skype와 화상통신이
된다면 좋을텐데...
일반전화 와 핸드폰은 통신이 된다. 이걸 핸드폰끼리만 통신이 된다고 하면 어떻겠는가?
또는 외국과는 통신이 안된다면 어떻겠는가?

물론 안되는 여러가지 문제가 있겠지만, 여기서는 기술적인 문제하나를 말하고 싶다.
다음 사진을 보자.

우선 위에 언급된 내용은 살펴보면

H.264 : 비디오 표준이다. 흔히 말하는 Mpeg4로 보면 된다.
AAC : 오디오 표준이다. Mpeg2에서 사용되었고, 흔히 사용하는 MP3와 같은 수준의 음질이나, 압축율은 더 좋다.

그런데 동영상을 보면 위 2가지에 대해서는 비디오, 오디오 표준이라는 얘길 하다가...
밑에는 농담과 함께 넘어가 버린다. 이걸 한번 살펴보자.

SIP : Session Initiation Protocol 이다. 쉽게 말해 인터넷 전화 프로토콜이다.
그리고..문제는 밑에 있는. 3가지 기술이다.

STUN : Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)
TURN : Traversal Using Relay Network Address Translation NATs
ICE : Interactive Connectivity Establishment
그리고
RTP : Real Time Protocol (RTSP : Real Time Streaming Protocol)
SRTP : Secure Real Time Protocol
둘다 실시간 음성 및 영상 송수신을 위한 프로토콜이다. SRTP는 보안을 위한 부분이다.

여기서 STUN, TURN, ICE 는 네트워크 전공자/종사자 아니면 좀처럼 들어보기 힘든 부분이다.
쉽게 말해서 공유기 문제를 해결하기 위한 부분으로,
공유기는 1개의 IP를 여러 컴퓨터가 나뉘 쓸 수 있게 한다. 그리고 공유기에 물린 컴퓨터는 전부
내부 아이피 즉 192.168.... 로 된 아이피 주소를 사용하는게 보통이다.

그러다 보니, 전화를 걸때 수신자의 아이피 주소로는 그사람을 찾아갈 수 없다는 문제가 생긴다.
즉 192.168...로 시작되는 주소는 외부에서 접근할 수 없는 주소인 것이다.
이문제를 해결하기 위해 고안된 것이 위에서 언급된 3가지 기술 STUN, TURN, ICE 이다.
간단히 언급하자면
STUN는 흔히 말하는 UDP Hole Punching 이라는 기술로 접속을 위한 서버에서 UDP로 생성된
connection을 이용해서 접속하는 기술이다. 그러나, 이 기술로 100% 공유기를 통과할 수 없다.
이게 안되는 타입의 공유기가 있기 때문이다. symmetric 타입의 공유기는(자세한 설명은 생략. 골아플테니까.)
STUN 으로 연결되지 않는다. 이를 위해서 어쩔 수 없이 Relay .. 즉 전달하는 서버를 필요로 한다.
쉽게 말해서 송신자 A와 수신자 B가 통화를 하는 경우, 중간에 C가 들어서 A가 보내는 데이터를
전부 받아서 C에게로 전달해 주는 방식이다. 이경우 송수신자가 늘어난다면, 중간에 전달해 주는
C는 거의 죽음이다. 물론 몇가지 서버의 부하를 줄일 수 있는 방법이 있지만, 기본적으로 동영상을
실시간 전달하자면 대역폭(bandwidth)가 문제가 될 수 밖에 없다.
그리고 ICE는 위 2가지 기술을 조합하여 서로 다른 주소 영역가에 최적의 라우팅 경로를 찾아내는 기술이다.

결과적으로
위 3가지 기술은 전부 공유기 때문에 생기는 문제를 해결하기 위한 기술이다.
또한 그 방법이 깔끔하지 못하다.
한두번씩은 경험해 봤겠지만, NateOn(네이트온)에서 멀쩡히 채팅은 잘 되고 있었는데, 파일을 보내지
못하는 경우를 본적이 있을 것이다. 못봤다고? ...부럽다. 여튼.
Nate가 거의 비슷한 기술을 사용하고 있다.
즉 그냥 채팅을 하는 경우 데이터를 전부 Relay 시켜서, 전달한다. 그러나, 파일을 보내는 경우
STUN 기술이 들어간다. 그러다 보니, 공유기가 Hole Punching이 지원되지 않는 모델이거나,
2개 이상의 공유기가 중첩되어 있는 경우 파일이 전달되지 않는 문제가 생기곤 한다.

그럼 다시 처음으로 돌아가 보면...
아이폰4끼리 통신을 하는 경우
1. STUN 서버가 필요하다. 크게 부하는 없지만, 어느정도 서버가 확보되어야 하고, 사용자가 많아진다면,
추가 서버가 필요하다. 그리고.
2. STUN 서버로 동작하지 않는 공유기(NAT)를 사용하는 경우 TURN 서버로 Relay 해야 되는데..이건 부하가
심하다. 사용자가 늘어난다면, 그리고 재수없게도 Symmetric NAT가 많다면 더욱 더 많이 필요하다.
아마도, 네이트에서 파일전송이 안되는 경우처럼, 아이폰4 사용자들도 인터넷은 되는거 같은데, 화상통신이
안되는 경험을 하게 될 것이다. 아마도...하지만 릴레이 서버를 잘 이용한다면, 어느정도는 가능하지만...
이게 어느정도 될지는 알 수 없다.

그리고 아이폰4와 다른 스마트폰과의 통신...
이건 문제가 심각하다. 만약 갤럭시S와 통신을 할 수 있게 하려면...
STUN 서버를 같이 운영해야 된다. 서버를 둔다는 것이 그냥 IDC 같은데 처박아 두면 되는게 아니다.
릴레이 서버도 마찬가지... 두회사간, 그리고, 외국과의 화상통신을 위한 준비가 만만치 않다.
STUN 서버를 1대만 둔다면...전세계를 통합하는 1대의 STUN라면 몰라도...
릴레이 서버도 마찬가지고... 해결해야될 기술적 과제가 많다는 얘기다.
물론 이게 돈이 된다면...무슨 수를 써서라도 해결할 방법이 생길 수도 있겠지만, 화상통화만으로
돈이 되는 것은 아니다.
이게 전화처럼, 10년이상을 내다보고, 할 수 있다면 또 모를까...

아마도 쉽게 이루어 지지 않을 전망....
물론..이러한 기술적 문제는 IPv6가 전격적으로 도입된다면...또 전혀 다른 국면을 맞이 할 수도 있다.
NAT라는 것이 기본적으로 IP 부족과 관련이 있기 때문이다.

결론적으로 추론을 하자면.. 대대적인 통합 화상전화 시스템은 몇년내에 볼 수 없을 것 같다.
누군가 갤럭시S와 아이폰간 화상 전화 시스템을 만들어서 서비스 한다고 해도...쉽게 돈이 될것 같진
않아서...쉽사리 뛰어 들것 같지도 않다.
그리고 기술은 어느방향으로 뛸지 아무도 알 수 없기 땜에... 지금 크게 투자하는 것도 위험해 보이고..
 
 
 
http://zzpark.egloos.com/tb/10592868 님 블러그에서 ...
 

'Program RFC/Algorithm' 카테고리의 다른 글

RTCP-SR 에서 ntp timestamp  (0) 2011.11.14
Hole Punching  (0) 2011.08.31
Hole Puching  (0) 2011.08.31