Linux 网络编程技术

Linux 网络编程技术
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2001-11
版次: 1
ISBN: 9787115097279
定价: 48.00
装帧: 其他
开本: 其他
纸张: 其他
页数: 431页
10人买过
  • 本书详尽而细致地介绍了在Linux操作系统下进行网络编程所需要的各种知识,对网络编程的模型和原理、套接字函数的使用方法、多线程和多进程的结构以及大型网络应用程序的设计方法等进行了全面的讲解书中还穿插了大量的实例程序,并配以说明,更加方便读者的学习和理解.
      本书内容的精心安排、简洁的措辞、丰富的实例可以使初学者迅速掌握Linux网络编程的技术,同时,Linux的高级程序员也可以从中得到一些启示,从而最大限度地发挥Linux程序的潜能。本书适用于各种Linux网络程序的开发维护人 第1篇 基础知识篇第1章 Linux操作系统概述 31.1 Linux操作系统简介 41.1.1 Linux的来源 41.1.2 Linux的特征 51.2 常用的Linux命令 61.2.1 操作目录和处理文件 61.2.2 正文编辑命令vi 91.2.3 进程处理 111.2.4 安全与权限设置 121.2.5 基本的网络命令 141.2.6 联机帮助 161.3 文件系统 171.3.1 Linux文件系统概述 181.3.2 Linux文件系统的组成 181.3.3 文件系统管理 201.3.4 虚拟文件系统VFS 221.3.5 文件系统的相关调用 251.3.6 安装和卸载文件系统 271.4 Linux系统的安全性 291.4.1 安装和启动安全 291.4.2 用户账号与口令 301.4.3 文件与系统备份 311.4.4 网络服务的安全 321.5 小结与练习 331.5.1 小结 331.5.2 习题与思考 33第2章 TCP/IP协议 352.1 网络传输分层 362.1.1 OSI参考模型 362.1.2 TCP/IP协议簇 372.2 IP协议 392.2.1 IP报文格式 402.2.2 IP地址 422.2.3 子网与网络掩码 442.2.4 IP路由 452.2.5 IP层的其他控制协议 462.3 差错和控制报文协议ICMP 472.4 TCP协议 492.4.1 TCP传输原理 492.4.2 传输层端口 502.4.3 TCP格式 502.4.4 建立一个TCP连接 532.4.5 TCP序列号预测 532.5 UDP协议 542.5.1 UDP协议简介 542.5.2 何时使用UDP协议 552.6 小结与练习 562.6.1 小结 562.6.2 习题与思考 56第3章 网络编程基础 573.1 客户端与服务器通信模型 583.2 套接字编程基础 593.2.1 套接字简介 593.2.1 套接字网络编程原理 603.2.3 基本套接字函数 623.3 完整的读写函数 723.4 数据的传递 763.4.1 传递整形数据示例 763.4.2 传递字符串数据示例 813.4.3 数据传递的格式问题 853.5 小结与练习 853.5.1 小结 853.5.2 习题与思考 86第4章 进程控制 874.1 进程的概念 884.1.1 程序与进程 884.1.2 进程控制块PCB 894.1.3 进程的标志 894.1.4 多进程程序的特点 924.2 用fork创建进程 934.2.1 Linux系统描述进程的数据结构 934.2.2 fork调用完成的操作 944.2.3 子进程与父进程 954.2.4 一个fork调用的简单实例 964.2.5 fork调用对文件的共享存取 974.3 和进程相关的系统调用 1014.3.1 Linux系统调用简介 1014.3.2 exec系统调用 1014.3.3 system函数调用 1044.3.4 wait函数调用 1044.3.5 waitpid函数调用 1054.3.6 setpgrp函数调用 1074.3.7 signal函数调用 1074.3.8 kill函数调用 1094.3.9 alarm系统调用 1104.3.10 exit函数调用 1114.4 守护进程 1124.5 多进程编程的技巧 1144.5.1 程序结构问题 1144.5.2 选择主体分叉点 1144.5.3 进程间关系处理 1144.5.4 进程间通信问题 1154.6 小结与练习 1154.6.1 小结 1154.6.2 习题与思考 115第5章 域名系统与套接字选项 1175.1 域名系统简介 1185.1.1 域名 1195.1.2 名称服务器 1205.1.3 DNS客户/服务器机制 1205.2 域名和IP地址的获取 1215.2.1 通过域名获得IP地址 1215.2.2 通过IP地址获取域名信息 1235.2.3 获取本地主机的域名地址 1255.2.4 获取套接字本地名和相连的端地址 1265.2.5 internet地址操作的函数调用 1295.3 端口号和服务名的获取 1305.3.1 通过服务名获取端口号 1305.3.2 通过端口号获取服务名 1315.4 其他网络相关信息的获取 1325.4.1 getprotoent函数调用 1325.4.2 getservent函数调用 1345.5 套接字选项 1365.4.1 函数getsockopt和setsockopt 1365.4.2 通用套接字选项 1375.4.3 函数fcntl和ioctl 1415.5 小结与练习 1425.5.1 小结 1425.5.2 习题与思考 143第6章 UDP数据报编程 1456.1 UDP数据报编程概述 1466.2 recvfrom和sendto函数 1476.3 UDP服务器的工作特点 1496.4 UDP客户机的工作特点 1526.5 UDP套接字的连接 1566.5.1 UDP套接字如何建立连接 1566.5.2 数据报发送后情况 1586.5.3 连接的重设与取消 1586.6 UDP应用程序示例 1596.6.1 发送和接收指定的数据报实例 1596.6.2 OICQ的实现原理 1636.7 UDP编程的一些常见问题 1666.7.1 UDP与TCP的比较 1666.7.2 UDP缺乏流量控制 1666.7.3 数据报的丢失问题 1676.7.4 数据的排序问题 1676.8 小结与练习 1676.8.1 小结 1676.8.2 习题与思考 168第2篇 应用提高篇第7章 进程间通信与同步 1717.1 信号处理 1727.1.1 信号的概念 1727.1.2 Linux系统支持的信号集 1727.1.3 信号的捕获与处理 1747.1.4 信号掩码 1767.1.5 sigaction系统调用 1777.1.6 pause系统调用 1797.2 管道 1797.2.1 管道的概念 1797.2.2 创建管道 1807.2.3 其他相关的系统调用 1817.3 消息队列 1837.3.1 消息队列的数据结构 1837.3.2 有关的系统调用 1847.4 共享内存 1887.4.1 共享内存的创建 1897.4.2 有关的系统调用 1917.5 信号量 1947.5.1 信号量的基本概念 1947.5.2 POSIX无名信号量 1957.5.3 system V信号量 1967.5.4 用信号量解决互斥问题 2017.6 小结与练习 2047.6.1 小结 2047.6.2 习题与思考 205第8章 高级套接字函数 2078.1 函数recv和send 2088.1.1 send的用法 2088.1.2 recv的用法 2098.2 函数readv和writev 2118.3 函数recvfrom和sendto 2148.4 函数recvmsg和sendmsg 2148.5 套接字的关闭 2168.5.1 用close函数关闭套接字 2168.5.2 shutdown函数的使用 2168.6 小结与练习 2188.6.1 小结 2188.6.2 习题与思考 218第9章 系统I/O与服务器模型 2199.1 系统I/O模型简介 2209.2 阻塞与非阻塞 2219.2.1 阻塞套接字的特点 2219.2.2 阻塞式I/O实现超时控制 2269.2.3 非阻塞套接字 2279.3 多路复用的I/O模型 2319.3.1 多路复用简介 2319.3.2 select函数 2329.3.3 多路复用I/O的应用实例 2349.4 信号驱动的I/O模型 2449.5 创建Linux网络服务器 2469.5.1 TCP循环服务器 2469.5.2 TCP并发服务器 2479.5.3 UDP循环服务器 2479.5.4 UDP并发服务器 2489.5.5 多路复用I/O并发服务器 2499.5.6 一个TCP并发服务器实例 2499.6 小结与练习 2529.6.1 小结 2529.6.2 习题与思考 252第10章 带外数据 25310.1 带外数据概述 25410.2 带外数据的发送与接收 25510.2.1 带外数据标志 25510.2.2 发送带外数据 25610.2.3 接收带外数据 25710.2.4 应用程序对带外数据的处理 25910.2.5 带外数据的覆盖 25910.3 发送带外数据应用实例 26010.4 几种接收带外数据的方法 26310.4.1 通过信号SIGURG接收带外数据 26310.4.2 通过多路复用模型接收带外数据 26710.4.3 通过检测带外标识接收带外数据 26910.5 带外数据的覆盖实例 27310.6 小结与练习 27810.6.1 小结 27810.6.2 习题与思考 279第3篇 深入实例篇第11章 多线程编程 28311.1 线程的基本概念 28411.1.1 什么是线程 28511.1.2 采用多线程的优点 28511.1.3 线程的结构一览 28611.1.4 多线程的标准 28811.2 线程的相关调用 28911.2.1 创建线程的函数 28911.2.2 退出线程的函数 29011.2.3 创建线程的简单实例 29011.2.4 其他相关的函数调用 29211.3 线程间的互斥 29811.3.1 线程互斥的概念 29811.3.2 相关的函数调用 29911.4 线程的同步 30311.4.1 线程同步的概念 30311.4.2 相关的函数调用 30311.5 线程的特定数据区 30711.5.1 线程特定数据区概念 30711.5.2 相关的函数调用 30811.5.3 线程特定数据使用的方法 31011.6 一个多线程扫描端口的实例 31111.7 小结与练习 31611.7.1 小结 31611.7.2 习题与思考 316第12章 原始套接字编程 31912.1 原始套接字概述 32012.2 创建原始套接字 32012.3 发送和接收数据包 32212.4 产生欺骗的IP数据包 32312.5 Ping应用程序分析 32712.5.1 Ping命令的功能 32712.5.2 Ping程序的设计实现 32812.5.3 Ping命令攻击目标机器 33412.6 小结与练习 33712.6.1 小结 33712.6.2 习题与思考 337第13章 综合实例——网络业务系统模拟 33913.1 银行业务系统背景 34013.1.1 银行业务系统遵循的原则 34013.1.2 银行业务系统的特点 34013.2 总体设计方案 34113.2.1 系统构成 34113.2.2 功能说明 34213.3 详细设计方案(网络编程部分) 34313.3.1 系统网络拓扑结构图 34313.3.2 程序流程介绍 34413.3.3 功能模块的划分 34513.4 源代码解析 34613.4.1 相关的头文件 34613.4.2 公用函数的说明 34913.4.3 地市服务器通信模块 36113.4.4 与对方前置机通信模块 37813.4.5 前置机处理模块 39513.5 小结与练习 41713.5.1 小结 41713.5.2 习题与思考 418附录 部分习题参考答案 419
  • 内容简介:
    本书详尽而细致地介绍了在Linux操作系统下进行网络编程所需要的各种知识,对网络编程的模型和原理、套接字函数的使用方法、多线程和多进程的结构以及大型网络应用程序的设计方法等进行了全面的讲解书中还穿插了大量的实例程序,并配以说明,更加方便读者的学习和理解.
      本书内容的精心安排、简洁的措辞、丰富的实例可以使初学者迅速掌握Linux网络编程的技术,同时,Linux的高级程序员也可以从中得到一些启示,从而最大限度地发挥Linux程序的潜能。本书适用于各种Linux网络程序的开发维护人
  • 目录:
    第1篇 基础知识篇第1章 Linux操作系统概述 31.1 Linux操作系统简介 41.1.1 Linux的来源 41.1.2 Linux的特征 51.2 常用的Linux命令 61.2.1 操作目录和处理文件 61.2.2 正文编辑命令vi 91.2.3 进程处理 111.2.4 安全与权限设置 121.2.5 基本的网络命令 141.2.6 联机帮助 161.3 文件系统 171.3.1 Linux文件系统概述 181.3.2 Linux文件系统的组成 181.3.3 文件系统管理 201.3.4 虚拟文件系统VFS 221.3.5 文件系统的相关调用 251.3.6 安装和卸载文件系统 271.4 Linux系统的安全性 291.4.1 安装和启动安全 291.4.2 用户账号与口令 301.4.3 文件与系统备份 311.4.4 网络服务的安全 321.5 小结与练习 331.5.1 小结 331.5.2 习题与思考 33第2章 TCP/IP协议 352.1 网络传输分层 362.1.1 OSI参考模型 362.1.2 TCP/IP协议簇 372.2 IP协议 392.2.1 IP报文格式 402.2.2 IP地址 422.2.3 子网与网络掩码 442.2.4 IP路由 452.2.5 IP层的其他控制协议 462.3 差错和控制报文协议ICMP 472.4 TCP协议 492.4.1 TCP传输原理 492.4.2 传输层端口 502.4.3 TCP格式 502.4.4 建立一个TCP连接 532.4.5 TCP序列号预测 532.5 UDP协议 542.5.1 UDP协议简介 542.5.2 何时使用UDP协议 552.6 小结与练习 562.6.1 小结 562.6.2 习题与思考 56第3章 网络编程基础 573.1 客户端与服务器通信模型 583.2 套接字编程基础 593.2.1 套接字简介 593.2.1 套接字网络编程原理 603.2.3 基本套接字函数 623.3 完整的读写函数 723.4 数据的传递 763.4.1 传递整形数据示例 763.4.2 传递字符串数据示例 813.4.3 数据传递的格式问题 853.5 小结与练习 853.5.1 小结 853.5.2 习题与思考 86第4章 进程控制 874.1 进程的概念 884.1.1 程序与进程 884.1.2 进程控制块PCB 894.1.3 进程的标志 894.1.4 多进程程序的特点 924.2 用fork创建进程 934.2.1 Linux系统描述进程的数据结构 934.2.2 fork调用完成的操作 944.2.3 子进程与父进程 954.2.4 一个fork调用的简单实例 964.2.5 fork调用对文件的共享存取 974.3 和进程相关的系统调用 1014.3.1 Linux系统调用简介 1014.3.2 exec系统调用 1014.3.3 system函数调用 1044.3.4 wait函数调用 1044.3.5 waitpid函数调用 1054.3.6 setpgrp函数调用 1074.3.7 signal函数调用 1074.3.8 kill函数调用 1094.3.9 alarm系统调用 1104.3.10 exit函数调用 1114.4 守护进程 1124.5 多进程编程的技巧 1144.5.1 程序结构问题 1144.5.2 选择主体分叉点 1144.5.3 进程间关系处理 1144.5.4 进程间通信问题 1154.6 小结与练习 1154.6.1 小结 1154.6.2 习题与思考 115第5章 域名系统与套接字选项 1175.1 域名系统简介 1185.1.1 域名 1195.1.2 名称服务器 1205.1.3 DNS客户/服务器机制 1205.2 域名和IP地址的获取 1215.2.1 通过域名获得IP地址 1215.2.2 通过IP地址获取域名信息 1235.2.3 获取本地主机的域名地址 1255.2.4 获取套接字本地名和相连的端地址 1265.2.5 internet地址操作的函数调用 1295.3 端口号和服务名的获取 1305.3.1 通过服务名获取端口号 1305.3.2 通过端口号获取服务名 1315.4 其他网络相关信息的获取 1325.4.1 getprotoent函数调用 1325.4.2 getservent函数调用 1345.5 套接字选项 1365.4.1 函数getsockopt和setsockopt 1365.4.2 通用套接字选项 1375.4.3 函数fcntl和ioctl 1415.5 小结与练习 1425.5.1 小结 1425.5.2 习题与思考 143第6章 UDP数据报编程 1456.1 UDP数据报编程概述 1466.2 recvfrom和sendto函数 1476.3 UDP服务器的工作特点 1496.4 UDP客户机的工作特点 1526.5 UDP套接字的连接 1566.5.1 UDP套接字如何建立连接 1566.5.2 数据报发送后情况 1586.5.3 连接的重设与取消 1586.6 UDP应用程序示例 1596.6.1 发送和接收指定的数据报实例 1596.6.2 OICQ的实现原理 1636.7 UDP编程的一些常见问题 1666.7.1 UDP与TCP的比较 1666.7.2 UDP缺乏流量控制 1666.7.3 数据报的丢失问题 1676.7.4 数据的排序问题 1676.8 小结与练习 1676.8.1 小结 1676.8.2 习题与思考 168第2篇 应用提高篇第7章 进程间通信与同步 1717.1 信号处理 1727.1.1 信号的概念 1727.1.2 Linux系统支持的信号集 1727.1.3 信号的捕获与处理 1747.1.4 信号掩码 1767.1.5 sigaction系统调用 1777.1.6 pause系统调用 1797.2 管道 1797.2.1 管道的概念 1797.2.2 创建管道 1807.2.3 其他相关的系统调用 1817.3 消息队列 1837.3.1 消息队列的数据结构 1837.3.2 有关的系统调用 1847.4 共享内存 1887.4.1 共享内存的创建 1897.4.2 有关的系统调用 1917.5 信号量 1947.5.1 信号量的基本概念 1947.5.2 POSIX无名信号量 1957.5.3 system V信号量 1967.5.4 用信号量解决互斥问题 2017.6 小结与练习 2047.6.1 小结 2047.6.2 习题与思考 205第8章 高级套接字函数 2078.1 函数recv和send 2088.1.1 send的用法 2088.1.2 recv的用法 2098.2 函数readv和writev 2118.3 函数recvfrom和sendto 2148.4 函数recvmsg和sendmsg 2148.5 套接字的关闭 2168.5.1 用close函数关闭套接字 2168.5.2 shutdown函数的使用 2168.6 小结与练习 2188.6.1 小结 2188.6.2 习题与思考 218第9章 系统I/O与服务器模型 2199.1 系统I/O模型简介 2209.2 阻塞与非阻塞 2219.2.1 阻塞套接字的特点 2219.2.2 阻塞式I/O实现超时控制 2269.2.3 非阻塞套接字 2279.3 多路复用的I/O模型 2319.3.1 多路复用简介 2319.3.2 select函数 2329.3.3 多路复用I/O的应用实例 2349.4 信号驱动的I/O模型 2449.5 创建Linux网络服务器 2469.5.1 TCP循环服务器 2469.5.2 TCP并发服务器 2479.5.3 UDP循环服务器 2479.5.4 UDP并发服务器 2489.5.5 多路复用I/O并发服务器 2499.5.6 一个TCP并发服务器实例 2499.6 小结与练习 2529.6.1 小结 2529.6.2 习题与思考 252第10章 带外数据 25310.1 带外数据概述 25410.2 带外数据的发送与接收 25510.2.1 带外数据标志 25510.2.2 发送带外数据 25610.2.3 接收带外数据 25710.2.4 应用程序对带外数据的处理 25910.2.5 带外数据的覆盖 25910.3 发送带外数据应用实例 26010.4 几种接收带外数据的方法 26310.4.1 通过信号SIGURG接收带外数据 26310.4.2 通过多路复用模型接收带外数据 26710.4.3 通过检测带外标识接收带外数据 26910.5 带外数据的覆盖实例 27310.6 小结与练习 27810.6.1 小结 27810.6.2 习题与思考 279第3篇 深入实例篇第11章 多线程编程 28311.1 线程的基本概念 28411.1.1 什么是线程 28511.1.2 采用多线程的优点 28511.1.3 线程的结构一览 28611.1.4 多线程的标准 28811.2 线程的相关调用 28911.2.1 创建线程的函数 28911.2.2 退出线程的函数 29011.2.3 创建线程的简单实例 29011.2.4 其他相关的函数调用 29211.3 线程间的互斥 29811.3.1 线程互斥的概念 29811.3.2 相关的函数调用 29911.4 线程的同步 30311.4.1 线程同步的概念 30311.4.2 相关的函数调用 30311.5 线程的特定数据区 30711.5.1 线程特定数据区概念 30711.5.2 相关的函数调用 30811.5.3 线程特定数据使用的方法 31011.6 一个多线程扫描端口的实例 31111.7 小结与练习 31611.7.1 小结 31611.7.2 习题与思考 316第12章 原始套接字编程 31912.1 原始套接字概述 32012.2 创建原始套接字 32012.3 发送和接收数据包 32212.4 产生欺骗的IP数据包 32312.5 Ping应用程序分析 32712.5.1 Ping命令的功能 32712.5.2 Ping程序的设计实现 32812.5.3 Ping命令攻击目标机器 33412.6 小结与练习 33712.6.1 小结 33712.6.2 习题与思考 337第13章 综合实例——网络业务系统模拟 33913.1 银行业务系统背景 34013.1.1 银行业务系统遵循的原则 34013.1.2 银行业务系统的特点 34013.2 总体设计方案 34113.2.1 系统构成 34113.2.2 功能说明 34213.3 详细设计方案(网络编程部分) 34313.3.1 系统网络拓扑结构图 34313.3.2 程序流程介绍 34413.3.3 功能模块的划分 34513.4 源代码解析 34613.4.1 相关的头文件 34613.4.2 公用函数的说明 34913.4.3 地市服务器通信模块 36113.4.4 与对方前置机通信模块 37813.4.5 前置机处理模块 39513.5 小结与练习 41713.5.1 小结 41713.5.2 习题与思考 418附录 部分习题参考答案 419
