cmd에 가서 netstat -nr 을 치면 나오는 테이블입니다.
LAN을 벗어나 WAN으로 가고 MAN으로 가려면, 또는 멀리있는 컴퓨터와 통신을 하려면 수많은 라우터를 거치게됩니다. 이들은 어떻게 찾아가는 걸까요? 
저의 ip는 192.168.25.18 입니다.

IPv4경로 테이블에서 계산하는 방법은 간단합니다.
내가 '원하는 목적지의 ip 주소'와 저기 나오는 테이블의 '네트워크 마스크' 와 AND 연산을 하여서
그 계산값이 '네트워크 대상'값과 일치하면 안내를 받으면 됩니다.

계산을 맨 아래부터 시작합니다. 
만약 제가 192.168.25.22와 통신을 하고싶다면 어떻게 해야할까요
맨 아래부터 계산을 합니다.

192.168.25.22 와 255.255.255.255의 2진수 계산값은 192.168.25.22 입니다. 
255.255.255.255가 아니므로 일치하지 않습니다. 위로올라가서

192.168.25.22 와 240.0.0.0의 AND 값은 224.0.0.0이 아니고
192.0.0.0 입니다. 역시 일치하지 않습니다.






결국 일치하는 값을 찾을 수있는데 바로

255.255.255.0과 AND연산을 하고 '네트워크 대상'값이 192.168.25.0인

이것이죠. 게이트웨이의 값이 '연결됨'이므로 다이렉트로 연결되었다는 뜻입니다.
같은 LAN라는 뜻이죠.

이렇게 되면 밖으로 나가는 라우터를 거칠 필요 없이 대상의 MAC만 알면 통신이 가능합니다.
같은 LAN상에 있기 때문이죠.

MAC은 어떻게 아냐구요?
ARP Cache Table을 확인해서...없으면 ARP를 보내고... (전에 포스팅 했습니다.)

하나 더해봐서 만약 1.2.3.4와 통신을 하고싶다면 어떻게 해야 할까요.
아마 계산을 해보면 맨위에있는
0.0.0.0 / 0.0.0.0 과 일치하겠네요.
이 값을 디폴트 라우팅 값이라고 합니다.
테이블 맨 위에 있기때문에 마지막에 연산해서 아무것도 일치하지 않는경우 
옆에 써져있는 게이트웨이 주소로 가면 되는겁니다.

그럼 우리는 1.2.3.4와 통신하고 싶으면 게이트웨이 192.168.25.1로 우선 안내를 받죠.
그렇게 나가면 안내를 받은 곳에서 또 테이블을 찾아서 다른곳으로 안내를 받고 
최종적으로는 1.2.3.4에 도착할 수 있는 겁니다.


+ Recent posts