TCP/IP详解:TCP事务协议与UNIX域协议实现分析

需积分: 9 0 下载量 145 浏览量 更新于2024-09-09 收藏 1.62MB PDF 举报
"TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议" 在TCP/IP详解卷三中,重点讲述了TCP事务协议、HTTP超文本传输协议、NNTP网络新闻传输协议以及UNIX域协议。其中,UNIX域协议是针对同一主机内进程间通信的一种高效且低级的通信方式。 17.1 概述 UNIX域协议,也称为本地套接字或SOCK_STREAM类型的套接字,主要在同一个操作系统内的进程之间提供通信。其源代码实现主要集中在`ipc_usrrreq.c`文件中,包括约1000行C语言代码,相比UDP的800行和TCP的4500行更简洁。 17.2 代码介绍 实现UNIX域协议的源代码分布在多个文件中,如`sys/un.h`定义了`sockaddr_un`结构,`sys/unpcb.h`定义了`unpcb`结构,而`kern/ipc_proto.c`包含了`unix_domain`和`unix_protosw`的定义,以及`kern/ipc_usrrreq.c`中实现了UNIX域函数。此外,`kern/ipc_syscalls.c`包含了`pipe`和`socketpair`这两个系统调用,它们都依赖于本章描述的UNIX域函数。 关键全局变量: - `unix_domain`: 表示UNIX域的域定义结构。 - `unix_sw`: 定义了UNIX域协议的协议结构。 - `sun_noname`: 包含空路径名的套接字地址结构。 - `unp_deferint`: 用于无用单元收集的计数器。 - `unp_gcingingint`: 如果正在执行无用单元收集,会被设置。 - `unp_inoino_int`: 下一个分配的伪ino_node号的值。 - `unp_rightsint`: 当前传输中的文件描述符数量。 本章和下章将详细讨论这些全局变量以及它们在进程间通信中的作用,同时涵盖了`pipe`和`socketpair`系统调用的实现,这两个调用允许创建连接的管道或套接字对,是UNIX域协议的重要组成部分。 TCP/IP详解卷三深入剖析了UNIX域协议的实现细节,包括其源代码结构、关键数据结构和系统调用的使用,这对于理解操作系统内核中的进程间通信机制具有极高的价值。通过阅读和理解这部分内容,开发者可以更好地掌握本地通信机制,并将其应用到实际的系统设计和编程中。