伯克利联网程序代码详解:路由结构与UDP/TCP交互

需积分: 50 158 下载量 36 浏览量 更新于2024-08-06 收藏 27.27MB PDF 举报
"选路结构-jpeg标准的中文文档pdf,TCP IP详解 实现 详细书签版" 在TCP/IP通信中,选路结构是至关重要的,它涉及到数据在网络中的传输路径选择。标题提及的“选路结构-jpeg标准的中文文档pdf”可能是指一个关于网络通信和JPEG图像压缩标准的结合,但由于描述中并未直接涉及JPEG,我们将重点讨论TCP/IP的选路过程。 在描述中,18.6章节主要讨论了选路结构,包括`rtalloc`函数、`route`结构和`rteentry`结构。`rtalloc`函数是用来查找前往特定目的地的路由信息的,它在UDP和TCP(见第22章)的协议控制块(PCB)中被使用。`route`结构是由`rtalloc`填充的,它包含了关于如何到达目标的信息。`route`结构内部的`ro_dst`字段是一个通用的套接字地址结构,对于Internet协议,它通常是一个`sockaddr_in`结构。值得注意的是,`ro_dst`是一个结构实例,而不是一个指针。 当需要发送IP数据报时,选路结构的使用机制如下: 1. 如果调用者提供了`route`结构的指针,那么就直接使用这个结构。否则,会创建一个本地`route`结构,并将其初始化为0(即`ro_rt`为空指针)。UDP和TCP的PCB中包含了指向`route`结构的指针,这些指针会被传递给`ip_output`函数。 2. 如果`route`结构已经指向了一个有效的`rteentry`结构(即`ro_rt`非空),并且所引用的接口仍然可用,同时`route`结构的目的地址与IP数据报的目的地址匹配,那么就使用这条路由。对于TCP连接,数据报的目的地址始终是路由的目的地址,保持不变。然而,UDP应用可以利用`sendto`函数每次将数据报发送到不同的目的地。 3. 如果`rtalloc`返回的`ro_rt`为空指针,这意味着没有找到前往目的地的路由,此时`ip_output`函数会返回错误,表明无法进行数据传输。 此外,标签“TCP IP详解 实现 详细书签版”表明这可能是一份详尽的TCP/IP实现指南,涵盖了从基础概念到具体实现的各个方面。这部分内容可能源自《TCP/IP详解》系列书籍,提供了深入理解网络协议栈的实践知识。 部分内容展示了书的第一章,概述了伯克利联网程序代码的历史和编程接口。书中通过一个简单的UDP通信示例(向远程主机发送日期/时间请求并接收响应)来介绍协议栈的基本工作原理,揭示了核心数据结构和概念。章节末尾还提到了源代码的组织结构,帮助读者理解代码在整体架构中的位置。 这个资源可能是关于TCP/IP路由选择的详细文档,结合了JPEG标准的某些内容,适合对网络通信有深入研究的读者。文档中可能包含实际代码示例,帮助读者理解和实现网络协议的选路机制。