- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TCP事务协议,HTTP,NNTP和UNIX域协议1
下载
第一部分 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)