伯克利联网程序代码解析-路由选择与TCP/IP协议

需积分: 50 98 下载量 71 浏览量 更新于2024-08-05 收藏 36.37MB PDF 举报
"选路结构-modern differential geometry of curves and surfaces with mathematica" 本文主要讨论的是计算机网络中的选路结构,特别是在TCP/IP协议栈中的应用。选路结构是网络通信中的关键组成部分,它涉及到数据包从源到目的地的路径选择。在TCP/IP详解的上下文中,我们关注的是路由信息的获取和使用。 首先,`r_t_alloc`函数是用于查找到目的地的路由的关键函数。当需要发送数据到特定目的地时,这个函数会根据输入的参数来查找合适的路由信息。它可能是基于目的地的IP地址或其他网络参数来决定最佳路径。 `route`结构是存储路由信息的数据结构,它由`r_t_alloc`函数填充。这个结构包含了与路由相关的各种属性,例如下一跳的接口、跃点数、路由标志等。在描述中提到,`route`结构还包含了一个`route_entry`结构的指针,这个指针用于指向具体的路由条目。 `route_entry`结构是更为详细的路由信息单元,它可能包含了更多关于网络接口、子网掩码、路由优先级等具体信息。当`route`结构的`ro_rt`指针非空时,表示已经存在一个有效的路由条目可以使用。 图18-23展示了在UDP和TCP(如在第22章中所述)中使用的协议控制块(PCB),每个PCB都包含一个`route`结构。PCB是操作系统内核中用于管理套接字和网络连接的数据结构。在UDP和TCP中,它们会将PCB中`route`结构的指针传递给`ip_output`函数,以便在发送数据时能够利用这个路由信息。 当发送IP数据报时,路由选择的过程如下: 1. 如果调用者提供了`route`结构的指针,那么就直接使用该结构中的路由信息。 2. 如果`route`结构指向一个有效的`route_entry`结构,且目标地址匹配,那么就使用这条路由。否则,会将目的IP地址放入`sockaddr_in`结构的`sodst`中,并调用`rt_alloc`来查找新的路由。 3. 如果`rt_alloc`返回的`ro_rt`为空,表示没有找到路由,`ip_output`函数会返回错误,数据报无法发送。 在TCP连接中,由于连接是固定的,所以数据报的目的地址始终与路由的目的地址一致。然而,在UDP中,由于每个`sendto`调用可以指定不同的目标地址,因此每次发送的数据报的目的地址可能会变化,需要动态查找路由。 从第1章的内容来看,文章似乎是从一个更广泛的上下文开始,介绍了伯克利联网程序代码的基础,包括源代码的表示方法、编程接口以及一个简单的UDP日期/时间服务示例,这个示例涵盖了协议栈的核心数据结构和概念。这为后续章节中更深入的路由表管理和选路结构分析奠定了基础。 选路结构在TCP/IP通信中扮演着至关重要的角色,它确保了数据能够正确地在网络中传输。了解和掌握这些基础知识对于理解和调试网络问题至关重要。