2014-11-10 6 views
0

개인 네트워크에서 실행되는 UDP 서버가 있습니다. 공용 IP를 통해 내 서버에 UDP 패킷을 보내는 NAT 이상의 장치가 있습니다. 나는 UDP 패킷을 받아 들일 수 있고 그것들을 파싱하고 페이로드, src와 dest 포트를 볼 수있다. 이제는 해당 장치에 ACK 메시지를 보내야하므로 IP 및 포트 번호를 캡처하고 UDP 패킷을 전송했습니다. 그러나 해당 장치에서 UDP 패킷을 볼 수 없었습니다.NAT를 통해 공용 IP를 통해 UDP 패킷을 보내는 방법은 무엇입니까?

제 질문은 내 장치가 NAT를 넘어서 IP 주소와 포트 번호가 NAT 또는 실제 장치입니까?

NAT를 통해 해당 장치로 UDP 패킷을 보내는 방법은 무엇입니까?

+0

이럴, 문제는 여기 오프 주제입니다. http://networkengineering.stackexchange.com/ –

+0

http://en.wikipedia.org/wiki/UDP_hole_punching에서 더 잘 어울립니다. – deviantfan

답변

1

제 질문은 내 장치가 NAT를 넘어서 IP 주소와 포트 번호가 NAT 또는 실제 장치입니까?

패킷에서 식별하는 IP 및 포트는 NAT가 클라이언트에 대한 매핑을 생성 한 것입니다. 간단히 말해서 장치가 연결된 NAT의 IP 및 포트입니다.

NAT를 통해 해당 장치로 UDP 패킷을 보내는 방법은 무엇입니까?

클라이언트에서받은 패킷에서 서버가 감지 한 IP와 포트에 대해 응답해야합니다. 더 명확하게 구현해야 함 UDP 홀 펀칭.

NAT를 사용하는 장치에 대한 연결과 관련된 네트워킹 문제를 먼저 이해해야합니다. 다양 함 NAT 통과의 경우UDP 펀치에 대해 RFC을 사용할 수 있습니다.

는 여기에 몇 가지 소스입니다 :

http://en.wikipedia.org/wiki/Network_address_translation

http://en.wikipedia.org/wiki/UDP_hole_punching

http://tools.ietf.org/html/rfc4787

https://tools.ietf.org/html/rfc5128