2017-10-05 5 views
0

인터넷을 통해 두 장치간에 직접 TCP \ IP 연결을 설정하는 앱을 작성하고 싶습니다. IP 주소와 포트를 교환 할 서버가 있지만 연결을 설정하기에 충분합니까?직접 TCP IP 연결에 필요한 것은 무엇입니까?

두 장치가 하나의 IP (동일한 Wi-Fi 핫 스폿에 연결됨)에있는 경우를 처리하는 방법은 무엇입니까?

또한 핫스팟의 포트 포워딩 설정없이 장치의 열린 포트가 어떻게 접근 할 수 있는지 이해하지 못합니까? 앱 사용을 위해 열려있는 포트가 있습니까?

답변

1

대부분의 경우 포트 전달에 대해 정확합니다.

TCP/IP는 OSI Layer 4 프로토콜입니다. 알려진 IP 주소와 포트 번호를 사용하여 서버 응용 프로그램에 데이터를 보낼 수 있어야합니다. 이제는 인터넷에있을 때 일반적으로 인터넷의 나머지 부분이 사용자에게 도달하는 IP 주소와 직접 인터페이스하지 않기 때문에이 작업이 더욱 복잡해 질 수 있습니다. 공개 IP 주소입니다. ISP에서 가지고있는 모뎀은 NAT 을 구현하며 개인 주소를 공개 주소로 변환합니다. 모뎀은 특별히 TCP 전달 규칙이 없으면 모든 TCP SYN 요청을 차단합니다.

이것은 전형적인 경우 일 뿐이며 DMZ 모드로 모뎀을 설정하고 nginx와 같은 자신의 역방향 프록시를 구현할 수도 있습니다.

+0

위대한,하지만 어떻게 VoIP 응용 프로그램이 작동합니까? 서버를 통해 모든 데이터를 전송하지 않습니다. –

+1

구현에 따라 다릅니다. VOIP은 일반적으로 레이어 5 프로토콜 인 [SIP] (https://en.wikipedia.org/wiki/Session_Initiation_Protocol)를 사용합니다. 따라서 TCP를 사용할 필요가 없으며 원하는 모든 계층 3 프로토콜을 사용할 수 있습니다. TCP를 사용하더라도 구현할 수있는 여러 가지 아키텍처가 있는데, 그 중 일부는 TCP 서버, 클라이언트 또는 둘 다입니다. 자세한 정보는 오픈 소스 VOIP 서버 [Asterisk] (https://wiki.asterisk.org/wiki/display/AST/Asterisk+Architecture%2C+The+Big+Picture)를보십시오. –

+0

SIP! 그게 제가 찾고 있던 단어입니다! 한 단어 만 들으면 더 깊게 파고 들어야 할 곳을 알았습니다. 감사 –

0

Firebase를 기반으로 WebRTC 빌드를 작성했습니다.

내 질문에 대한 실제 답변 - STUN.