2009-05-27 2 views
1

나는 ipv4를 사용하여 작성된 약간의 udp 예제 프로그램을 가지고있다. ipv6에 대한 코드를 변경하면 ipv4 주소로 리스너를 사용하는 사람과 계속 통신 할 수 있습니까? 내가은 ipv6과 ipv6 역 호환이 가능합니까?

http://ou800doc.caldera.com/en/SDK_netapi/sockC.PortIPv4appIPv6.html

에 포팅 예제를 찾고 있었어요 잘 모르겠어요 단순히 내가 결투 스택 모드로 작성해야 할 것입니다 경우 근무 또는 보장 할 코드를 변경하는 경우.

답변

7

예 아니오 IPv6에는 완전히 다른 주소 지정이 포함되어 있으므로 대체 헤더 및 구조체 크기를 사용하도록 앱을 다시 코딩해야합니다.

그러나 IPv4 주소 범위는 IPv6에서 사용할 수 있으며 구문은 표준 주소 (예 : :: 10.11.12.13) 앞에 두 개의 콜론을 추가하는 것입니다. embed IPv4 addresses within IPv6 packets도 가능합니다.

+1

주소 범위는 IPv4 주소 만 알면 컴퓨터에 IPv6 패킷을 보내려는 경우에만 유용합니다. 그러나 다른 컴퓨터가 IPv6를 이해하지 못하면 :: 10.11.12.13에 대한 v6 패킷은 여전히 ​​손실됩니다. – MSalters

+5

올바른 구문은 실제로':: ffff : n.n.n.n'입니다. IPv4 호환 IPv6 주소는 더 이상 사용되지 않으며 어쨌든 IPv4 및 IPv6 응용 프로그램간에 통신하는 데 사용할 수 없습니다. – Omnifarious

+0

귀하의 의견에 따라 질문을 편집했습니다. –

1

IPv4와 IPv6은 본질적으로 서로 호환되지 않습니다.
몇 가지 기본적인 이유 :

  • 주소 공간이 완전히 다릅니다 (IPv6를, 128 개 비트 주소가 IPv4의 32 개 비트 주소가)
  • 에서 IPv6의 프로토콜 헤더에서 IPv4의 프로토콜 헤더와 같은 아무것도 보지 않는다. IPv4로 IPv6 패킷을 구문 분석하려고하면 넌센스가 나옵니다.

명백한 결과는 IPv6 소켓을 열면 IPv4 소켓을 사용하여 수신 대기가 불가능하다는 것입니다.

+1

이것은 정확하지만 오해의 소지가 있습니다. IPv6 응용 프로그램은 여러 가지 방법으로 IPv4 전용 호스트와 통신 할 수 있습니다. 그 반대는 사실이 아닙니다. IPv6 소켓에서 IPv4 응용 프로그램의 연결을 수신 할 수도 있습니다. – Omnifarious

+0

이 답변은 잘못된 것을 강조합니다. –

5

네트워크의 IPv4/IPv6 gateway 도움 없이는 통신이 게이트웨이 주소 변환에 의해 도입 된 typical problems에 의해 제한됩니다. 이와 같은 의사 결정에 직면 한 프로그래머를위한 전통적 조언은 IPv4와 IPv6를 동시에 지원하는 것이 좋습니다.

관련 문제