나는 이것을 본다질문, 라우팅 테이블에는 다음이 포함됩니다.
192.168.1.1/32 link#4 UCS 2 0 en0
openwrt.lan 46:94:fc:63:fc:7 UHLWIir 11 3610 en0 1200
192.168.1.125/32 link#4 UCS 2 0 en0
서브넷 마스크가 있다는 것은 무엇을 의미하며 /32
, 이 경우 네트워크 ID는 무엇입니까? 위의 호스트를 단일 호스트로 간주하는 경우 네트워크 ID 없이 호스트가 존재할 수 있습니까?
내가 아는 한, 네트워크 ID와 해당 네트워크의 호스트에 할당된 IP 주소는 서로 다른 것입니다. 192.168.0.0은 네트워크 ID이고 해당 서브넷이 255.255.255.0인 경우 이 네트워크의 호스트는 192.168.0.1 - 192.168.0.254일 수 있습니다. 이 경우 네트워크 ID 없이 어떻게 호스트가 존재할 수 있습니까?
답변1
여기에는 약간의 혼란이 있습니다. /32는 (하위)네트워크의 크기를 나타내는 것이 아니라 특정 라우팅 테이블 항목이 적용되는 주소 범위를 나타냅니다. 일반적으로 둘은 동일하지만(네트워크나 서브넷을 하나의 단위로 라우팅하기 때문입니다. 그렇죠?) macOS는 동일한 로컬 네트워크에 있는 다른 호스트에 대해 약간 다른 작업을 수행합니다. 당신이 인용한 것 앞에 몇 줄을 추가하겠습니다:
Destination Gateway Flags Refs Use Netif Expire
default openwrt.lan UGSc 10 0 en0
...
192.168.1 link#4 UCS 2 0 en0
192.168.1.1/32 link#4 UCS 2 0 en0
openwrt.lan 46:94:fc:63:fc:7 UHLWIir 11 3610 en0 1200
192.168.1.125/32 link#4 UCS 2 0 en0
192.168.1(192.168.1.0/24의 약어)은 en0(link#4라고도 함)을 통해 라우팅됩니다. 게이트웨이를 통하지 않고 인터페이스 자체를 통해서만 가능합니다. 이는 Mac 자체가 연결된 네트워크입니다. 192.168.1.1 및 192.168.1.125는 모두 특정 주소입니다.해당 네트워크 범위 내에서. 해당 /32 항목을 192.168.1 항목과 비교하면 기본적으로 중복된 항목입니다. 그들은 전체 네트워크 범위 대신 특정 주소에 대해서만 똑같은 말을 합니다.
macOS가 이러한 중복된 주소별 항목을 생성하는 이유는 모르겠지만 아마도 위 목록에서 볼 수 있는 또 다른 항목과 관련이 있을 것입니다. macOS는 라우팅 테이블에 ARP 테이블 항목을 나열합니다. 위의 "openwrt.lan" 항목(실제로는 192.168.1.1이며 번호가 아닌 이름으로만 나열됨)은 en0을 통해 MAC 주소 46:94:fc:63:fc:7로 라우팅된다는 것을 나타냅니다. .
따라서 경로 목록에 표시되는 것은 실제 네트워크 경로(예: "기본" 및 192.168.1 항목)와 호스트별 항목(/32 및 MAC 대상 항목)이 혼합된 것입니다.
답변2
/32
주소 지정
일반적으로 말하면 /32
네트워크에 IPv4 주소가 하나만 있고 모든 트래픽이 해당 IPv4 주소가 있는 장치와 기본 게이트웨이 간에 직접 이동함을 의미합니다. 장치는 로컬 서브넷의 다른 장치와 통신할 수 없습니다.
내가 본 데에는 몇 가지 가능한 이유가 있습니다. 그것은 수:
- 각 사이트가 특정 IPv4 주소에 바인딩되어 여러 사이트를 제공하는 웹 서버
- ㅏ루프백 주소테스트에 사용됩니다.
- 네트워크 보안 기술: /32 넷마스크가 있는 시스템을 서브넷의 나머지 시스템으로부터 격리합니다. 이는 시스템의 정적 경로에 의해 명시적으로 정의된 대상으로의 트래픽만 허용합니다. 예를 들어 시스템을 폐기하는 데 사용될 수 있습니다.
네트워크 ID
그만큼네트워크 IDIP 주소의 일부는 서브넷 마스크에 의해 결정됩니다. 예를 들어:
- IPv4
/24
네트워크의 서브넷 마스크는 입니다1111.1111.1111.0000
. 즉, 처음 3옥텟은 네트워크 ID이고 마지막 옥텟은 호스트 ID 할당에 사용됩니다(256개의 사용 가능한 ID, 일반적으로 일부는 예약되어 있음). - IPv4
/16
네트워크의 서브넷 마스크는 입니다1111.1111.0000.0000
. 즉, 처음 2옥텟은 네트워크 ID이고 마지막 옥텟은 호스트 ID 할당에 사용됩니다(65536개의 사용 가능한 ID, 일반적으로 일부는 예약되어 있음).
의 경우 /32
주소가 네트워크 ID이자 호스트 ID이기 때문에 이는 적용되지 않습니다. /31
주소는 예약된 0번째 주소가 없는 모든 호스트 ID이기도 합니다.
답변3
답변4
당신이 보고 있는 것은 서브넷 마스크가 아닙니다.. 이는 라우팅 테이블의 접두사 길이를 나타냅니다.
라우팅 테이블의 순진한 구현은 가능한 모든 IP 주소를 나열하므로 어떤 IP 주소가 주어지든 정확한 IP 주소를 조회하고 이와 관련된 라우팅 정보²를 다시 얻을 수 있습니다.
분명히 일종의 압축이 필요합니다. 라우팅 정보의 특성상 인접한 주소는 동일한 정보를 사용할 가능성이 높으므로 다음과 같은 형식을 사용할 수 있습니다.기수 나무이를 함께 압축합니다. 간략하게 작동 방식은 다음과 같습니다.
0-7의 숫자가 주어지면 다음과 같이 이진수로 표현할 수 있습니다.
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
이제 두 개의 라우팅 테이블 항목(주소 0과 1에 대한 항목, 주소 2와 3에 대한 항목)이 있는 경우 이를 공유하는 이진 접두사 아래에 저장할 수 있습니다. .
접두어 끝 뒤의 "사용되지 않은" 비트를 표시하기 위해 a를 사용하는 경우 00.
범위는 0-1이고
01.
범위는 2-3입니다.
이를 나타내는 표준 방법은 범위에서 가장 낮은 숫자와 접두사의 길이를 사용하는 것입니다. 이 경우 이는 0/2
0-1 범위 및 2/2
2-3 범위에 대한 것입니다.
하지만 주소 6에 대한 라우팅 정보를 조회하려면 어떻게 해야 할까요? 일반적으로 우리는 접두사를 사용하여 라우팅 정보의 "기본" 세트를 추가합니다. 0/0
즉, 모든 비트와 일치하고 검색할 때 가장 구체적인 정보, 즉 가장 긴 일치 접두사를 찾습니다. 방금 설명한 전체 라우팅 테이블은 다음과 같습니다.
0/2 00. Matches addresses 1 and 2.
2/2 01. Matches addresses 3 and 4.
0/0 ... Matches any address.
서브넷 마스크도 같은 방식으로 접두사를 사용하여 설명할 수 있으므로 이 방식이 자주 사용됩니다. 하지만 이 계획 때문에~할 수 있다서브넷을 설명하는 데 사용된다고 해서 사용된다는 의미는 아닙니다.오직서브넷을 설명하기 위한 것입니다.
서브넷이 아닌 라우팅 테이블 접두사의 예로 두 개의 네트워크 인터페이스가 동일한 네트워크에 연결되어 있을 수 있습니다(예: 192.168.2.0/24). (이는 두 개의 개별 네트워크 카드를 각각 자체 케이블로 동일한 스위치에 연결하여 구현할 수 있습니다.) 그런 다음 두 개의 라우팅 테이블 항목을 사용하여 두 인터페이스에서 나가는 트래픽의 "균형을 조정"하도록 라우팅 테이블을 설정할 수 있습니다.
192.168.2.0/25 eth0 # range ...2.0 to ...2.127
192.168.2.128/25 eth1 # range ...2.128 to ...2.255
이렇게 하면 해당 네트워크의 주소 0-127로 향하는 패킷이 전송되지만 eth0
해당 네트워크의 주소 128-255로 향하는 패킷은 출력됩니다 eth1
. 이는 이 작업을 수행하는 나쁜 방법이지만(여기서는 다루지 않기 때문에) 라우팅 접두사와 네트워크 주소가 어떻게 일치하지 않을 수 있는지 보여줍니다.
¹ Wikipedia 기사라우팅 테이블불행히도 접두사 필드에는 "네트워크 ID"가 포함되어 있습니다. 라우팅 테이블의 특정 특정 구현에서는 이것이 사실일 수 있지만, 귀하가 제공한 예와 이 답변의 뒷부분에 나오는 예에서 볼 수 있듯이 일반적인 경우 항상 네트워크 ID는 아닙니다.
² 이 라우팅 정보에는 일반적으로 사용할 인터페이스, 해당 인터페이스에 연결할 라우터, 해당 인터페이스를 통해 직접 연결할 수 있는 호스트의 MAC 주소, 호스트가 연결될 경우 패킷에 입력해야 하는 소스 주소 등이 포함됩니다. 여러 소스 주소, 보안 정보 등이 있습니다. 거기에는 엄청나게 다양한 데이터가 있을 수 있지만, 그 중 어떤 것도 이 논의의 목적에 중요하지 않습니다. 왜냐하면 우리는 데이터 세트 자체에 무엇이 있는지가 아니라 주어진 주소에 대해 올바른 데이터 세트를 찾는 방법에 대해서만 이야기하고 있기 때문입니다. .