Send와 Data (Send and Data Methods)
TURN 규격에 규정되어 있는 릴레이 데이터 송수신 방식 중 하나인 Send와 Data 메소드 이용에 관한 기술
Send는 클라이언트가 피어에게 보낼 때 사용하고, Data는 피어에서 클라이언트로 데이터가 전달될 때 이용된다.
Send 메시지 만들기 (Forming a Send Indication)
Send할 상대방 IP주소에 대한 권한(permission)이 설정(install)되어 있는지 확인해야 한다.
Send 메시지에는 XOR-PEER-ADDRESS와 DATA 속성이 모두 포함되어야 한다.
XOR-PEER-ADDRESS는 상대방의 정보이고, DATA는 peer에 보낼 데이터이다.
UDP 데이터의 IP 헤더 부분에 DF bit를 설정하기 원할 때 DONT-FRAGMENT 속성을 옵션으로 추가할 수 있다.
Send 메시지 수신 (Receiving a Send Indication)
서버에서 Send 메시지를 수신했을 때의 절차 기술
- XOR-PEER-ADDRESS, DATA 모두 포함되었는지 확인
- DATA의 실제 데이터의 길이는 0바이트도 허용(※ 분석자 주: UDP는 0바이트 페이로드를 통해 헤더만 전송 가능)
- DONT-FRAGMENT 유무에 따른 처리
- 속성 존재 : 서버에서 IP 헤더에 DF bit 마킹 가능 여부에 따라 처리
- 마킹 가능 : DF bit 마킹하는 것으로 설정하고 정상 처리
- 마킹 불가 : 미지원 속성으로 판단하여 메시지를 버림
- 속성 미존재 : 정상 처리
- 속성 존재 : 서버에서 IP 헤더에 DF bit 마킹 가능 여부에 따라 처리
- XOR-PEER-ADDRESS의 IP로 권한 등록되어 있지 않으면 버림
- 추가적으로 port까지 제한을 둘지는 구현자가 자유롭게 결정할 수 있음
- 모두 통과한 경우 XOR-PEER-ADDRESS를 송신 주소로, DATA 값을 페이로드로 하여 peer에게 UDP 전송
UDP 데이터 수신 (Receiving a UDP Datagram)
서버가 '할당'에 연동된 임의의 peer로부터 UDP 데이터를 수신한 경우에 대한 절차 기술
- peer의 주소에 대해 권한 설정 여부 판단
- 권한 존재
- 채널(Channel)로 묶인 peer : 채널 형태로 클라이언트에게 데이터를 전달함 (채널 관련 섹션에서 기술)
- 채널이 없는 peer : Data 메소드를 이용. XOR-PEER-ADDRESS 속성에는 peer의 주소를, DATA 속성에는 UDP 데이터를 넣고 처리
- 권한 없음
- 패킷을 버림
- 권한 존재
Data 메시지 수신 (Receiving a Data Indication)
peer의 데이터가 TURN 서버를 통해 Data 메시지로 변환되어 클라이언트로 전달된 경우에 대한 설명
- Data 메시지 내에 XOR-PEER-ADDRESS 속성이 부재하거나 문제가 있다면 peer를 모르므로 버림
- 해킹 방지를 위해 XOR-PEER-ADDRESS의 IP 주소가 '할당'에 실제 권한을 등록했던 주소인지 판단하는 것이 좋음
- Data 메시지에 실려 있는 데이터가 DATA 속성의 바이너리 데이터인지 ICMP 속성의 상태 데이터인지 식별
- DATA 속성일 경우에는 UDP 메시지로 추정하여 처리
- ICMP 속성에 대해서는 다른 섹션에 기술한다.
ICMP 패킷 수신 (Receiving an ICMP Packet)
서버에서 UDP 전송이 실패 하거나 기타 문제가 발생하여 ICMP 패킷이 수신되었을 때에 대한 처리 절차 기술(자세한 분석은 추후 진행)
ICMP가 포함된 Data 메시지 수신 (Receiving a Data Indication with an ICMP Attribute)
Data 메시지를 수신했을 때, DATA 속성 대신 ICMP 속성이 포함되어 있다면 클라이언트가 운용 중 확인 할 내용인지 살펴 보도록 구현하면 된다.
'Tech Study > Network' 카테고리의 다른 글
RFC 8656 - Traversal Using Relays around NAT (TURN) 기초 분석 9 (0) | 2024.12.09 |
---|---|
RFC 8656 - Traversal Using Relays around NAT (TURN) 기초 분석 8 (1) | 2024.12.09 |
RFC 8656 - Traversal Using Relays around NAT (TURN) 기초 분석 6 (0) | 2024.12.07 |
RFC 8656 - Traversal Using Relays around NAT (TURN) 기초 분석 5 (0) | 2024.12.06 |
RFC 8656 - Traversal Using Relays around NAT (TURN) 기초 분석 4 (0) | 2024.12.04 |