OT CLI로 UDP 기능 테스트

GitHub에서 소스 보기

OpenThread는 UDP 소켓 간의 P2P 통신을 테스트하기 위해 스레드 네트워크와 함께 사용할 UDP 명령어를 제공합니다. cli udp는 모든 udp 명령어가 상호작용하는 샘플 소켓을 제공합니다.

다음 예는 소켓을 열고 바인딩하는 방법, 소켓을 연결하는 방법, UDP 소켓을 사용하여 메시지를 보내는 방법을 보여줍니다.

UDP 명령어

udp 명령어 목록을 보려면 help를 입력합니다.

udp help
bind
close
connect
linksecurity
open
send
Done

open 명령어

udp open 명령어를 사용하여 소켓을 열어 UDP 통신을 시작합니다. 그런 다음 소켓을 특정 IP 주소와 포트에 바인딩할 수 있습니다.

bind 명령어

소켓을 open한 후 udp bind 명령어를 실행하여 IPv6 주소와 포트를 개방형 소켓에 할당할 수 있습니다. 이렇게 하면 통신을 위해 소켓이 바인딩됩니다. IPv6 주소와 포트를 할당하는 것을 소켓 이름 지정이라고도 합니다. 소켓을 직접 bind하지 않는 경우 소켓 (udp connect)을 연결하거나 udp send 명령어에 사용하면 소켓이 임시 포트에 바인딩됩니다.

connect 명령어

udp connect 명령어를 사용하여 예시 소켓을 피어 소켓 주소에 연결할 수 있습니다. 그런 다음 udp send 명령어를 실행하여 피어에 메시지를 보낼 수 있습니다. 소켓이 아직 바인딩되지 않은 경우 udp connect 명령어를 실행하면 소켓이 바인딩됩니다.

send 명령어

udp send 명령어는 예시 소켓을 사용하여 명령어 변수로 IP 주소와 UDP 포트를 지정할 수 있는 대상으로 메시지를 보냅니다. udp send 명령어에 IP 주소와 포트가 지정되지 않으면 메시지가 예시 소켓을 사용하여 udp connect 명령어에 지정된 대상으로 전송됩니다. 소켓이 아직 바인딩되지 않은 경우 udp send 명령어를 실행하면 소켓이 임시 포트에 바인딩됩니다.

close 명령어

소켓이 더 이상 필요하지 않으면 udp close 명령어를 사용하여 소켓을 닫는 것이 좋습니다.

linksecurity 명령어

udp linksecurity 명령어를 사용하여 메시지의 데이터 링크 레이어 보안을 사용 설정 또는 중지할 수 있습니다.

두 노드 간 메시지 전송

  1. 노드 1에서 UDP 소켓을 엽니다.

    udp open
    Done
    
  2. 노드 1에서 소켓을 바인딩합니다.

    udp bind :: 1234
    Done
    

    ::를 사용한다는 것은 bind가 지정되지 않은 IPv6 주소를 사용해야 하므로 UDP/IPv6 스택이 결합 IPv6 주소를 할당하도록 하는 것입니다. 네트워크 인터페이스에 바인딩과 같이 udp bind가 포함된 완전한 옵션은 udp bind를 참조하세요.

1 노드 2에서 UDP 소켓을 엽니다.

udp open
   Done
   

  1. 노드 2에서 노드 1에 간단한 메시지를 보냅니다.

    udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 hello
    Done
    

    이 명령어는 노드 2가 이미 노드 1의 주소를 발견했다고 가정합니다. 또한 이 예시에서는 노드 2의 관리자가 소켓을 바인딩하지 않도록 선택했습니다. 이는 노드 2 관리자가 노드 2의 소스로 사용되는 IP 주소와 포트를 고려하지 않고 노드 1에 메시지를 보내기를 원하기 때문입니다. 이 시나리오에서 소켓은 IP 주소와 포트를 무작위로 선택합니다.

    udp send의 전체 옵션은 udp send를 참조하세요.

  2. 노드 1은 노드 2의 메시지 수신을 확인합니다.

    5 bytes from fdde:ad00:beef:0:dac3:6792:e2e:90d8 49153 hello
    

소켓을 피어 소켓 주소에 연결한 다음 두 노드 간에 메시지 전송

이 예는 이전 예와 유사하지만 UDP 소켓을 사용할 때 얻을 수 있는 유연성을 보여줍니다. 이 방법을 사용하면 먼저 소켓을 피어 소켓 주소에 연결하면 udp send을 수행할 때마다 피어 IP 주소와 포트를 지정할 필요가 없습니다.

  1. 노드 1에서 UDP 소켓을 엽니다.

    udp open
    Done
    
  2. 노드 1에서 소켓을 바인딩합니다.

    udp bind :: 1234
    Done
    
  3. 노드 2에서 UDP 소켓을 엽니다.

    udp open
    Done
    
  4. 노드 2에서 udp connect 명령어를 사용하여 노드 1과의 통신을 엽니다.

    udp connect fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234
    Done
    

    udp connect의 전체 옵션은 UDP 연결을 참조하세요.

  5. 노드 2에서 udp send 명령어를 사용하여 노드 1에 메시지를 보내지만 udp send 명령어 구문에 ipport를 지정하지 않습니다.

    udp send hello
    Done
    

    ipport를 지정하지 않으면 udp send 명령어는 udp connect 명령어에 지정된 ipport를 사용합니다.