计算机系列教材 TCP IP网络编程原理与技术作者: 钟辉,臧晗,董洁,宋凯,孟祥宇 著出版时间: 2019年版丛编项: 计算机系列教材内容简介 Internet是世界上z大的计算机互连网络,TCP/IP是Internet上使用z为成熟的协议。本书重点介绍用TCP/IP进行编程的主要原理和编程环境,并举出实例来解释这些编程原理和概念。 网络中最基本的通信基础是客户服务器模式,它在计算机通信中占主导地位。本书内容主要包括客户服务器各部件的功能,还说明了如何构建客户和服务器软件。介绍了客户服务器模式的基本概念,TCP/IP协议提供传输数据的基本机制;如何在TCP/IP环境下组织编写应用程序;计算机网络通信程序的构建方法;从而进一步了解在网络环境下构建分布式程序。 全书共分13章: 第1章着重介绍网络编程的目标和准备工作;第2章和第3章着重介绍客户服务器的概念以及并发处理存在的主要问题和应用;第4章和第5章基于Linux操作系统介绍套接字接口的概念和封装的系统调用函数;第6章介绍客户程序设计方法和需要注意的细节问题;第7章介绍了各种典型服务器的设计方法,需要注意的问题和细节;第8章和第9章介绍单线程编写并发程序的方法和应用条件;第10~12章介绍多服务、多协议服务器设计方法和并发管理过程;第13章介绍客户并发设计的方法和使用条件。全书提供了大量应用实例,每章后均附有习题。 本书适合作为高等院校计算机、软件工程、信息管理等专业高年级本科生、研究生的教材,也可供对TCP/IP比较熟悉并且对网络编程有所了解的开发人员、广大科技工作者和研究人员参考。目录目录第1章网络编程准备11.1TCP/IP技术的因特网应用11.2用TCP/IP构建分布式环境设计应用程序21.3用TCP/IP构建的标准和非标准应用协议21.4使用TCP/IP标准应用协议的例子21.5Telnet连接的例子31.6使用Telnet访问其他服务41.7TCP/IP应用协议和软件灵活性51.8从提供者的角度看服务51.9本教材内容介绍61.10小结6习题6第2章客户服务器模式软件设计概念82.1客户服务器的起源82.2客户服务器关键问题92.3客户服务器术语92.3.1客户和服务器102.3.2服务器特权和复杂性102.3.3标准和非标准客户软件102.3.4客户的参数化112.3.5无连接的和面向连接的服务器112.3.6无状态和有状态服务器122.3.7无状态文件服务器的例子132.3.8有状态文件服务器的例子132.3.9客户标识142.3.10无状态是一个协议问题152.3.11充当客户的服务器162.4小结16习题17第3章客户服务器模式软件中的并发处理183.1引言183.2网络中的并发183.3服务器中的并发193.4并发术语203.4.1进程概念203.4.2局部和全局变量的共享213.4.3过程调用223.5一个创建并发进程的例子223.5.1一个顺序执行的C实例223.5.2程序的并发版本233.5.3时间分片243.5.4单线程的进程253.5.5使各进程分离253.6执行新的代码263.7上下文切换和协议软件设计273.8并发和异步I/O273.9小结28习题28第4章网络编程协议的程序接口294.1引言294.2不精确指明的协议软件编程接口294.3接口功能304.4概念性接口的规范304.5操作系统调用314.6网络通信的两种基本方法314.7Linux中提供的基本I/O功能324.8将Linux I/O用于TCP/IP334.9小结33习题33第5章接口实现——套接字API355.1引言355.2Berkeley套接字355.3指明一个协议接口355.4套接字的抽象365.4.1套接字描述符和文件描述符365.4.2针对套接字的系统数据结构375.4.3主动套接字或被动套接字375.5指明端点地址385.6类属地址结构395.7套接字API中的主要系统调用405.7.1socket调用405.7.2connect调用405.7.3send调用415.7.4recv调用415.7.5close调用415.7.6bind调用415.7.7listen调用425.7.8accept调用425.7.9在套接字中使用read和write425.7.10套接字调用小结425.8用于整数转换的实用例程435.9在程序中使用套接字调用445.10套接字调用的参数所使用的符号常量445.11小结45习题46第6章客户软件算法及编程实例476.1引言476.2不是研究细节而是学习算法476.3客户体系结构和要解决的问题486.3.1标识服务器的位置486.3.2分析地址参数496.3.3查找域名506.3.4由名字查找某个熟知端口516.3.5端口号和网络字节顺序516.3.6由名字查找协议516.4TCP客户算法526.4.1分配套接字526.4.2选择本地协议端口号536.4.3选择本地IP地址中的一个基本问题536.4.4将TCP套接字连接到某个服务器546.4.5使用TCP与服务器通信546.4.6从TCP连接中读取响应556.4.7关闭TCP连接556.5UDP客户算法566.5.1连接的和非连接的UDP套接字576.5.2对UDP使用connect576.5.3使用UDP与服务器通信576.5.4关闭使用UDP的套接字576.5.5对UDP的部分关闭586.5.6关于UDP不可靠性的警告586.6客户编程实例的重要性586.7隐藏细节596.8针对客户程序的过程库596.8.1connectTCP的实现606.8.2connectUDP的实现606.8.3构成连接的过程616.9过程库使用636.10DAYTIME服务636.10.1针对DAYTIME的TCP客户实现646.10.2从TCP连接中进行读656.11TIME服务666.12访问TIME服务666.13精确时间和网络时延676.14针对TIME服务的UDP客户676.15ECHO服务696.16针对ECHO服务的TCP客户696.17针对ECHO服务的UDP客户716.18小结72习题74第7章服务器软件算法及编程实例767.1引言767.2概念性的服务器算法767.3并发服务器和循环服务器767.4面向连接的和无连接的访问777.5服务器需要考虑的几个问题777.5.1传输层协议的语义777.5.2选择传输协议787.5.3面向连接的服务器787.5.4无连接的服务器797.5.5服务器的故障、可靠性和无状态807.5.6优化无状态服务器807.5.7请求处理时间827.6服务器的四种基本类型827.7循环服务器的算法837.8循环的、面向连接的服务器的算法837.8.1用INADDR_ANY绑定熟知端口837.8.2将套接字置于被动模式847.8.3接受连接并使用这些连接847.9循环的、无连接的服务器的算法847.10并发服务器的算法857.11并发的、无连接的服务器的算法867.12并发的、面向连接的服务器的算法867.12.1服务器并发性的实现877.12.2把单独的程序作为从进程来使用877.13使用单线程获得表面上的并发性887.14各服务器类型所适用的场合897.15服务器类型小结897.16重要问题——服务器死锁907.17其他的实现方法907.18循环的、无连接的服务器设计917.18.1创建被动套接字917.18.2进程结构947.18.3TIME服务器举例947.18.4小结967.19循环的、面向连接的服务器设计967.19.1分配被动的TCP套接字967.19.2用于DAYTIME服务的服务器977.19.3进程结构977.19.4DAYTIME服务器举例987.19.5关闭连接1007.19.6连接终止和服务器的脆弱性1007.19.7小结1017.20并发的、面向连接的服务器设计1017.20.1并发ECHO1027.20.2循环与并发实现的比较1027.20.3进程结构1027.20.4并发ECHO服务器举例1037.20.5清除游离(errant)进程1067.20.6小结1067.21小结107习题107第8章使用线程模型实现并发1108.1引言1108.2Linux线程概述1108.3线程和进程的关系1118.3.1描述符、延迟和退出1118.3.2线程退出1128.4线程协调和同步1128.4.1互斥1128.4.2信号量1138.4.3条件变量1138.5使用线程的服务器实例1148.6监控1178.7小结118习题118第9章单线程并发服务器设计1199.1引言1199.2服务器中的数据驱动处理1199.3用单线程进行数据驱动处理1209.4单线程服务器的线程结构1209.5单线程ECHO服务器举例1219.6小结123习题124第10章多协议服务器设计12510.1引言12510.2减少服务器数量的动机12510.3多协议服务器的设计12510.4进程结构12610.5多协议DAYTIME服务器的例子12610.6共享代码的概念12910.7并发多协议服务器13010.8小结130习题130第11章多服务服务器设计13211.1引言13211.2合并服务器13211.3循环的、无连接的、多服务服务器设计13211.4循环的、面向连接的、多服务服务器设计13311.5并发的、面向连接的、多服务服务器设计13411.6并发的、单线程的、多服务服务器的实现13511.7从多服务服务器调用单独的程序13511.8多服务、多协议服务器设计13611.9多服务服务器的例子13711.10静态的和动态的服务器配置14311.11UNIX超级服务器——inetd14411.12inetd服务器的例子14611.13小结147习题148第12章服务器并发性管理14912.1引言14912.2在循环设计和并发设计间选择14912.3并发等级15012.4需求驱动的并发15012.5并发的代价15012.6额外开销和时延15112.7小时延问题15112.8从线程/进程的预分配15212.8.1Linux中的预分配15312.8.2面向连接的服务器中的预分配15312.8.3互斥、文件锁定和accept并发调用15412.8.4无连接的服务器中的预分配15512.8.5预分配、突发通信量和NFS15512.8.6多处理器上的预分配15612.9延迟的从线程/进程分配15612.10两种技术统一的基础15712.11技术的结合15712.12小结158习题158第13章客户软件并发设计16013.1引言16013.2并发的优点16013.3运用控制的动机16013.4与多个服务器的并发联系16113.5实现并发客户16213.6单线程实现16213.7使用ECHO的并发客户的例子16313.8并发客户的执行16713.9例子代码中的并发性16913.10小结169习题169附录A系统调用与套接字使用的库例程170参考文献192 上一篇: 数据科学与工程技术丛书 计算机时代的统计推断 算法、演化和数据科学 (美)布拉德利·埃夫隆,(美) 下一篇: 边缘计算 雾计算研究与应用 英文版 林福宏等著 2018年版