选路结构-jpeg标准的中文文档pdf
选路结构访问内核路由信息的关键之处是:
1) rtalloc
函数,用于查找通往目的地的路由;
2) route
结构,它的值由rtalloc
函数填写;
3) route
结构所指向的rtentry
结构。
UDP和TCP中使用的协议控制块(PCB)中包含一个route
结构。ro_dst
被定义成一个一般的插口地址结构,但对于Internet协议而言,它就是一个sockaddr_in
结构。对这种结构类型的绝大多数引用都是一个指针,而ro_dst
是该结构的一个实例而非指针。每次发送IP数据报时,这些路由是如何使用的:
-
如果调用者传递了一个
route
结构的指针,那么就使用该结构。否则,就要用一个局部route
结构,其值设置为0。UDP和TCP把指向它们的PCB中route
结构的指针传递给ip_output
。如果你对实现路由选路感兴趣,可以参考实现路由选路doc。 -
如果
route
结构指向一个rtentry
结构(ro_rt
指针为非空),同时所引用的接口仍然有效;而且如果route
结构中的目的地址与IP数据报中的目的地址相等,那么该路由就被使用。否则,目的主机的IP地址将会设置在插口地址结构sockaddr_in
中,并且调用rtalloc
来查找一条通向该目的主机的路由。对这种机制有兴趣?你可以查阅更多关于严格源路由选路与宽松源站路由选路的详细解释。 -
如果
rtalloc
返回的ro_rt
是个空指针,则表明找不到路由,并且ip_output
返回一错误。
想了解更多关于TCP和UDP路由的工作原理?你可以参考TCP UDP路由原理.pdf进一步了解这些协议如何在实际应用中发挥作用。对于UDP聊天软件的实现,可以参考udp聊天软件L chat了解更多细节。
用户评论