이더넷이 통신에 MAC 주소를 사용하므로 장치에 IP 주소가없고 MAC 주소 만있는 이더넷 네트워크를 만들 수 있습니까?
모든 소프트웨어를 처음부터 작성했다면 확실히 할 수 있습니다. 소프트웨어가 해당 프로그램에 해당하는 IP 주소를 받아 들일 수있는 곳이라면 어디에서나 MAC 주소를 받도록하십시오. 모든 시스템 호출을 사용하여 IP 주소 대신 원시 이더넷 패킷을 보내면 작동하지만 큰 번거 로움이 될 것입니다.
일반적으로 네트워크의 MAC 주소는 어떤 패턴도 따르지 않습니다. 제조업체가 하드웨어에 태 웁니다. 그들은 길고 부피가 크다. 지금은 C8-60-00-CA-4B-9A입니다. 내 옆의 컴퓨터는 00-40-F4-48-1B-88입니다.
머신이 서로 대화 할 수 있도록하기 위해 각 머신에 네트워크의 다른 모든 머신의 모든 MAC 주소에 대한 하드 코딩 된 목록을 제공하여 패킷을 보낼 위치를 알 수 있습니다. 이것은 오류가 발생하기 쉬운 많은 오류이며 네트워킹 하드웨어를 변경할 때마다 새로운 MAC 주소를 반영하도록 모든 목록을 변경해야합니다.
이는 매우 번거로운 일이므로 네트워크의 컴퓨터가 브로드 캐스트 패킷을 사용하여 서로의 MAC 주소를 자동으로 검색하는 방법을 찾게 될 것입니다. 그런 다음 의미있는 주소로 자신을 식별 할 수있는 방법을 제공하므로 "telnet C8-60-00-CA-4B-9A"와 같은 명령을 입력해야합니다.
이것이 정확히 IP가하는 것임이 밝혀졌습니다. MAC 주소를 하드 코딩하는 대신 의미있는 숫자를 사용하여 네트워크의 호스트를 처리하는 방법입니다. IP 위에 DNS를 추가하면 "telnet webserver"와 같은 명령을 입력 할 수 있습니다.
이더넷이 IP 주소를 사용하여 메시지를 보낼 수 없습니까? 나는 그것이해야한다고 말하지 않고 단지 그렇게 할 수 있는지 묻고 있습니다.
MAC 주소는 6 바이트의 정보이고 IP 주소는 4 바이트에 불과하므로 어떤 종류의 1 대 1 매핑도 수행 할 수 없습니다. IP 주소 (네트워크의 다른 호스트와 통신하려는 소프트웨어에서 제공)에서 MAC 주소 (패킷에 넣을)를 찾는 방법이 필요합니다.
이를 수행하는 한 가지 (하드 코어) 방법은 네트워크의 모든 시스템에 들어가서 상위 2 바이트를 0 (또는 동일한 다른 고정 숫자)으로 만들어 하드웨어 MAC 주소를 IP 주소처럼 보이도록 변경하는 것입니다. 네트워크에있는 모든 컴퓨터에 대해) 아래 4 바이트를 네트워크에서 원하는 "IP 주소"로 설정하십시오. (대부분의 네트워크 카드를 사용하면 공급 업체 할당 MAC 주소를 입력하고 수정할 수 있습니다)
이 기능을 실제로 사용하려면 다음으로이 시스템을 실제로 사용하기 위해 네트워킹 스택의 코드를 해킹해야합니다. 기본적으로 ARP와 관련된 모든 것을 제거합니다 (IP가 IP 주소를 MAC 주소로 변환하는 데 사용하는 방법). IP 헤더를 작성 / 읽는 부분을 제거했습니다. 대신, 주소 wxyz에서 호스트로 IP 패킷을 보내면 DEST 주소가 00-00-wxyz로 설정된 이더넷 프레임을 작성하는 매우 간단한 코드로 모든 것을 대체하십시오.
또한 패킷의 수신자에게 해당 프로토콜 (UDP, TCP)을 나타내는 방법이 필요합니다. 기존 필드를 재정 의하여 이더넷 헤더의 어딘가에이를 붙일 수 있습니다. 소스 주소의 상위 2 바이트 중 하나를 사용할 수 있습니까? 이는 대상 시스템의 수신 기능에는 영향을 미치지 않지만 일부 스위치를 망칠 수 있습니다. 이더넷 프레임의 시작 또는 끝에 프로토콜을 추가하고 페이로드 크기를 1 씩 늘릴 수 있지만 IP 헤더 냄새가 나기 시작합니다.
이 모든 일이 당신을 어떻게 사겠습니까?
먼저 모든 발신 패킷에서 ARP 테이블 조회의 오버 헤드를 줄입니다. 아마도 마이크로 초 정도일 것입니다.
IP 헤더 체크섬 계산 작업과이를 유지하는 데 필요한 메모리를 저장합니다. 이것은 현대 하드웨어에서는 중요하지 않습니다.
IP 헤더가 없으므로 네트워크의 모든 패킷에 16 바이트를 저장합니다. 응용 프로그램에 따라 더해질 수 있습니다.
가장 큰 장점은 ARP 요청을 할 필요가 없다는 것입니다. 표준 IP 패킷을 새 호스트로 보내면 밀리 초가 걸리고 예측할 수없는 ARP 교환이 트리거됩니다. 대기 시간과 지터에 매우 민감한 일부 응용 프로그램의 경우 큰 이득이 될 수 있습니다.
일부 매우 특수한 응용 프로그램의 경우 실제로 수행하는 것이 좋습니다. 한 번은 ARP 시퀀스가 발생하지 않고 지연 및 지터가 발생하는 것을 피할 수 있기 때문에 모든 호스트 간 통신에 브로드 캐스트 UDP 패킷 만 사용하는 실시간 시스템을 사용했습니다. 또한 한 번은 리소스 제한이있는 임베디드 시스템에서 작업했으며, 모든 ARP와 넷 마스크 및 추가 체크섬을 구현하는 데 필요한 모든 복잡성과 메모리를 저장했기 때문에 IP 패킷 내부에서 UDP 페이로드를 직접 전송하여 작동했습니다 (IP 헤더 없음).