[광범위하지 않음]네트워크 동작원리가 궁금합니다.
글쓴이: Geniys / 작성시간: 화, 2006/05/16 - 10:41오후
지금 궁금한게....
랜 카드는 1개 잡혀서 eth0로 인터페이스가 잡혀있고, 랜선은 뽑혀있습니다.
따라서 인터페이스는 lo, eth0 이렇게 2개 잡혀있습니다.
이때 ping을 외부 IP로 보내면 당연히 detination unreachable 라고 나오는데...
이때 패킷 분석 프로그램으로 보면
lo 인터페이스에 icmp 응답 패킷만 들어옵니다.
궁금점 1. 왜 응답 패킷만 들어오는가? 랜카드에서 브로드 케스팅하기위해서 인터페이스로 패킷을 보내야 하지 않는가?
궁금점 2. 외부로 보내려 하면 eth0를 사용하려 할텐데, 왜 에러 패킷은 lo로 들어오는가?
궁금점 3. lo는 네트워크 레이어 역할을 한다고 나와 있는 문서가 있는데.. 이 경우 하드웨어 드라이버도 없고 어떻게 처리가 되는것인가?
너무 궁금해서 뒤져보는데...
도무지 답이 없습니다.
Forums:
어쩌면 1. 왜 ICMP echo
어쩌면 1. 왜 ICMP echo request 패킷을 eth0에서 (혹은 lo에서라도) 캡쳐할 수 없는가 하는 건 커널 내에서 패킷 캡쳐가 이뤄지는 시점과 관계가 있습니다.
대략 네트워크 드라이버 수준과 네트워크 계층 사이에서 캡쳐가 이뤄집니다. 문제의 ICMP echo request 패킷은 적용 가능한 라우팅 규칙이 없거나 라우터의 MAC 주소가 ARP 캐시 안에 있지 않아서 드라이버 수준까지 보낼 수 없습니다. 따라서 캡쳐가 이뤄지는 지점까지 도달하지 못합니다. 이 경우 destination unreachable 메시지는 장비 자체가 스스로에게 보내는 것입니다. 앞에서 목적지가 도달 가능하지 않은 문제의 패킷이 어느 인터페이스로 나갈지 결정되지 않았으므로 unreachable 메시지를 eth0 등의 인터페이스를 통해 보내는 것보다는 lo 인터페이스를 통해 보내는 것이 적절합니다. 따라서 unreachable 메시지는 lo 인터페이스에서 캡쳐가 가능합니다.
어쩌면 2. 앞의 설명에 대강대강 섞여 있습니다. 문제의 패킷은 eth0라는 장치 수준까지 도달하지도 못했으며, 따라서 스스로에게 보내는 오류 패킷은 lo 인터페이스를 통해 전달됩니다.
어쩌면 3. 커널 소스를 가지고 계시다면 ~linux/drivers/net/loopback.c 파일을 살펴보실 수 있습니다. loopback 인터페이스를 위한 의사(pseudo) 드라이버입니다.
덧붙여. 실수로 중복 포스팅을 하신 경우 지울 글타래에서 "편집" 탭을 선택하신 후 아래쪽의 "지우기" 버튼을 가볍게 눌러주시면 됩니다. :)
----
$PWD `date`
$PWD `date`
댓글 달기