2015. 7. 20. 16:56

- 브리지 네트워킹에서, Virtual Box는 물리적 네트워크 어댑터로부터 

  데이터를 걸러내기 위해 호스트 시스템의 디바이스 드라이버를 사용

- 이 드라이버는 "net filter" 드라이버라고 불린다

- 이 것은 물리적 네트워크로부터 데이터를 가로채거나

   데이터가 그곳(물리적 네트워크)으로 침투하는 것을 허락한다

- 효과적으로 소프트웨어에서 새로운 네트워크 인터페이스를 생성하는 것이다

- 게스트가 그런 새로운 소프트웨어 인터페이스를 이용할 때,

  호스트 시스템에게는 게스트가 네트워크 케이블을 이용하여 

  물리적으로 직접 인터페이스에 연결되었다고 보여진다

- 호스트는 인터페이스를 통해 게스트에게 데이터를 전할 수 있고

  그것으로부터 데이터를 받을 수 있다

- 이것은 게스트와 네트워크 나머지 장비들 사이에 라우팅이나 브리징을 

   직접 설정할 수 있다라는 것을 의미한다

- 이러한 작업을 하기 위해 Virtual Box는 호스트 시스템 상에서 

  디바이스 드라이버를 필요로 한다



- 브리지 네트워킹을 가능하게 하기 위해 할 일은 

가상 머신의 설정 다이얼로그를 열고,

네트워크 페이지로 가서 "Attacted to" 필드에서 Briged network를 선택한다

- 마지막으로 페이지의 아래에 리스트로부터 원하는 

  호스트 인터페이스를 선택한다.

이것은 너의 시스템의 물리적 네트워크 인터페이스를 포함한다


* 한계 

- 리눅스 : 무선 인터페이스를 이용하여 브리지 네트워킹을 할 때 

             기능이 제한적이다 

             현재 무선 상에서 오직 IPv4를 지원한다.

- 또한 Marvell Yukon II EC Ultra Ethernet NIC 상에서 sky2 드라이버에 의해 

  제공되는 무선 인터페이스 상에서 MTU를 1500 이하로 설정하는 것은 

특정한 조건 하에서 패킷 손실이 일어난다

2015. 7. 20. 16:09

Virtual Box 네트워킹 모드 - Network Address Translation(NAT)


- 가상 머신에서 외부 네트워크에 접근하는 가장 간단한 방법

- 호스트 네트워크와 게스트 시스템 상에서 어떤 구성도 필요하지 않음

- 이러한 이유로 Virtual Box에서 디폴트로 설정됨

- 진짜 컴퓨터와 같이 라우터를 통해 인터넷에 연결

- 이 경우에 라우터는 Virtual Box  네트워킹 엔진

- 이 라우터는 각각의 가상 머신과 호스트 사이에 위치

이 구분은 가상 머신끼리 서로 통신하지 않기 때문에 보안이 최대화

- 단점 : 가상 머신은 외부로부터 보이지도 않고 접근할 수도 없음

         => 따라서 이 방식으로는 서버를 운영할 수 없음

- 가상 머신은 Virtual Box에 통합된 DHCP 서버로부터 개별 네트워크 상의

   네트워크 주소와 구성을 받는다.

- 따라서 가상 머신에 할당된 IP 주소는 보통 호스트보다 

  완전히 다른 네트워크 상에 있다

- ex) 가상 머신에 하나보다 많은 카드가 설정 되어 있을 때

       첫 번째 카드는 10.0.2.0이라면, 두 번째 카드는 10.0.3.0 등으로 연결된다


* NAT 한계

- NAT의 4가지 한계가 있는데 이것은 사용자들이 알아야 한다.


1.  ICMP 프로토콜 한계 : 자주 사용되는 네트워크 디버깅 툴은(ping or tracerouting)

                                메시지를 보내고 받는데에 ICMP 프로토콜에 의존한다

                                ICMP 지원이 Virtual Box 2.1부터 개선되었지만, 

                                일부 다른 도구들은 신뢰적으로 작동하지 않을 수 있다.


