Tech Study/Network2024. 12. 7. 15:31

 

권한 (Permissions)

권한은 IP 주소와 만료시간(time-to-expiry)으로 구성된 정보로 '할당'별로 0개 이상 존재한다.
이 정보를 통해 허용된 peer들만 '할당'을 이용할 수 있도록 한다. 
권한이 없는 peer로부터 통신 요청이 있을 경우에는 조용히 무시한다.

권한의 생성이나 만료시간 갱신은 CreatePermission 또는 ChannelBind 메소드를 이용한다.
만약, 기존에 없는 IP address일 경우에는 새로 생성하고, 존재할 경우에는 만료시간을 갱신한다.
두 메소드의 사용 순서나 횟수에는 제한이 없다.

만료시간의 단위는 second이며, 설정값은 300초 고정으로 임의 변경 불가능
만료 시간이 명세대로 5분까지는 유효하나 NAT 장비 등의 만료시간이 훨씬 빠르므로 더 자주 갱신 요청하길 권함

CreatePermission을 통한 권한 생성

권한 처리에 대한 방법 중 하나인 CreatePermission 메소드를 이용하는 방법 설명

CreatePermission 메시지 만들기 (Forming a CreatePermission Request)

XOR-PEER-ADDRESS 속성을 1개는 포함해야 하며, 2개 이상 포함할 수 있다.
이 속성의 IP 부분이 서버에서 권한을 처리하기 위한 unique key이며,
port 부분은 무시되기 때문에 아무 값이나 넣어도 된다.
단일 할당(single allocation)에 요청을 보낼 때는 IP family가 relayed transport address와 동일해야 한다.
이중 할당(dual allocation)에 요청을 보낼 때는 IP family에 IPv4, IPv6 모두 들어갈 수 있다.

CreatePermission 요청 수신 (Receiving a CreatePermission Request)

서버에서 CreatePermission 명령을 받았을 때 처리하는 절차를 기술

  • XOR-PEER-ADDRESS 속성이 한개도 없을 경우에는 400 에러 응답
  • 권한 설정에 대한 capacity 제한에 걸렸을 경우에는 508 에러 응답
  • '할당'의 릴레이 주소와 IP family가 다를 경우 443 에러 응답
  • 요청에 포함된 peer의 IP 주소가 제한된 주소일 경우 403 에러 응답
  • 성공 시 특별한 내용 없이 응답만 하면 된다.

CreatePermission 응답 수신 (Receiving a CreatePermission Response)

클라이언트가 서버로부터의 응답에 따라 적절한 동작을 취할 것을 명시함

 

Posted by JMAN