중화사전망 - 서예자전 - 사전 트리 라우팅
사전 트리 라우팅
인터넷의 모든 패킷 전달은 대상 호스트가 있는 네트워크를 기반으로 하지만 대부분의 경우 특정 호스트에 대한 경로를 나타낼 수 있습니다. 이를 특정 호스트 라우팅이라고 합니다. 특정 호스트 라우팅을 사용하면 네트워크 직원이 네트워크를 쉽게 관리 및 제어하고 네트워크를 테스트할 수 있습니다.
라우터는 또한 기본 경로를 사용하여 라우팅 테이블에 사용되는 공간과 라우팅 테이블을 검색하는 데 필요한 시간을 줄일 수 있습니다.
라우터가 전달할 데이터를 수신할 때 라우팅 테이블에서 다음 홉 라우터의 IP 주소를 가져오면 해당 주소가 IP 데이터그램에 기록되지 않고 데이터 링크 계층의 네트워크 인터페이스 소프트웨어로 전송됩니다. 네트워크 인터페이스 소프트웨어는 다음 홉을 담당하는 라우터의 IP 주소를 하드웨어 주소 (ARP 를 사용해야 함) 로 변환하고 MAC 프레임의 헤더에 하드웨어 주소를 기록한 다음 이 하드웨어 주소를 기준으로 다음 홉 라우터를 찾습니다. 일련의 데이터를 전송할 때 위에서 언급한 조회 라우팅 테이블을 반복하고, ARP 를 사용하여 하드웨어 주소를 얻고, MAC 주소 헤더에 하드웨어 주소를 쓰는 프로세스를 반복하면 오버헤드가 발생한다는 것을 알 수 있습니다.
위의 사항에 따라 패킷 전달 알고리즘을 제안합니다.
여기서 강조해야 할 점은 라우팅 테이블이 네트워크에서 패킷으로의 전체 경로 (즉, 먼저 어떤 라우터를 통과한 다음 어떤 라우터를 통과하는 등) 를 나타내지 않는다는 것입니다. 라우팅 테이블은 네트워크에 도달하려면 먼저 라우터 (다음 라우터) 에 도달한 다음 다음 다음 홉 라우터에 도착한 후 라우팅 테이블을 계속 검색하여 다음에 어떤 라우터에 도달해야 하는지 확인해야 함을 나타냅니다. 이런 검색은 결국 목적지 네트워크에 도달할 때까지 단계적으로 진행된다.
서브넷을 선택해야 하는 이유 ?
이러한 문제를 해결하기 위해 1985 에서 서브넷 번호 필드가 도입되어 보조 IP 주소가 3 차 IP 주소로 변경되었습니다. 이 방법을 서브넷 이라고 합니다.
서브넷의 기본 아이디어는 다음과 같습니다.
서브넷 사용 사례
위 그림과 같이 한 회사는 145. 13.0.0 (네트워크 번호는145./kloc) 의 클래스 b IP 주소를 가지고 있습니다
이제 네트워크는 세 글자망으로 나뉘는데, 서브넷 번호가 8 비트를 차지한다고 가정하면 호스트 번호는 16-8=8 비트이고, 세 글자망은 각각145.13.3 으로 나뉜다 145. 13.0.0 에서 라우터 데이터를 받으면 라우터는 대상 주소를 기준으로 데이터그램을 해당 서브넷으로 변환합니다.
간단히 말해서, 서브넷이 없을 때 IP 주소는 2 단계 구조입니다. 서브넷을 나누면 IP 주소가 3 단계 구조가 됩니다. 서브넷은 IP 주소의 호스트 번호만 세분화하고 IP 주소의 원래 네트워크 번호는 변경하지 않습니다.
대상 주소가145.13.3.10 인 IP 데이터그램이 라우터 R 1 에 도착했다고 가정하면 라우터는 어떻게 전달합니까
IP 데이터그램의 헤더에서 소스 호스트의 대상 호스트가 연결된 네트워크가 서브넷으로 나뉘어지는지 알 수 없습니다. 이는 32 비트 IP 주소 자체와 데이터그램의 헤더에는 서브넷 구분에 대한 정보가 포함되어 있지 않기 때문입니다. 따라서 서브넷 마스크를 사용하는 또 다른 방법을 찾아야 합니다.
레벨 3 IP 주소의 서브넷 마스크와 수신된 대상 주소의 IP 주소를 비트 단위로 AND 연산하면 즉시 네트워크 주소를 얻을 수 있으며 나머지 단계는 패킷 처리를 위해 라우터로 넘겨집니다.
서브넷 마스크 사용의 장점은 네트워크가 서브넷을 나누는지 여부에 관계없이 서브넷 마스크와 IP 주소가 비트로 AND 연산되는 한 즉시 네트워크 주소를 얻을 수 있다는 것입니다. 이렇게 하면 라우터가 들어오는 패킷을 처리할 때도 마찬가지입니다.
서브넷을 나누지 않을 때 서브넷 마스크를 사용해야 하는 이유는 무엇입니까? 이는 라우팅 테이블을 쉽게 찾을 수 있도록 하기 위한 것입니다. 이제 인터넷은 모든 네트워크가 서브넷 마스크를 사용해야 한다고 규정하고 있으며 라우터의 라우팅 테이블에 서브넷 마스크 열이 있어야 합니다. 네트워크가 서브넷을 나누지 않은 경우 네트워크의 서브넷 마스크는 기본 서브넷 마스크이고 기본 서브넷 마스크의 1 위치는 IP 주소의 net-id 필드에 해당합니다. 따라서 기본 서브넷 마스크와 비트별로 서브넷을 나누지 않는 IP 주소를 사용하는 경우 해당 IP 주소의 네트워크 주소를 얻을 수 있어야 주소의 범주 비트를 찾지 않고도 어떤 IP 주소인지 알 수 있습니다. 분명히:
그림 4-2 1 은 세 가지 IP 주소의 네트워크 주소와 해당 기본 서브넷 마스크를 보여줍니다.
서브넷 마스크는 네트워크 또는 서브넷의 중요한 속성입니다. RFC950 이 인터넷 표준이 되면 인접 라우터와 라우팅 정보를 교환할 때 라우터는 인접 라우터에 네트워크 (또는 서브넷) 의 서브넷 마스크를 알려야 합니다. 라우터 라우팅 테이블의 각 항목에 대해 대상 네트워크 주소 외에 네트워크의 서브넷 마스크도 제공해야 합니다. 라우터가 두 서브넷에 연결되면 두 개의 네트워크 주소와 두 개의 서브넷 마스크가 있습니다.
구현 사례 4-2:
알려진 IP 주소는141.14.72.24 이고 서브넷 마스크는 255.255. 192.0 입니다 네트워크 주소 찾기:
해결책: 255.255. 192.0 의 바이너리:1111/kloc
Ip141.14.72.24 바이너리:11/;
00000000
IP 주소 바이너리와 서브넷 마스크 바이너리의 AND 연산은111111/kloc-0 입니다
즉 네트워크 IP 는141.14.64.0 입니다.
서브넷을 나누는 경우 패킷 전달 알고리즘을 변경해야 합니다. 서브넷을 사용한 후 라우팅 테이블에는 다음이 포함되어야 합니다.
서브넷의 경우 라우터가 패킷을 전달하는 알고리즘은 다음과 같습니다.
구현 사례 4-4:
그림 4-24 에는 세 개의 단어 네트워크, 두 개의 라우터 및 라우터 R 1 의 부분 라우팅 테이블이 있습니다. 이제 소스 호스트 H 1 타겟 호스트 H2 로 패킷을 보냅니다. R 1 H 1 H2 로 전송된 패킷을 받은 후 라우팅 테이블을 확인하는 프로세스에 대해 논의합니다.
솔루션:
소스 호스트 H 1 대상 호스트 H2 로 전송된 패킷의 대상 주소는 128.30.33. 138 입니다.
소스 호스트 H 1 및 해당 서브넷의 서브넷 마스크 255.255. 128 및 H2 의 IP 주소 128 은 128 을 얻습니다. 이는 호스트 H2 와 호스트 H 1 이 같은 네트워크 세그먼트에 없기 때문에 H 1 이 패킷을 H2 로 직접 전송할 수 없음을 의미합니다. 서브넷의 기본 경로 R 1 으로 전달되어야 하며 R 1 에 의해 전달되어야 합니다.
이 패킷을 받으면 라우팅 테이블은 라우팅 테이블에서 행별로 일치하고 검색됩니다.
R 1 라우팅 테이블의 첫 번째 줄을 먼저 살펴보십시오. 이 줄의 서브넷 마스크 255.255.255. 128 을 사용하여 H2IP 주소와 상호 작용하여128.30 을 얻습니다. 그래서 너는 계속 찾지 않아도 된다. R 1 인터페이스 1 에서 호스트 H2 로 패킷을 직접 전송 (모두 하나의 서브넷에 있음).
서브넷을 나누는 네트워크에서 여러 가지 다른 서브넷 마스크를 사용할 수 있습니다. VLSM (variable length subnet masking) 을 사용하면 IP 주소 자원의 활용도를 더욱 높일 수 있습니다. VLSM 을 기반으로 미분류 컴파일 방법을 더 연구했다. 공식 이름은 CIDR (classless domain routing) 입니다.
CIDR 에는 두 가지 주요 기능이 있습니다.
CIDR 은 또한 IP 주소 뒤에 슬래시/를 추가한 다음 네트워크 접두사가 차지하는 비트 수인 슬래시 기호를 사용합니다. 예를 들어 IP 주소 128. 14.35.7/20 은 CIDR 주소 캐시의 주소이며, 여기서 처음 20 자리는 네트워크 접두사이고 그 뒤에1이 옵니다 그림과 같이:
물론 모든 호스트 번호가 0 이고 모든 주소가 1 인 주소는 일반적으로 사용되지 않습니다. 이 주소 블록 * * * 에는 12 주소가 2 개 있습니다. 주소 블록에서 가장 작은 주소와 네트워크 접두사를 사용하여 이 주소가 빠르다는 것을 나타낼 수 있습니다. 예를 들어 위의 주소 블록은 128. 14.32.0/20 으로 쓸 수 있습니다.
CIDR 은 라우팅을 용이하게 하기 위해 32 비트 주소 마스크를 사용합니다. 주소 마스크는 일련의 1 과 일련의 0 으로 구성되며 1 의 숫자는 네트워크 접두사 수입니다. CIDR 은 서브넷을 사용하지 않지만 CIDR 에서 사용하는 주소 마스크를 서브넷 마스크라고 합니다. 사선 표기법에서 사선 뒤의 숫자는 1 의 숫자입니다. 예를 들어 /20 주소의 빠른 주소 마스크는1111111입니다 사선 표기법에서 사선 뒤의 숫자는 주소 마스크의 숫자 1 입니다.
슬래시 기호의 또 다른 장점은 IP 주소뿐만 아니라 몇 가지 중요한 정보를 제공할 수 있다는 것입니다. 다음 예를 들어 보겠습니다.
예를 들어192.199.170.82/27 의 주소는 IP 주소가192./kloc 임을 의미하는 것이 아닙니다 이 주소 블록의 최소 주소는192.199.170.64 이고 최대 주소는192.644 입니다 95. 주소 마스크에서 1 과 0 의 경계가 주소에 나타나는 바이트를 찾아 현재 네 번째 바이트이므로 이 바이트의 10 진수 82:82 의 이진수를 010/kloc-0 으로 표시하기만 하면 됩니다 0 100000 입니다. 빠른 주소가 1 92.199.170.64 인 최소 주소를 찾아 마지막 5 자리를/로 설정합니다 10 진수에서 95 와 같습니다. 주소 블록에서 가장 큰 주소:192.199.438+070.95 를 찾습니다.
CICR 주소 블록에는 많은 주소가 있기 때문에 CIDR 주소 블록은 라우팅 테이블에서 대상 네트워크를 찾는 데 사용됩니다. 이러한 주소 집계를 경로 집계라고도 하며 라우팅 테이블의 한 항목이 원래 기존 분류 주소의 많은 경로를 나타낼 수 있도록 합니다. 하이퍼넷분할이라고도 하는 라우팅 집계는 라우터 간 라우팅 정보 교환을 줄여 인터넷 전체의 성능을 향상시키는 데 도움이 됩니다.
각 CIDR 주소 블록의 주소 수는 2 의 정수 제곱이어야 합니다. 이것이 바로 하이퍼네트워크를 구축하는 소스입니다.
네트워크 접두사가 짧을수록 주소 블록에 더 많은 주소가 포함되는 반면, 3 차 구조의 IP 주소에서는 서브넷이 네트워크 접두사를 길게 만듭니다.
CIDR 을 사용할 경우 IP 주소는 네트워크 접두사와 호스트 번호로 구성된 네트워크 접두사의 표현으로 인해 라우팅 테이블의 항목이 그에 따라 변경되어야 합니다. 이 시점에서 각 항목은 네트워크 접두사와 다음 홉 주소로 구성되지만 라우팅 테이블을 찾을 때 여러 일치 결과를 얻을 수 있으므로 한 가지 문제가 발생합니다. 이러한 일치 결과에서 어떤 경로를 선택해야 합니까?
정답은 일치하는 결과에서 가장 긴 네트워크 접두사를 가진 경로를 선택해야 한다는 것입니다. 이를 긴 접두사 일치라고 합니다. 네트워크 접두사가 길수록 주소 블록이 작기 때문에 경로가 구체적일수록 가장 긴 접두사 일치를 가장 긴 일치 또는 가장 좋은 일치라고도 합니다.
CIDR 을 사용한 후 가장 긴 접두어 일치를 찾는 것은 매우 복잡합니다. 라우팅 테이블의 항목 수가 많은 경우 라우팅 테이블의 평균 검색 시간을 줄이는 방법은 매우 중요한 문제가 됩니다. 현재 일반적으로 사용되는 것은 이원 트리인데, 이것은 구조적인 특수한 나무이다. IP 주소의 왼쪽에서 오른쪽으로 비트 값에 따라 루트 노드에서 하위로 확장되는 경로가 결정되며 이진 trie 의 각 경로는 라우팅 테이블을 나타냅니다.
그림 4-26 은 다이트리 단서의 구조를 보여 주며, 그림에는 5 개의 IP 주소가 나와 있습니다. 이진 단서의 구조를 단순화하기 위해 먼저 각 IP 주소에 해당하는 고유 접두사를 찾을 수 있습니다. 고유 접두사는 테이블의 모든 IP 주소 간에 고유하므로 이러한 고유 접두사를 사용하여 이진 단서를 구성할 수 있습니다. 검색할 때 고유 접두사와 일치하는 한.
다이트리의 루트 노드는 위에서 아래로 최대 32 레벨까지 깊이가 있으며 각 계층은 IP 주소 중 하나에 해당합니다.