协议栈的默认传输结构
对于一个刚启动的协议栈来说,它需要有一个传输层,支持若干的传输结点。每一个传输结点对应于一个端口,若采用TCP连接,一个传输结点就针对于一个点到点的连接,这个连接负责sip信令的可靠交换;若采用UDP进行sip信令的交换,则需要由应用程序维护一个定时器,以防数据包丢失的时候用于重传。
Doubango里一个协议栈对应于一个tsip_stack_t实例,而这样一个实例又拥有有三个层次,从上到下依次为:
事物层,对话层,传输层。
各种关系如下图所示:
在实际中,在协议栈启动的时候,会首先生成一个默认的传输实例,并挂接到传输层的transports队列中,完成该工作的函数是:
tsip_transport_layer_add(tsip_transport_layer_t* self,
const char* local_host,
tnet_port_t local_port,
tnet_socket_type_ttype,
const char* description);
在创建默认传输实例时,各个形参对应的实参为:
l tsip_transport_layer_t *self------传输层实例:stack->layer_transport
l const char* local_host--------------服务器主机IP: stack->network.local_ip,
l tnet_port_t local_port------本机绑定端口,若不指定一般为0,并由stack->network.local_port返回记录
l tne