연결된 클라이언트를 확인하는 가장 안정적인 방법은 무엇입니까?

연결된 클라이언트를 확인하는 가장 안정적인 방법은 무엇입니까?

저는 Yocto를 사용하여 처음부터 개발한 임베디드 Linux 운영 체제를 가지고 있습니다. 이는 Windows XP/7 클라이언트와 통신합니다. 내장된 운영 체제는 DHCP 서버를 실행하고 클라이언트에 주소를 제공합니다. 문제는 클라이언트가 "잠겨" 있고 많은 표준 포트와 작업 수행 방법을 차단한다는 것입니다. 임베디드 시스템이 클라이언트의 존재를 감지하면 시작 스크립트가 테스트 시스템의 서버를 시작합니다. 그렇지 않으면 다른 운영 체제로 kexec합니다.시스템 부팅 시간을 크게 늘리지 않고 부팅 시(Linux에서) 이더넷을 통해 연결된 클라이언트의 존재를 감지하는 가장 좋은 방법은 무엇입니까?

내가 시도한 것과 작동하지 않는 것은 다음과 같습니다.

  1. ICMP 패킷은 클라이언트 측에서 차단되므로 기존 핑이 작동하지 않습니다.
  2. arping은 작동하지만(ARP 스캐닝이 포함된 nmap도) Windows 클라이언트는 "스마트"하고 전화 접속을 시도하므로 실제로 연결을 설정하는 데 20~25초가 소요됩니다. 이는 이상적으로는 5~5초 내에 허용됩니다. 10초 이내에 뭔가 감지되었습니다. 속도를 높이기 위해 서버 측에 설정할 수 있는 것이 있습니까? 항상 해당 파티션으로 먼저 부팅되므로 가장 빠른 솔루션이 가장 좋은 솔루션입니다.
  3. ifplugd, ethtool, netplugd 및 /sys/class/net/eth0/operstate 및 /sys/class/net/eth0/carrier 검색은 작동하지 않습니다. 임베디드 시스템의 이더넷 포트가 내부 스위치에 연결되어 있으므로 항상 " Up' 및 'Connect' 하드웨어 측면
  4. 향후 솔루션은 클라이언트에서 Bonjour를 사용하고 서버에서 Avahi를 사용하여 연결 없는 프로토콜을 사용할 수 있지만 구현하는 데 시간이 걸리고 클라이언트 소프트웨어에 추가하는 모든 작업으로 인해 임시 솔루션이 필요합니다. 승인을 받을 시간입니다.

다시 말하지만, 장치가 다른 회사에 의해 구성되고 잠겨 있기 때문에 클라이언트 측에서는 아무것도 할 수 없습니다. 그렇다면 클라이언트가 존재하는지 감지하기 위해 서버에서 또 무엇을 시도할 수 있습니까?

답변1

그래서 내부 스위치가 있다고 말씀하셨는데요. 이 스위치 관리에 액세스할 수 있습니까? I2C(내장형 스위치) 또는 SNMP를 통해?

내장된 운영 체제가 DHCP 서버를 실행하고 있음을 선언합니다. 클라이언트가 DHCP 요청을 하면 클라이언트가 존재하고 액세스할 수 있다는 것을 증명하지 않습니까?

"지능형"과 "전화 걸기"가 무슨 뜻인지 모르겠습니다. Windows 컴퓨터가 이더넷을 통해 통신하려면 ARP에 응답해야 합니다. 아르페지오는 지금까지 최고의 선택인 것 같습니다.

관련 정보