网站大量收购闲置独家精品文档,联系QQ:2885784924

TCP-IP详解3..doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TCP-IP详解3.

下载 第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 上的简单客户程序 第一部分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 函数将其发出,这样就 有一个U D P 数据报发往服务器。同样是为了简明起见,我们假设请求(R E Q U E S T )和应答 (R E P L Y)的报文长度为固定值。实用的程序应当按照请求和应答的最大长度来分配缓存空间, 但实际的请求和应答报文长度是变化的,而且一般都比较小。 4. 读取和处理服务器的应答 2 0 - 2 3 调用r e c v f r o m 函数将使进程阻塞(即置为睡眠状态),直至收到一个数据报。接着客 户进程处理应答(用一行注释来表示),然后进程终止。 由于r e c v f r o m 函数中没有超时机制,请求报文或应答报文中任何一个丢失都将 造成该进程永久挂起。事实上,U D P 客户-服务器应用的一个基本问题就是对现实世 界中的此类错误缺少健壮性。在本节的末

文档评论(0)

xznh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档