2. UDP 브로트캐스트를 받는 것이 신뢰할 수 없음

  - 게스트가 특별한 포트 상에서 UDP 데이터를 보낸 후에 

    리소스를 저장하기 위해서 일정시간 동안 오직 리슨을 하기 때문에 

    게스트가 브로드캐스트를 확실히 받을 수 없다. 


3. GRE와 같은 프로토콜이 지원 안 됨

  - TCP와 UDP 말고 다른 프로토콜은 지원이 안 된다


4. 1024 미만의 호스트의 포트를 보내는 것은 불가능함

  - root에서 실행되지 않는 응용프로그램은 

    1024 이하의 포트를 묶는 것은 불가능하다

  - 그 결과 그러한 포트 전송을 구성하기를 시도하면 가상 머신은 시작을 안 한다.

  - ex) NFS 는 포트 번호가 1024 미만이기 때문에 

    서버는 연결을 거절하는 구성을 취한다





2015. 7. 16. 14:50







2015. 7. 15. 16:40
    / : 최 상위 경로
/bin : 기본 명령어 위치 , CentOS 7부터는 /usr/bin 으로 
                심볼릭 링크 되어 있다.
/boot : 커널 이미지, 부트로드 관련 파일 존재, 
                  별도의 파티션으로 할당을 권장하고 있다. 
/dev : 장치 파일이 저장된 디렉토리
/etc : 설정관련 파일 및 디렉토리
/lib : 라이브러리 , CentOS 7부터는 /usr/lib 으로 심볼릭 링크 되어 있다.
/media : CD, DVD, USB 저장장치 마운트되는 곳이다.
/opt : 추가적인 소프트웨어 설치 디렉토리
/sbin : 시스템 관리자를 위해 사용되는 명령어 등이 저장되는 디렉토리, 
                   CentOS 7부터는 /usr/sbin/으로 심볼릭 링크되어 있다.
/srv : 시스템 서비스들
/tmp : 임시 디렉토리 
/usr : 시스템이 아닌 일반사용자가 사용하는 프로그램이 설치된 디렉토리
/var :  시스템 운용중에 저장되는 자료
/home : 사용자들의 홈디렉토리
/root : root 사용자의 홈디렉토리
/proc : 커널과 프로세스를 위한 가상 파일 시스템


2015. 7. 15. 16:39

드디어 기다리고 기다리던 리눅스에 발을 들였다...


15년 전에 레드햇 한 번 깔아보려고... 애썼건만 실패하고


3년 전에 우분투 한 번 깔아보려고 책까지 샀건만 실패하고...


드디어 회사에서 다시 한 번 시작이다


한 번 잘 해보자~~!

2009. 3. 6. 12:18

x1 = P1 * X1
x2 =  P2 * X2

여기에서  P1 = [R1 | t1]; 이다. R1은 SO(3)에 포함되고 t1은 3D vector 이다.

1. Reconstruction Method

P1(t) = p1 + t * v1;
P2(s) = p2 + s * v2;

다음과 같이 되기 때문에 P1 과 P2 가 같게 되는 t와 s를 각각 구하면 된다.

두 장의 영상에서 임의의 점에 대한 대응점을 x와 x'이라고 하면
다음과 같이 만들 수 있다.
(x와 x'은 영상 좌표의 homogeneous coordinate 이다)
xn = K-1 * x;
xn' = K-1 * x';
p1 = - R1' * t1;
p2 = - R2' * t2;
v1 = R1' * xn;
v2 = R2' * xn';

위의 4개의 vector p1, p2, v1, v2를 이용하여
다음과 같은 식으로 t와 s를 구할 수 있다.

k1 = p2 - p1;
k2 = v1 x v2;
M1 = [k1 v2 k2];
M2 = [k1 v1 k2];
t = det(M1) / (k2' * k2);
s = det(M2) / (k2' * k2);

t와 s를 구하면 P1(t) 와 P2(s) 에 각각 대입하면

같은 3D 좌표가 나오게 되고 이게

실제 3차원 상의 점이 된다.