TCP/IP详解第二卷 - IP:网际协议

需积分: 9 0 下载量 24 浏览量 更新于2024-07-31 收藏 1.41MB PDF 举报
"TCP/IP详解2-008章节关于IP:网际协议的内容" 在TCP/IP通信中,IP(Internet Protocol)是网络层的核心协议,负责数据包的传输。本章深入介绍了IP分组的结构及其处理流程,包括输入、转发和输出。IP协议的主要任务是确保数据在网络中的可靠传输,尽管它并不保证数据的顺序或无丢失性,这些功能通常由传输层的TCP(传输控制协议)来提供。 IP分组的结构包括一个固定长度的头部(20字节)和可变长度的数据部分。头部包含了源和目的IP地址、服务类型、总长度、标识符、标志、片段偏移、生存时间(TTL)、协议字段(指出上层使用的协议,如TCP、UDP等)、头部校验和以及选项(在某些情况下使用)。IP分组的数据部分携带了来自上层协议(如TCP、UDP、ICMP等)的数据。 IP处理流程主要包括以下几个步骤: 1. 输入处理:网络接口接收到IP分组后,将其放入IP输入队列。软件中断被触发后,`ip_input`函数开始处理队列中的分组,检查其有效性,执行校验和验证,并根据目标IP地址决定是交付给本地进程还是转发给其他网络。 2. 转发处理:如果分组不是为本地主机准备的,且主机被配置为路由器,`ip_forward`函数会介入,根据路由表决定分组的下一跳接口,并将其传递给`ip_output`函数。 3. 输出处理:`ip_output`函数负责添加IP头部,选择最佳输出接口,处理可能的分片(如果分组大小超过接口的最大传输单元MTU),然后将分组交给网络接口的输出函数进行实际的物理传输。 在出现错误时,IP协议会丢弃相应的分组,并在特定条件下发送ICMP(Internet Control Message Protocol)错误报文,例如“无法到达”或“超时”。ICMP报文由`icmp_error`函数生成,提供有关错误类型和额外信息的反馈。 此外,本章还提到了与IP处理相关的源代码文件,包括`route.h`(路由入口定义)、`inet/ip.h`(IP首部结构定义)和`netinet/ip_input.c`(IP输入处理实现)。这些文件构成了IP协议在操作系统内核中的核心组件。 这一章详细阐述了IP协议的工作原理,涉及了从接收、处理到转发IP分组的整个过程,以及在出现网络问题时如何利用ICMP进行错误报告。对于理解TCP/IP协议栈的运作机制,这部分内容至关重要。