2013-10-07 2 views
0

순수 IPv6 네트워크가 있다고 가정 해 보겠습니다. 소켓 응용 프로그램은 getaddrinfo를 사용하여 호스트 이름으로 HOST1을 찾고 첫 번째 응답으로 HOST1의 IP 주소 중 하나를 가져옵니다. 반환 된 주소를 왜 루프해야합니까? 라우터 또는 HOST1의 다른 네트워크 인터페이스를 통해 HOST1에 대한 대체 경로를 찾기 위해 HOST1의 TCP/IP 스택 또는 로컬 TCP/IP 스택 의 책임이 있습니까?왜 addrinfo 루프가 필요합니까?

이름으로 알려진 호스트에 대한 경로를 찾는 것이 소켓 응용 프로그램이 아닌 컴퓨터 네트워크 인프라의 가장 기본적인 기능이라고 생각할 것입니다.

답변

3

getaddrinfo()는 실제로 다른 호스트 인 이름의 주소를 제공 할 수 있으므로 하나의 호스트가 다운 된 경우에도 서비스에 액세스 할 수 있습니다.

인터넷은 꽤 바보입니다. 오래된 통신 네트워크에서 시도한 것처럼 지능적인 네트워크는 아닙니다. 인터넷은 기능을 가장자리로 밀어 넣고 라우터는 패킷의 IP 주소를보고 가능한 최상의 파이프를 보냅니다. 그러면 IP 주소로가는 경로가 끊어지는 문제가 라우터에서 대체 경로로 전송됩니다.

그러나 에지, 소켓 응용 프로그램은 패킷을 보내려는 IP 주소를 결정하고 DNS, LDAP를 쿼리하는 방법으로 패킷을 보낼 IP 주소를 파악할지 여부를 결정합니다. , 설정 파일 또는 무엇이든, 네트워크의 걱정거리가 아닙니다.

이름을 해석하면 동일한 서비스를 제공하는 전세계 다른 호스트에 속한 다른 IP 주소를 제공 할 수 있으므로 IPv4 또는 IPv6을 통해 연결할 수 있으므로 getaddrinfo() 결과를 둘러 볼 수 있습니다.

0

아니요, 가장 기본적인 기능은 패킷을 대상 호스트에 전달하는 것입니다. 인터넷 디자인은 라우터가 가장 기본적인 기능에 초점을 맞추고 엔드 포인트를 가능한 한 많이 수행하도록하는 것을 목표로합니다.

따라서 비트를 끝점에 남겨 둘 수 있습니까? 나는 그것이 엔드 포인트를위한 추가 작업이 아니며 라우터에 상당한 추가 작업이 될 것이므로 예라고 생각합니다.

어쨌든 v4 및 v6을 지원하기 위해 여러 주소를 시도하는 코드가 필요합니다. 그리고 라우터는 어떤 주소 세트가 호스트를 구성하는지 추적해야합니다 (어떤 "호스트"가 의미하든).

0

이름 확인은 라우팅과 다른 계층에 속합니다. 전문 용어로, 귀하의 질문은 라우터가 비효율적 인 응용 프로그램 계층 게이트웨이라고 가정합니다. TCP/IP 네트워킹에 대한 개요를 제공하는 몇 가지 문헌으로 시작하는 것이 좋습니다.