Linux网络编程 第1版 pdf

所需积分/C币:10 2017-01-14 09:34:32 118.89MB PDF
5
收藏 收藏
举报

Linux网络编程 第1版 pdf 免积分下载
Linux典藏大系 ⑥ ChinaUnix Linux 宋敬彬等编著 孙海滨 网络编程 清华大学出版社 北京 内容简介 Linux是目前最流行的开源操作系统,网络功能在 Linux下占有核心的地位。本书循序渐进地从应用 层到 Linux内核、从基本知识点到综合案例,向读者介绍如何在Lnux下进行网络程序设计。本书内容分 为4个部分:Linuⅸx程序设计基础部分、Uinⅸx用户空间网络编程部分、 Linux内核网络编程部分以及综合 案例部分。内容包含 Linux系统概述、 Linux编程环境、 Linux文件系统简介、 Linux下的进程和线程、TCPP 协议族、应用层网络服务程序、TCP编程、主机信息获取、数据⑩O复用、UDP编程、髙级套接字、套接 字选项、原始套接字、服务器模型、IPv6、 Linux内核网络部分结构及分布、 netfilter框架内报文处理。为 了方便读者学习,本书最后一个部分介绍了3个综合案例,包括应用层的Web服务器例子、简单的应用 层网络协议站例子和内核层网防火墙的例子。 本书适合广大的 Linux平台下的网络程序设计人员和大中专院校学生阅读,尤其是有一定 Linux基础 知识的编程技术人员。 本书封面贴有清华大学出版社防伪标签,无标签者不得销售 版权所有,侵权必究。侵权举报电话:010-6278298913701121933 图书在版编目(C|P)数据 Linuⅸ网络编程/宋敬彬,孙海滨等编著.一北京:清华大学出版社,2010.1 ( Linux典藏大系) ISBN9787-302-20717-7 I.L…Ⅱ.①宋…②孙…Ⅲ. Linux操作系统一程序设计Ⅳ.TP31689 中国版本图书馆CIP数据核字(2009)第139544号 责任编辑:夏兆彦 责任校对:徐俊伟 责任印制:王秀菊 出版发行:清华大学出版社 地址:北京清华大学学研大厦A座 hp:∥/www.tup.com.cn 邮编:100084 社总机:010-62770175 邮购:010-62786544 投稿与读者服务:010-62776969,c-service@tup.tsinghua.edu.cn 质量反馈:010-62772015,zhiliang@tup.tsinghua.edu.cn 印刷者:北京市世界知识印刷厂 装订者:三河市金元印装有限公司 经销:全国新华书店 开本:185×260印张:44.75字数:1113千字 版次:2010年1月第1版 印次:2010年1月第1次印刷 印数:1~5000 定价:79.00元 本书如存在文字不清、漏印、缺页、倒页、脱页等印装质量问题,请与清华大学出版社出版部联系 调换。联系电话:(010)62770177转3103产品编号:03437901 前言 Linuκ操作系统已经成为目前最流行的开源操作系统,在服务器、嵌入式系统有着广 泛的应用,并且逐步走入个人电脑的桌面操作系统。 Linux的网络程序设计在服务器领域、 嵌入式领域有着广泛的应用。例如Web服务器、P2P应用、嵌入式网络机顶盒、IPTV机 顶盒、手持设备等,上述产品大部分采用了开源的 Linux系统。因此,熟悉并且能够编写 网络程序代码,构建自己的网络架构程序是十分重要的。 本书全面地介绍了 Linux的网络编程技术,并以实例介绍了 Linux的应用层网络设计、 网络协议栈的实现原理和 Linux内核防火墙的技术。学完本书之后,读者可以有编写比较 复杂项目的本领。 本书的特点 1.循序渐进,由浅入深 为了方便读者学习,本书首先介绍 Linux的开发环境,然后介绍基本的网路程序设计 方法,再进行Linuⅸ内核的网络设计方法。最后,通过3个综合案例,综合运用上述知识, 让读者更深刻地了解网络程序设计的知识。在每一部分的介绍中都是按照由浅入深的方式 进行介绍,先介绍基础知识,再结合高级知识进行介绍。 2.技术全面,内容充实 本书基本涵盖了 Linux网络程序设计的所有知识面,特别对于高级网络编程、原始套 接字等高级应用层网络程序设计给出了全面的介绍和丰富的例子程序。除了用户界面的网 络程序设计外,本书还对内核空间的网络程序设计进行了详细的介绍,针对 netfilter框架, 做了很细致的讲解,并给出了一个全面使用 netfilter框架的案例方便读者深入了解 3.对比讲解,理解深刻 由于 Linux程序设计的知识用于空间和内核空间的代码和模块是相互作用的,在多个 主要函数介绍过程中,本书对用户空间和内核空间进行交互式的对比介绍,使读者在了解 如何使用的情况下,更深入地了解为什么这样用,“知其然并知其所以然”。 4.案例精讲,深入剖析 根据本人多年的项目经验,只有实际接触案例和代码才能够对知识点更深入地了解。 本书在介绍了 Linux网络程序设计知识点的基础上,通过具有典型意义的3个案例,对各 前言 个知识点包括应用层的HTTP协议的Web服务器、协议栈原理的协议栈案例和内核网络的 防火墙案例进行了深入剖析。 本书的内容 第1章:为了方便读者对 Linux历史文化的了解,这一章从 Linux的发展历史、发展 要素、发行版本和内核的选择、架构、GPL许可证等几个方面向读者介绍 Linux操作系统。 第2章:比较详细地介绍了在 Linux环境下进行软件开发所必须的几个方面,包括 Linux 环境下的编辑器、GCC编译器、 Makefile的编写、如何使用GDB进行程序调试等。 第3章:介绍了 Linux下的文件系统的概念以及如何使用文件相关函数进行文件操作, 通过本章读者可以掌握文件编程。 第4章:对 Linux下进程、线程以及之间的通信方法进行了详细的介绍。内容包含进 程和线程的概念、进程的产生方式、进程间的IPC通信、 Linux下的线程及通信方法 第5章:重点介绍了TCP/P的模型和多个主要的协议类型,并对IP地址的概念进行 了介绍,最后简单介绍了字节序的概念 第6章:介绍了用户空间的网络协议,包含HTTP协议、FTP协议、NFS协议和TELNET 协议,最后介绍了如何利用xned定义自己的网络服务。 第7章:重点介绍了TCP网络程序设计的基础知识,包括套接字地址结构、TCP网络 程序流程。对套接字编程的主要函数进行了介绍,并提供了一个简单的例子。 第8章:重点介绍了主机信息的获取,包含网络字节需转换、IP地址转换函数、套接 字类型判定、协议名称处理、DNS获取函数等。 第9章:介绍了 Linux下的IO复用,除了常用的 Linux下的IO函数,重点介绍了阻 塞IO模型、非阻塞⑩O模型、IoO复用、信号驱动⑩O模型和异步⑩O模型等⑩o模型。 第10章:介绍了UDP协议的编程框架并给出了多个例子。对UDP编程中经常遇到 的问题进行了介绍,并给出了问题解决的方案。 第11章:介绍了网络编程中的高级套接字,包含UNⅨX域协议编程、广播、多播和 数据链路层访问。本章给出了详细的例子代码介绍上述的概念。 第12章:介绍套接字选项,对套接字选项的含义进行了详细的介绍,还介绍了ioct0 控制选项和fntO控制选项。 第13章:介绍了原始套接字,包含原始套接字的创建、接收数据、发送数据等,对 经常使用原始套接字进行程序设计的洪水攻击进行了比较详细的介绍。 第14~章:介绍服务器的模型,对循环服务器、简单并发服务器、TCP高级并发服务 器、IO复用循环服务器进行了详细介绍。 第15章:简单介绍了IPv6协议,对IPV4和IPv6两种协议的不同点进行讲解,最后 介绍了如何使用IPv6的接口进行程序设计。 第16章:介绍了 Linux内核中的网络部分代码,以及网络在内核中的分布、软中断、 网络数据在内核中的流程。 第17章:介绍了 Linux内置防火墙 netfilter的报文处理,并介绍了其中的5个钩子和 内核模块程序设计框架。 第18章:介绍了一个web服务器Shttpd的综合案例。从需求、设计、实现等方面 I 前言 介绍了Web服务器实现的主要框架和实现的技术难点。 第19章:介绍了一个应用层网络协议栈SIP的综合案例,以及网络协议栈的分层结构 实现,协议栈包含了物理层、MAC层、I层、ARP层、UDP层等方面。 第20章:介绍了一个内核防火墙 SIPFW的综合案例。在 netfilter框架的基础上,实 现了一个可以进行用户交互的、可进行信息统计的、网络数据报文过滤型防火墙。 适合的读者 口包括 Linux网络开发工作人员; 口 Linux网络开发爱好者 大中专院校的学生; 口社会培训学生。 本书作者及编委会成员 本书由宋敬彬、孙海滨主笔编写。其他参与编写和资料整理的人员有武冬、郅晓娜、 孙美芹、卫丽行、尹翠翠、蔡继文、陈晓宇、迟剑、邓薇、郭利魁、金贞姬、李敬才、李 萍、刘敬、陈慧、刘艳飞、吕博、全哲、佘勇、宋学江、王浩、王康、王楠、杨宗芳、张 严虎、周玉、张平、张靖波、周芳、杨罡、于海滨、张晶杰、张利峰、杨景凤、陈锴、郑 剑锋、叶佩思、张涛、赵东彪、王双。在此一并表示感谢! 本书编委会成员有欧振旭、陈杰、陈冠军、顼宇峰、张帆、陈刚、程彩红、毛红娟、 聂庆亮、王志娟、武文娟、颜盟盟、姚志娟、尹继平、张昆、张薛。 虽然我们对书中所述的内容都尽量予以核实,并多次进行文字校对,但因时间所限, 可能还存在疏漏和不足之处,恳请读者批评指正。 编著者 目录 第1篇 Linux网络开发基础 第1章 Linux操作系统概述 1.1 Linux发展历史 ,,.,,,,,,,,,,, 111 Linux的诞生和发展 ,由,,,,,,,,,,,,,,,,,,·,,,,,,, 2 1.12 Linux名称的由来 12 Linux的发展要素 ““ 121UNIX操作系统 122Minⅸx操作系统…… 444 123 POSIX标准 ,,,,, 13 Linux与UNIX的异同 14操作系统类型选择和内核版本的选择 8,,,,,,,.,,,,,,,,,, ………………………………5 14.1常见的不同公司发行的 Linux异同 14.2内核版本的选择 1.5 Linux的系统架构 、aB,,,,,,,,,、,,,,·,,,,,,,,,,,,,,,,、,,,,, 1.5.1 Linux内核的主要模块… 66779 152 Linux的文件结构 1.6GNU通用公共许可证… 16.1GPL许可证的历史………………………………10 162GPL的自由理念 ………………10 163GPL的基本条款 …………11 164关于GPL许可证的争议…… ………………12 17 Linux软件开发的可借鉴之处 12 18小结 13 第2章 Linux编程环境… ………14 2.1 Linux环境下的编辑器 14 21.1vim使用简介… …………14 2.1.2使用vim建立文件………… …15 21.3使用vm编辑文本………………………………………16 214vim的格式设置 ………………………………………18 目录 21.5vim配置文件. vimrc. ………………19 216使用其他编辑器…… ,,,,,,,.,,,,,,,,,,,,,,,,,,、, 19 22 Linux下的GCC编译器工具集 ………………………………………………………19 22.1GCC简介 ……………………………………………………………………19 222编译程序的基本知识 21 223·单个文件编译成执行文件… 22 224编译生成目标文件 22 22.5多文件编译 226预处理 …………24 22.7编译成汇编语言 ………………24 228生成和使用静态链接库 25 229生成动态链接库 ………………………………26 2210动态加载库 …………29 2.211GCC常用选项 …………………………………31 2.2.12编译环境的搭建… ¨…………33 23 Makefile文件简介… ……34 231一个多文件的工程例子… ………………34 232多文件工程的编译……………36 2.3.3 Makefile的规则…………… …………………………37 234 Makefile中使用变量 ……………………39 23.5搜索路径 ………………………………………43 23.6自动推导规则 ,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,, ……4 2.37递归make 44 238 Makefile中的函数 ………46 24用GDB调试程序 ,,,,,,,,,,.,,,,,4,,,,、,,a,,,,,、,,,,,,,,,,·, ……………47 241编译可调试程序 ……48 24.2使用GDB调试程序 ………………………49 24.3GDB常用命令 ………52 244其他的GDB… ………"…………………………59 2.5小结 ,,,,.,,,,,,,,,,,,,,,·,,,,,,.,,,,,,,,,,,,,,,中 第3章文件系统简介 …………………61 31 Linux下的文件系统… ¨…………………………61 31.1Lnux下文件的内涵 ………61 31.2文件系统的创建… 62 31.3挂接文件系统… ………64 3.14索引节点 inode ………………65 3.15普通文件… …………………66 31.6设备文件… …………………6 31.7虚拟文件系统VFS …………………………68 目录 32文件的通用操作方法 32.1文件描述符…………………………………………………72 322打开创建文件 openc、 create函数 …12 323关闭文件 closeD函数 ,4 76 324读取文件read函数…………7 32.5写文件 write函数…………………………………………79 3.2.6文件偏移 IseekO函数………………890 327获得文件状态 state函数…………………83 328文件空间映射mmap0函数… ……85 329文件属性fntO函数…………………88 32.10文件输入输出控制 ioctl函数…… ……………………92 33 socket文件类型 ,,.,.,,..,,,,,,,,,,,,,主,,,,,未,,,,,,由非乐,, 93 34小结…………………………………………………93 第4章程序、进程和线程… …………94 4.1程序、进程和线程的概念………………………94 4.1.1程序和进程的差别…………………94 4.1.2 Linux环境下的进程 ……………9 4.1.3进程和线程 ……………………96 4.2进程产生的方式 …96 42.1进程号……… …………………96 4.2.2进程复制 forkO 4.2.3 system0方式…… ,,,,,,、,,,,,,,着,,,,·,,,、,,,,、,,,,,,,, 424进程执行 execO函数系列……………………………………………99 4.2.5所有用户态进程的产生进程init……………………………………100 4.3进程间通信和同步 ……101 4.3.1半双工管道… ·101 4.3.2命名管道 …107 4.3.3消息队列… …108 4.3.4消息队列的一个例子………………………………114 4.35信号量 ,,,,,,,,·,,,,,.,a,,,,,,,,,,,9,,,,,、,,,,,.着 …………………116 4.36共享内存 …………121 4.3.7信号 …………124 44 Linux下的线程 ,中,,,、,,,,,,,,,,,,,,中, ,,,,中.,, ………………127 44.1多线程编程实例……………………………………127 44.2 Linux下线程创建函数 pthread createD ……129 44.3线程的结束函数 pthread join和 pthread exito………129 4.44线程的属性………………………………………………………………130 44.5线程间的互斥………………………………………………132 44.6线程中使用信号量……………………133 II·

