- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
《TCP-IP详解_卷3_TCP事务协议,HTTP,NNTP和UNIX域协议》.pdf
下载
第一部分 TCP事务协议
第1章 T/TCP 概 述
1.1 概述
本章首先介绍客户-服务器事务概念。我们从使用 U D P 的客户-服务器应用开始,这是最
简单的情形。接着我们编写使用 T C P 的客户和服务器程序,并由此考察两台主机间交互的
T C P / I P分组。然后我们使用 T / T C P ,证明利用T / T C P可以减少分组数,并给出为利用 T / T C P 需
要对两端的源代码所做的最少改动。
接下来介绍了运行书中示例程序的测试网络,并对分别使用 U D P 、T C P和T / T C P 的客户-
服务器应用程序进行了简单的时间耗费比较。我们考察了一些使用 T C P 的典型I n t e r n e t应用程
序,看看如果两端都支持 T / T C P ,将需要做哪些修改。紧接着,简要介绍了 I n t e r n e t协议族中
事务协议的发展历史,概略叙述了现有的 T / T C P实现。
本书全文以及有关 T / T C P 的文献中,事务一词的含义都是指客户向服务器发出一个请求,
然后服务器对该请求作出应答。 I n t e r n e t 中最常见的一个例子是,客户向域名服务器 ( D N S )发
出请求,查询域名对应的 I P地址,然后域名服务器给出响应。本书中的事务这个术语并没有
数据库中的事务那样的含义:加锁、两步提交、回退,等等。
1.2 UDP上的客户-服务器
我们先来看一个简单的 U D P客户-服务器应用程序的例子,其客户程序源代码如图 1 - 1所
示。在这个例子中,客户向服务器发出一个请求,服务器处理该请求,然后发回一个应答。
图1-1 UDP上的简单客户程序
2计计第一部分 TCP事务协议
下载
图1-1 (续)
本书中所有源代码的格式都是这样。每一非空行前面都标有行号。正文中叙述
某段源代码时,这段源代码的起始和结束行号标记于正文段落的左边,如下面的正
文所示。有时这些段落前面会有一小段说明,对所描述的源代码进行概要说明。源
代码段开头和结尾处的水平线标明源代码段所在的文件名。这些文件名通常都是指
我们在1 . 9节中将介绍的4 . 4版B S D - L i t e 中发布的文件。
我们来讨论这个程序的一些有关特性,但不详细描述插口函数,因为我们假设读者对这
些函数有一些基本的认识。关于插口函数的细节在参考书 [Stevens 1990]的第6章中可以找到。
图1 - 2给出了头文件 c l i s e r v . h。
1. 创建U D P插口
1 0 - 1 1 s o c k e t函数用于创建一个U D P插口,并将一个非负的插口描述符返回给调用进程。
出错处理函数e r r _ s y s参见参考书 [Stevens 1992] 的附录B . 2 。这个函数可以接受任意数目的
参数,但要用 v s p r i n t f 函数对它们格式化,然后这个函数会打印出系统调用所返回的
e r r n o值所对应的U n i x 出错信息,然后终止进程。
2. 填写服务器地址
1 2 - 1 5 首先用m e m s e t函数将I n t e r n e t插口地址结构清零,然后填入服务器的I P地址和端口号。
为简明起见,我们要求用户在程序运行中通过命令行输入一个点分十进制数形式的 I P 地址
(a r g v[ 1 ] )。服务器端口号(U D P _ S E R V _ P O R T)在头文件 c l i s e r v . h中用# d e f i n e定义,在
本章的所有程序首部中都包含了该头文件。这样做是为了使程序简洁,并避免使调用
g e t h o s t b y n a m e和g e t s e r v b y n a m e函数的源代码复杂化。
3. 构造并向服务器发送请求
1 6 - 1 9 客户程序构造一个请求 ( 只用一行注释来表示) ,并用s e n d t o函数将其发出,
文档评论(0)