2013-10-15 2 views
0

UDP를 사용하여 NAT를 통과하기 위해 내 NAT 매핑을 알 수 있도록 일부 전역 적으로 사용 가능한 STUN 서버를 사용하려고합니다. 이 웹 페이지에 서버가 있습니다 : http://www.tek-tips.com/faqs.cfm?fid=7542 테스트를 거쳤으며 ping을 수행합니다. 문제는 서버가 들어오는 모든 패킷에 응답하지 않기 때문에 특별한 STUN 요청 패킷 을 생성하는 것입니다.STUN UDP 요청 패킷 문제

STUN 프로토콜의 패킷 구조가 너무 잘 설명되어 있지 않으며 이미 구현 한 라이브러리를 사용하고 싶지 않습니다. Java/C 코드 또는 신중하게 설명 된 패킷 구조의 몇 가지 예가 있습니까? 그것에 관한 정보를 찾을 수 없습니다.

답변

0

STUN 패킷 형식은 RFC 5389에 자세히 설명되어 있습니다.

STUN에 알맞은 Java 코드를 원한다면 - JSTUN 소스를 살펴보십시오. 라이브러리를 사용하거나 코드를 수정하는 것은 매우 쉽습니다.

C++로 작성된 내 코드를 사용하려는 경우 Stuntman의 소스를 열람 할 수 있습니다. 파서 클래스 (CStunReader)와 STUN 메시지를 생성하는 클래스 (CStunWriter)가 있습니다.

+0

헤더 포맷을 구현하려고 시도한 후 RFC 5389가 STUN에 대해 자세히 설명하고 있음에 동의하지만, 적어도 제게는 내가 처리해야했던 가장 엉뚱한 문구 중 하나였습니다. 네트워크/비 네트워크 주문에서 바이너리/16 진수 표기법 사용하기 ... 따르고 이해하기가 매우 어렵습니다. – Laazik

+0

@Laazik - RFC는 종종 그렇게합니다. 이진 프로토콜은 종종 어렵습니다. 그리고 RFC 5389의 경우 일부 장소에서 lazily RFC 3489를 참조합니다. 그러나 내가 알아낼 수 있다면, 충분한 인내심과 시간을 가진 사람도 그렇게 할 수 있다고 생각합니다. – selbie

+0

저는 지난 15 년 동안 ETSI, ITU 등의 표준 및 프로토콜을 사용해 왔으며 열심히하고 있습니다. 그러나 "필드에는 네트워크 바이트 순서로 값 0xXYZ가 있어야합니다."라는 문구가 있습니다. -이 문장에는 많은 모호함이 있습니다. 그것은 RFC에 이미 네트워크 바이트 순서로 표시되어 있습니다. 처음에는 값을 가져 와서 순서를 변경했습니다 (내 해석에 따르면). 작동하지 않았습니다. 그래서 나는 아직도이 특정 장을 해석하기가 어렵고 더 잘될 수 있다고 생각한다. :). – Laazik