2016-09-29 2 views
0

다음과 같은 로컬 영역 네트워크가 있습니다 : network configuration.C# - 레이어 2 스위치에 연결된 모든 호스트를 검색하는 방법?

저는 C#으로 프로그램을 작성하고 있습니다. 이 소프트웨어는 모든 호스트에서 실행됩니다. 소프트웨어는 어떤 호스트가 자체 레이어 2 스위치에 연결되어 있는지 알아야합니다.이 소프트웨어는 LanParty 용이고 서버의 하드웨어와 소프트웨어가 변경되고 동일한 LAN이기 때문에 서버를 방해하지 않고이 작업을 수행하는 것이 매우 중요합니다.

모든 호스트의 위치를 ​​아는 것은 중요하지 않지만 동일한 스위치에 연결된 호스트를 알아두면됩니다.

예에서 "호스트 A"는 "호스트 C"및 "호스트 E"가 동일한 스위치에 연결되어 있고 다른 모든 호스트가 연결되어 있지 않다는 것을 알고 있습니다.

답변

1

스위치가 SNMP를 사용하는 경우 MAC 주소 테이블을 요청하고 어디에 연결되어 있는지 파악할 수 있습니다.

그들은이 같은 속임수에 의지 할 것없는 경우 :

  • 모든 호스트는
  • 모든 호스트
  • 지정 역할 사이의 통신을 설정 하나의 스위치에 연결되어 가정하자 3 개 임의의 호스트 : 보낸 사람, 수신기, 싱크
  • Mac을 선택 현재 일에 사용되는 주소는 아니다 전자 네트워크는
  • 수신기은 새로운 MAC 주소는 NIC를 구성하고 전송 한 패킷 싱크 (이 패킷이 지금 통과 모든 스위치가 알고있는 주소)
  • 다른 모든 호스트가 무차별 모드
  • 에 자신의 NIC를 설정하십시오 보낸 사람수신기의 새 주소를 학습하지 않은 스위치에 연결되어있는 경우
  • 보낸 사람수신기에 패킷을 전송 (그 스위치는 모든 포트에 패킷을 범람 할 것이다. 이러한 포트 중 하나 이상이 하나의 주소를 배우지 않은 다른 스위치에 연결되어있는 경우,이 스위치는 수신기가 아닌 다른 호스트가 패킷을 본다면

그래서,이 호스트 증명) 홍수 것 및 송신자각 수신기 싱크 사이의 직접적인 경로에 하지 않은 스위치에 접속된다.

은의 그 싱크, 수신기 및 패킷이 하나 개의 스위치에 연결되어 보지 못했다 모든 청취자, 보낸 사람과 다른 하나에 연결되어 보았는가 모든 청취자를 가정 해 봅시다. 네트워크 토폴로지를 파악할 수있는 충분한 정보를 얻을 때까지 (또는 단일 스위치의 첫 번째 가정을 포기하고 수용 할 때까지) 새로운 MAC 주소와 세 가지 역할의 새로운 할당으로 다시 시도하십시오.

관련 문제