안녕하세요.
UDP프로토콜을 이용해 P2P통신을 시도 하는 중, 어려운 부분이 있어 질문 드립니다.
내용이 길어 가,나,다,라로 항목을 구분 했으며, 질문은 다 항목에 있습니다.
==============================
가. 서버,단말 구성
==============================
A. 공인아이피서버
a) IDC_서버 = 210.xxx.xxx.xxx
B. 집
a) HOME_PC1(공유기) = 192.xxx.xxx.xxx
C. 회사 (같은 공유기 사용)
a) OFFICE_PC1(공유기) = 172.xxx.xxx.xxx
b) OFFICE_PC2(공유기) = 172.xxx.xxx.xxx
c) OFFICE_MOBILE1(와이파이) = 192.xxx.xxx.xxx
==============================
나. 단말간 송수신
==============================
A. OFFICE_PC1 <=> OFFICE_PC2 ( 회사 피씨끼리 송신 )
a) private IP,PORT 사용 [송신 됨]
b) public IP,PORT 사용 [송신 됨]
B. OFFICE_PC1 => OFFICE_MOBILE1 ( 회사 피씨에서 동일공유기를 사용하는 회사모바일단말로 송신 )
a) private IP,PORT 사용 [송신안됨, 샌드소켓 Available 쌓이기만하고 먹통 됨]
b) public IP,PORT 사용 [송신안됨]
c) Remote IP,PORT 사용 [송신 됨]
C. OFFICE_MOBILE1 => OFFICE_PC1 ( 회사모바일단말에서 동일공유기를 사용하는 회사 피씨로 송신 )
a) private IP,PORT 사용 [송신 됨]
b) public IP,PORT 사용 [송신안됨]
D. HOME_PC1 <=> OFFICE_PC1 ( 집, 회사 피씨끼리 송신 )
a) private IP,PORT 사용 [송신 안됨]
b) public IP,PORT 사용 [송신 안됨]
==============================
다. 질문
==============================
1. 같은망(공유기)를 사용하는 단말기 끼리는 나.A.a, 나.A.b 의 경우처럼 상호간 사설아이피포트로
송신이 가능해야 하는걸로 알고 있는데, 왜 B.a 같은 상황이 발생 하는지 궁금합니다. 아이피 대역이
서로 달라서 그런건가요?
2. B.c 의 상황은 같은 망 내에있는 모바일단말->피씨 로의 송신으로 피씨가 모바일 단말의
리모트아이피(172.32.2.45)를 얻어낸 상황입니다. 이놈의 정체가 뭔지 모르겠는데, 피씨에서
모바일 단말로 송신을 하려면 이놈을 이용해야 가능했습니다. 왜 같은 망에서 송신이 사설아이피가 아닌
리모트 아이피를 이용해야 가능한지 궁금합니다.
3. D.b 처럼 다른 망에서의 공인아이피,포트를 이용한 송신이 왜 실패하는지 궁금합니다.
==============================
라. 테스트 설명
==============================
1. 각각의 단말은 사설아이피를 패킷에 담아 공인아이피서버에 전송한다
2. 서버는 수신받은 패킷의 리모트아이피와 포트, 사설아이피와 포트를 리스트에 쌓는다.
3. 리스트를 보낸 모든 단말에 공인,사설 아이피포트를 보내줘서 P2P그룹을 만든다.
4. 각 단말은 모든 단말의 공인,사설 아이피를 알게 되고, "나. 단말간 송수신" 으로 송신 테스트를 진행 한다.
5. 회사 공유기 아수스, 집 공유기 다보링크 사용
* 소스를 요청하시면 서버, 클라 소스를 올리겠습니다
시험하신 망의 구성 설명이 너무 간략하고 공유기도 모델 및 설정, SW에 따라 동작이 틀려서
정확한 답변은 해 드릴 수 없지만 결국은 홀펀칭에 관한 얘기가 됩니다.
라에서 설명하신 P2P 관련해서 IP를 얻어오기 위해 서버를 구성하신 것은 적절한 방법이며
1.번의 답은 예상하신 게 맞고 2, 3번의 답은 본 사이트에서 NAT로 자료를 검색하셔서
홀펀칭 및 NAT 에 대한 기술 이해를 좀 더 하신 후 시험하시는 공유기의 동작 방식을
예측하시는 게 필요할 것 같습니다.
버너님 답변 감사합니다.
2번에 대한 답은 아직 구하지못한상태고, 그저
같은 망, 다른 아이피 대역 일경우 상대방의 리모트 아이피를 이용해서
송신하는 방법으로 해결 하고 있습니다.
3번은 한쪽이 시메트릭이어서 통신이 실패한 경우였습니다.
검색해봤을때는 한쪽만 콘이어도 통신이 가능하다고 하는데,
아직 이부분에 대해서는 감이 안잡히네요