...展开详情
试读 127P Linux网络编程 第1版 pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
xiaoaidelala 非常感谢,看起来很方便!!
2019-10-17
回复
_微笑_ 很好,还带有书签,赞!!!
2017-10-27
回复
jojofrommilan 很清晰 不错
2017-10-11
回复
ahaiboa 很好,还带有书签,赞!!!
2017-02-23
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 签到新秀

    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 分享王者

    成功上传51个资源即可获取
关注 私信 TA的资源
上传资源赚积分or赚钱
    最新推荐
    Linux网络编程 第1版 pdf 10积分/C币 立即下载
    1/127
    Linux网络编程 第1版 pdf第1页
    Linux网络编程 第1版 pdf第2页
    Linux网络编程 第1版 pdf第3页
    Linux网络编程 第1版 pdf第4页
    Linux网络编程 第1版 pdf第5页
    Linux网络编程 第1版 pdf第6页
    Linux网络编程 第1版 pdf第7页
    Linux网络编程 第1版 pdf第8页
    Linux网络编程 第1版 pdf第9页
    Linux网络编程 第1版 pdf第10页
    Linux网络编程 第1版 pdf第11页
    Linux网络编程 第1版 pdf第12页
    Linux网络编程 第1版 pdf第13页
    Linux网络编程 第1版 pdf第14页
    Linux网络编程 第1版 pdf第15页
    Linux网络编程 第1版 pdf第16页
    Linux网络编程 第1版 pdf第17页
    Linux网络编程 第1版 pdf第18页
    Linux网络编程 第1版 pdf第19页
    Linux网络编程 第1版 pdf第20页

    试读结束, 可继续阅读

    10积分/C币 立即下载 >