查看详情
相关图书 / 更多
Linux 网络编程技术
LiteOS轻量级物联网操作系统实战 微课视频版
魏杰
Linux 网络编程技术
Linux操作系统活页式教程
李国辉
Linux 网络编程技术
Linux综合实训案例教程
陈智斌;梁鹏;肖政宏
Linux 网络编程技术
Linux系统自动化运维(Python版)(微课版)
张莉,丁传炜
Linux 网络编程技术
Linux操作系统
刘睿;包大宏;兰晓天;李吉桃;王仕杰;吴晓清;张宏洲;杨云江
Linux 网络编程技术
Linux源码趣读
闪客
Linux 网络编程技术
Linux 内核完全注释(20周年版) 赵炯
赵炯
Linux 网络编程技术
Linux网络操作系统项目式教程(CentOS 7.6)(微课版)(第2版)
刘正,张运嵩,尤澜涛主编
Linux 网络编程技术
Linux 内核完全剖析——基于0.12内核(15周年版) 赵炯
赵炯
Linux 网络编程技术
Linux高效学习教程:Linux就该这么学+Linux常用命令自学手册
刘遄 刘遄
Linux 网络编程技术
Linux后端开发工程实践
万木春
Linux 网络编程技术
Linux运维从入门到精通
明日科技