第三章TCP插口编程.pptVIP

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

第三章 TCP插口编程 3-1 概述 上一章我们详细介绍网络应用编程接口—插口API。 本章我们主要学习插口API的TCP插口编程,即利用TCP插口访问TCP协议提供的服务来实现应用进程间的通信。 TCP是TCP/IP体系中的运输层协议,是面向连接的,因而可提供可靠的、按序传送数据的服务。 主要内容 TCP协议中的一些关键运行机制 TCP插口编程模式,并给出实例 TCP插口程序对异常情况的处理方法 TCP带外数据的原理、发送和接收程序的设计。 3-2 TCP协议机制 本节主要介绍TCP协议中的一些关键运行机制,包括: TCP连接的建立和终止 TCP的有限状态机 TIME_WAIT状态 TCP的数据输出过程 TCP连接的建立和终止 TCP采用”三次握手”协议来建立连接,过程如下: 假定主机B中运行一个服务器进程。它首先向它的TCP协议层发出一个被动打开命令(调用listen()),告诉它的TCP要准备好接受客户进程的连接请求。然后服务器进程就处于”监听”状态,不断检测是否有客户进程发了连接请求。若有,立即做出响应。 假定主机A中运行着客户进程。它首先向其TCP协议层发出主动打开命令(调用connect()),表明要向某个IP地址的某个端口建立运输连接。主机A的TCP向主机B的TCP发出连接请求报文段,其首部中的同步比特SYN应置为1,同时选择一个序号X,表明在后面传输数据时的第一个数据字节的序号是X。(第一次握手) 主机B的TCP收到连接请求报文段后,如同意,则发回确认。在确认报文段中应将SYN置为1,确认序号应为X+1,同时也为自己选择一个序号Y。(第二次握手) 主机A的TCP收到此报文段后,还要向B给出确认,其确认序号为Y+1,同时,运行客户进程的主机A的TCP协议层通知上层应用进程,连接已经确立。(第三次握手) 当运行服务器进程的主机B的TCP收到主机A的确认后,也通知其上层应用进程,连接已经建立。 TCP连接的终止 数据传输完毕后,需要释放连接,具体过程如下:(假定主机A的客户进程先向其TCP协议层发出连接释放请求) 主机A上的TCP协议层通知对方要释放从A到B这个方向的连接,将发往主机B的TCP报文段首部的终止比特FIN置1,其序号等于前面已传送过的数据的最后一个字节的序号加1(为u)。 主机B的TCP协议层收到释放连接的通知后,即发出确认,其序号为u+1,同时通知上层的应用进程。这时,从A到B的连接就释放了,连接处于半关闭状态。这种状态相当于主机A向主机B说:”我已经没有数据要发送了,但你如果还发送数据,我仍可以接收。” 此后,主机B不再接收主机A发来的数据。但若主机B还有一些数据要发送主机A,则可继续发送。主机A只要收到数据,仍应向主机B发送确认。 当主机B再也没有数据可发送时,其应用进程就通知TCP协议层释放连接。主机B发出连接释放报文段,除了将终止比特FIN置1,并使其序号v等于前面已传送过的数据的最后一个字节的序号加1,还必须重复上次已发送过的ACK=u+1。主机A必须对此发出确认,给出ACK=v+1。这样才将B到A的反方向连接释放掉。主机A的TCP协议层再向其应用进程报告,整个连接已经全部释放。 TCP的有限状态机 网络通信中,一个健壮的插口应用程序必须能够处理网络通信中可能出现的各种状态。因此,必须对TCP的有限状态机有所了解。TCP连接从建立到终止整个过程中,存在11种状态,TCP的有限状态自动机(或称为状态转换图)给出了TCP从一个状态转换到另一个状态的规则,如下图所示。 TIME_WAIT状态 为什么需要一个TIME_WAIT状态? 实现终止TCP全双工连接的可靠性 允许老的重复的TCP报文段在网络中消失 TCP的数据输出过程 3-3 基本TCP插口编程 3-3-1 TCP插口编程模式 TCP应用程序采用客户-服务器模式。 客户和服务器在通信之前需要建立连接;在数据传送完成之后,再关闭连接,释放网络资源。 如果服务器是并行服务器,则在收到一个连接请求并建立连接后,产生一个子进程或线程为刚建立连接的客户服务,而主程序仍然继续等待新的连接请求。 客户方的工作: 打开一个插口(socket); 发起连接请求(connect); 如果连接成功,则进行数据交换 (send,recv) ; 数据交换完成,关闭连接(closesocket)。 服务器方的工作: 打开一个插口(socket); 将插口绑定到服务器地址上(bind); 指定插口为服务器插口,作好接收连接请求准备(listen); 等待连接请求(accept); 如果连接请求到则连接建立,进行数据交换(send,recv); 数据交换完成,关闭连接(closesocket)。 实例 本例完成的主要的功能是测试两台主机间TCP的性能指标之一:回程

您可能关注的文档

文档评论(0)

zhuliyan1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档