Linux网络编程目录.pdf
《Linux网络编程目录.pdf》由会员分享,可在线阅读,更多相关《Linux网络编程目录.pdf(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 目录 VI目 录 第 1 篇 Linux 网络开发基础 第 1 章 Linux 操作系统概述.2 1.1 Linux 发展历史.2 1.1.1 Linux 的诞生和发展.2 1.1.2 Linux 名称的由来.3 1.2 Linux 的发展要素.3 1.2.1 UNIX 操作系统.4 1.2.2 Minix 操作系统.4 1.2.3 POSIX 标准.4 1.3 Linux 与 UNIX 的异同.5 1.4 操作系统类型选择和内核版本的选择.5 1.4.1 常见的不同公司发行的 Linux 异同.6 1.4.2 内核版本的选择.6 1.5 Linux 的系统架构.7 1.5.1 Linux
2、内核的主要模块.7 1.5.2 Linux 的文件结构.9 1.6 GNU 通用公共许可证.10 1.6.1 GPL 许可证的历史.10 1.6.2 GPL 的自由理念.10 1.6.3 GPL 的基本条款.11 1.6.4 关于 GPL 许可证的争议.12 1.7 Linux 软件开发的可借鉴之处.12 1.8 小结.13 第 2 章 Linux 编程环境.14 2.1 Linux 环境下的编辑器.14 2.1.1 vim 使用简介.14 2.1.2 使用 vim 建立文件.15 目录 VII2.1.3 使用 vim 编辑文本.16 2.1.4 vim 的格式设置.18 2.1.5 vim
3、配置文件.vimrc.19 2.1.6 使用其他编辑器.19 2.2 Linux 下的 GCC 编译器工具集.19 2.2.1 GCC 简介.19 2.2.2 编译程序的基本知识.21 2.2.3 单个文件编译成执行文件.22 2.2.4 编译生成目标文件.22 2.2.5 多文件编译.23 2.2.6 预处理.24 2.2.7 编译成汇编语言.24 2.2.8 生成和使用静态链接库.25 2.2.9 生成动态链接库.26 2.2.10 动态加载库.29 2.2.11 GCC 常用选项.31 2.2.12 编译环境的搭建.33 2.3 Makefile 文件简介.34 2.3.1 一个多文件的
4、工程例子.34 2.3.2 多文件工程的编译.36 2.3.3 Makefile 的规则.37 2.3.4 Makefile 中使用变量.39 2.3.5 搜索路径.43 2.3.6 自动推导规则.44 2.3.7 递归 make.44 2.3.8 Makefile 中的函数.46 2.4 用 GDB 调试程序.47 2.4.1 编译可调试程序.48 2.4.2 使用 GDB 调试程序.49 2.4.3 GDB 常用命令.52 2.4.4 其他的 GDB.59 2.5 小结.60 第 3 章 文件系统简介.61 3.1 Linux 下的文件系统.61 3.1.1 Linux 下文件的内涵.61
5、 3.1.2 文件系统的创建.62 3.1.3 挂接文件系统.64 目录 VIII3.1.4 索引节点 inode.65 3.1.5 普通文件.66 3.1.6 设备文件.66 3.1.7 虚拟文件系统 VFS.68 3.2 文件的通用操作方法.72 3.2.1 文件描述符.72 3.2.2 打开创建文件 open()、create()函数.72 3.2.3 关闭文件 close()函数.76 3.2.4 读取文件 read()函数.77 3.2.5 写文件 write()函数.79 3.2.6 文件偏移 lseek()函数.80 3.2.7 获得文件状态 fstat()函数.83 3.2.8
6、 文件空间映射 mmap()函数.85 3.2.9 文件属性 fcntl()函数.88 3.2.10 文件输入输出控制 ioctl()函数.92 3.3 socket 文件类型.93 3.4 小结.93 第 4 章 程序、进程和线程.94 4.1 程序、进程和线程的概念.94 4.1.1 程序和进程的差别.94 4.1.2 Linux 环境下的进程.95 4.1.3 进程和线程.96 4.2 进程产生的方式.96 4.2.1 进程号.96 4.2.2 进程复制 fork().97 4.2.3 system()方式.98 4.2.4 进程执行 exec()函数系列.99 4.2.5 所有用户态进
7、程的产生进程 init.100 4.3 进程间通信和同步.101 4.3.1 半双工管道.101 4.3.2 命名管道.107 4.3.3 消息队列.108 4.3.4 消息队列的一个例子.114 4.3.5 信号量.116 4.3.6 共享内存.121 4.3.7 信号.124 4.4 Linux 下的线程.127 目录 IX4.4.1 多线程编程实例.127 4.4.2 Linux 下线程创建函数 pthread_create().129 4.4.3 线程的结束函数 pthread_join()和 pthread_exit().129 4.4.4 线程的属性.130 4.4.5 线程间的互
8、斥.132 4.4.6 线程中使用信号量.133 4.5 小结.136 第 2 篇 Linux 用户层网络编程 第 5 章 TCP/IP 协议族简介.138 5.1 OSI 网络分层介绍.138 5.1.1 OSI 网络分层结构.138 5.1.2 OSI 的 7 层网络结构.139 5.1.3 OSI 参考模型中的数据传输.140 5.2 TCP/IP 协议栈.141 5.2.1 TCP/IP 协议栈参考模型.141 5.2.2 主机到网络层协议.143 5.2.3 IP 协议.144 5.2.4 网际控制报文协议(ICMP).146 5.2.5 传输控制协议(TCP).150 5.2.6
9、用户数据报文协议(UDP).154 5.2.7 地址解析协议(ARP).156 5.3 IP 地址分类与 TCP/UDP 端口.158 5.3.1 因特网中 IP 地址的分类.159 5.3.2 子网掩码(subnet mask address).161 5.3.3 IP 地址的配置.162 5.3.4 端口.163 5.4 主机字节序和网络字节序.163 5.4.1 字节序的含义.164 5.4.2 网络字节序的转换.164 5.5 小结.166 第 6 章 应用层网络服务程序简介.167 6.1 HTTP 协议和服务.167 6.1.1 HTTP 协议概述.167 6.1.2 HTTP 协
10、议的基本过程.168 目录 X6.2 FTP 协议和服务.170 6.2.1 FTP 协议概述.170 6.2.2 FTP 协议的工作模式.172 6.2.3 FTP 协议的传输方式.172 6.2.4 一个简单的 FTP 过程.173 6.2.5 常用的 FTP 工具.173 6.3 TELNET 协议和服务.174 6.3.1 远程登录的基本概念.174 6.3.2 使用 TELNET 协议进行远程登录的工作过程.174 6.3.3 TELNET 协议.174 6.4 NFS 协议和服务.176 6.4.1 安装 NFS 服务器和客户端.176 6.4.2 服务器端的设定.176 6.4.
11、3 客户端的操作.177 6.4.4 showmount 命令.177 6.5 自定义网络服务.177 6.5.1 xinetd/inetd.178 6.5.2 xinetd 服务配置.178 6.5.3 自定义网络服务.179 6.6 小结.180 第 7 章 TCP 网络编程基础.181 7.1 套接字编程基础知识.181 7.1.1 套接字地址结构.181 7.1.2 用户层和内核层交互过程.183 7.2 TCP 网络编程流程.184 7.2.1 TCP 网络编程架构.184 7.2.2 创建网络插口函数 socket().186 7.2.3 绑定一个地址端口对 bind().189
12、7.2.4 监听本地端口 listen.192 7.2.5 接受一个网络请求 accept().194 7.2.6 连接目标网络服务器 connect().199 7.2.7 写入数据函数 write().200 7.2.8 读取数据函数 read().201 7.2.9 关闭套接字函数 close().201 7.3 服务器/客户端的简单例子.202 7.3.1 例子功能描述.202 目录 XI7.3.2 服务器网络程序.203 7.3.3 服务器读取和显示字符串.205 7.3.4 客户端的网络程序.205 7.3.5 客户端读取和显示字符串.206 7.3.6 编译运行程序.206 7.
13、4 截取信号的例子.207 7.4.1 信号处理.207 7.4.2 信号 SIGPIPE.208 7.4.3 信号 SIGINT.208 7.5 小结.208 第 8 章 服务器和客户端信息的获取.210 8.1 字节序.210 8.1.1 大端字节序和小端字节序.210 8.1.2 字节序转换函数.212 8.1.3 一个字节序转换的例子.214 8.2 字符串 IP 地址和二进制 IP 地址的转换.217 8.2.1 inet_xxx()函数.217 8.2.2 inet_pton()和 inet_ntop()函数.219 8.2.3 使用 8.2.1 节地址转换函数的例子.220 8.
14、2.4 使用函数 inet_pton()和函数 inet_ntop()的例子.223 8.3 套接字描述符判定函数 issockettype().223 8.3.1 进行文件描述符判定的函数 issockettype().224 8.3.2 main()函数.224 8.4 IP 地址与域名之间的相互转换.225 8.4.1 DNS 原理.225 8.4.2 获取主机信息的函数.226 8.4.3 使用主机名获取主机信息的例子.228 8.4.4 函数 gethostbyname()不可重入的例子.230 8.5 协议名称处理函数.232 8.5.1 xxxprotoxxx()函数.232 8
15、.5.2 使用协议族函数的例子.233 8.6 小结.236 第 9 章 数据的 IO 和复用.237 9.1 IO 函数.237 9.1.1 使用 recv()函数接收数据.237 9.1.2 使用 send()函数发送数据.239 9.1.3 使用 readv()函数接收数据.240 目录 XII9.1.4 使用 writev()函数发送数据.240 9.1.5 使用 recvmsg()函数接收数据.242 9.1.6 使用 sendmsg()函数发送数据.244 9.1.7 IO 函数的比较.246 9.2 使用 IO 函数的例子.246 9.2.1 客户端处理框架的例子.246 9.2
16、.2 服务器端程序框架.248 9.2.3 使用 recv()和 send()函数.249 9.2.4 使用 readv()和 write()函数.251 9.2.5 使用 recvmsg()和 sendmsg()函数.253 9.3 IO 模型.256 9.3.1 阻塞 IO 模型.256 9.3.2 非阻塞 IO 模型.257 9.3.3 IO 复用.257 9.3.4 信号驱动 IO 模型.258 9.3.5 异步 IO 模型.258 9.4 select()函数和 pselect()函数.259 9.4.1 select()函数.259 9.4.2 pselect()函数.261 9.
17、5 poll()函数和 ppoll()函数.262 9.5.1 poll()函数.263 9.5.2 ppoll()函数.264 9.6 非阻塞编程.264 9.6.1 非阻塞方式程序设计介绍.264 9.6.2 非阻塞程序设计的例子.264 9.7 小结.266 第 10 章 基于 UDP 协议的接收和发送.267 10.1 UDP 编程框架.267 10.1.1 UDP 编程框图.267 10.1.2 UDP 服务器编程框架.269 10.1.3 UDP 客户端编程框架.269 10.2 UDP 协议程序设计的常用函数.270 10.2.1 建立套接字 socket()和绑定套接字 bin
18、d().270 10.2.2 接收数据 recvfrom()/recv().270 10.2.3 发送数据 sendto()/send().275 10.3 UDP 接收和发送数据的例子.279 10.3.1 UDP 服务器端.279 目录 XIII10.3.2 UDP 服务器端数据处理.280 10.3.3 UDP 客户端.281 10.3.4 UDP 客户端数据处理.281 10.3.5 测试 UDP 程序.282 10.4 UDP 协议程序设计中的几个问题.282 10.4.1 UDP 报文丢失数据.282 10.4.2 UDP 数据发送中的乱序.284 10.4.3 UDP 协议中的
19、connect()函数.287 10.4.4 UDP 缺乏流量控制.287 10.4.5 UDP 协议中的外出网络接口.289 10.4.6 UDP 协议中的数据报文截断.290 10.5 小结.291 第 11 章 高级套接字.292 11.1 UNIX 域函数.292 11.1.1 UNIX 域函数的地址结构.292 11.1.2 套接字函数.293 11.1.3 使用 UNIX 域函数进行套接字编程.293 11.1.4 传递文件描述符.296 11.1.5 socketpair()函数.296 11.1.6 传递文件描述符的例子.297 11.2 广播.302 11.2.1 广播的 I
20、P 地址.302 11.2.2 广播与单播的比较.303 11.2.3 广播的示例.304 11.3 多播.310 11.3.1 多播的概念.310 11.3.2 广域网的多播.311 11.3.3 多播的编程.311 11.3.4 内核中的多播.313 11.3.5 一个多播例子的服务器端.317 11.3.6 一个多播例子的客户端.318 11.4 数据链路层访问.319 11.4.1 SOCK_PACKET 类型.319 11.4.2 设置套接口以捕获链路帧的编程方法.320 11.4.3 从套接口读取链路帧的编程方法.321 11.4.4 定位 IP 包头的编程方法.322 11.4.
21、5 定位 TCP 报头的编程方法.323 目录 XIV 11.4.6 定位 UDP 报头的编程方法.325 11.4.7 定位应用层报文数据的编程方法.326 11.4.8 使用 SOCK_PACKET 编写 ARP 请求程序的例子.326 11.5 小结.329 第 12 章 套接字选项.330 12.1 获取和设置套接字选项 getsocketopt()/setsocketopt().330 12.1.1 getsockopt()函数和 setsocketopt()函数的介绍.330 12.1.2 套接字选项.331 12.1.3 套接字选项简单示例.332 12.2 SOL_SOCKET
22、 协议族选项.336 12.2.1 SO_BROADCAST 广播选项.336 12.2.2 SO_DEBUG 调试选项.337 12.2.3 SO_DONTROUTE 不经过路由选项.337 12.2.4 SO_ERROR 错误选项.338 12.2.5 SO_KEEPALIVE 保持连接选项.338 12.2.6 SO_LINGER 缓冲区处理方式选项.339 12.2.7 SO_OOBINLINE 带外数据处理方式选项.342 12.2.8 SO_RCVBUF 和 SO_SNDBUF 缓冲区大小选项.342 12.2.9 SO_RCVLOWAT 和 SO_SNDLOWAT 缓冲区下限选项
23、.343 12.2.10 SO_RCVTIMEO 和 SO_SNDTIMEO 收发超时选项.343 12.2.11 SO_REUSERADDR 地址重用选项.344 12.2.12 SO_EXCLUSIVEADDRUSE 端口独占选项.344 12.2.13 SO_TYPE 套接字类型选项.345 12.2.14 SO_BSDCOMPAT 与 BSD 套接字兼容选项.345 12.2.15 SO_BINDTODEVICE 套接字网络接口绑定选项.345 12.2.16 SO_PRIORITY 套接字优先级选项.346 12.3 IPPROTO_IP 选项.347 12.3.1 IP_HDRIN
24、CL 选项.347 12.3.2 IP_OPTNIOS 选项.347 12.3.3 IP_TOS 选项.347 12.3.4 IP_TTL 选项.347 12.4 IPPROTO_TCP 选项.348 12.4.1 TCP_KEEPALIVE 选项.348 12.4.2 TCP_MAXRT 选项.348 12.4.3 TCP_MAXSEG 选项.349 12.4.4 TCP_NODELAY 和 TCP_CORK 选项.349 12.5 使用套接字选项.351 目录 XV12.5.1 设置和获取缓冲区大小.351 12.5.2 获取套接字类型的例子.355 12.5.3 使用套接字选项的综合例子
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 网络 编程 目录
限制150内