首先,agent将一个媒体流的每一个候选者(LOCAL CANDIDATE),将它们和peer端接受的候选者(REMOTE CANDIDATE)配对.为了避免由此引发的攻击,agent是限制在一次请求和应答中接受的 候选者,本地和远程候选者当且仅当有着相同的component ID和相同的IP地址版本的时候才进行配对.有可能存在本地和远程候选者中的一些不能找到相应的配对.这种情况发生在一个agent没有包括对应一个媒体流的所有候选者,它们的component是相同的.
这时候,对应于那个媒体流的组件数实际上减少了,等于每一个agent提供的这个媒体流的的全部组件中最大的那个组件ID中的那一个中组件ID最小的那一个.
比如说RTP的情况:一个agent支持RTCP的候选地址,另一个不支持.还有多路复用RTP和RTCP在一个 端口.
+------------------------------------------+
| |
| +---------------------+ |
| |+----+ +----+ +----+ | +Type |
| || IP | |Port| |Tran| | +Priority |
| ||Addr| | | | | | +Foundation |
| |+----+ +----+ +----+ | +ComponentiD |
| | Transport | +RelatedAddr |
| | Addr | |
| +---------------------+ +Base |
| Candidate |
+------------------------------------------+
* *
* *************************************
* *
+-------------------------------+
.| |
| Local Remote |
| +----+ +----+ +default? |
| |Cand| |Cand| +valid? |
| +----+ +----+ +nominated?|
| +State |
| |
| |
| Candidate Pair |
+-------------------------------+
* *
* ************
* *
+------------------+
| Candidate Pair |
+------------------+
+------------------+
| Candidate Pair |
+------------------+
+------------------+
| Candidate Pair |
+------------------+
Check
List