【个人总结系列-31】TCP会话原理及TCP状态学习总结教案分析.docx

【个人总结系列-31】TCP会话原理及TCP状态学习总结教案分析.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TCP会话原理及TCP状态学习总结 3.1 TCP会话学习总结 TCP/IP 协议现在已经广泛的被应用,数据在网络上应用TCP/IP 协议进行传输的时候,需要将数据分成多个数据包。目前在网络安全领域都将用到TCP会话的重组问题。只有将数据包重组以后,才能还原一次完整的TCP 会话。由于网络问题,数据包可能会经过不同的路由传输到目的地,并且到达目的地的数据包可能顺序会发生改变。在传输过程中,协议对数据的传输进行控制,对在传输过程中丢失的数据包协议将控制系统将丢失的数据包重新传送。这些都是TCP 会话在重组的时候将遇到的问题。 TCP 是一种面向连接的协议,客户与服务器之间的任何一次会话都必须建立连接,退出会话时必须断开连接。连接的时候需要3个报文,称为TCP的三次握手;断开的时候需要4个报文,称为TCP的四次挥手。 首先介绍TCP建立连接的过程,一次TCP 会话建立的时候需要3个报文交换,即需要3 次握手(如下图所示)。其SEQ和ACK的关系如下: (1)客户发送一个SYN 段,SYN=1 表示发起一个连接,生成随机SEQ。 (2)对方收到后将SEQ+1 置于ACK 发回给本机。表示对前者的确认,生成随机SEQ 发回本机。 (3)本机收到后将SEQ+1 置于ACK 发回给对方,将对方ACK 置于SEQ。 图3-1 TCP三次握手过程 TCP数据传输的过程为:当双方建立TCP 连接以后,就可以传输数据了,传输过程中发送方每发送一个数据包,接收方都要给予一个应答。数据包的先后关系可以由TCP 首部的序号和确认序号确定。双方序号的及确认序号之间的关系为:设发送方发送的数据包长度为N,序号为SEQ,确认序号ACK,则下一个将要发送的数据包的序号为SEQ+N;接收方应答的数据包序号为ACK,确认序号为SEQ+N,表示对序号SEQ 长度为N 的数据包的确认。 建立一个连接需要3 次握手,而终止一个连接要经过4 次挥手(如下图所示)。这是因为一个TCP 连接是全双工(即数据在两个方向上能同时传递),每个方向必须单独地进行关闭。四次挥手实际上就是双方单独关闭的过程。 图3-2 TCP四次挥手过程 在TCP传输过程中,SYN和ACK标志着TCP的各种状态,而SEQ则标志了各数据包的顺序。在TCP 建立连接的以后,会为后续TCP 数据的传输设定一个初始的序列号,以后每传送一个包含有效数据的TCP 包,后续紧接着传送的一个TCP 数据包的序列号都要做出相应的修改。在TCP连接中发送的字节都有一个序列号,因为编了号,所以可以确认它们的收到。对序列号的确认是累积性的。TCP必须进行的序列号比较操作种类包括以下几种: ①决定一些发送了的但未确认的序列号 ②决定所有的序列号都已经收到了 ③决定下一个段中应该包括的序列号 序列号是为了保证TCP 数据包的按顺序传输来设计的,可以有效的实现TCP 数据的完整传输,特别是在数据传送过程中出现错误的时候可以有效的进行错误修正。在TCP会话的重新组合过程中我们需要按照数据包的序列号对接收到的数据包进行排序。一台主机即将发出的报文中的SEQ 值应等于它所刚收到的报文中的ACK 值,而它所要发送报文中的ACK 值应为它所收到报文中的SEQ 值加上该报文中所发送的TCP 数据的长度,即两者存在如下关系: (1)本次发送的SEQ=上次收到的ACK; (2)本次发送的ACK=上次收到的SEQ+本次发送的TCP 数据长度; 表1 TCP序列号与数据包长度的关系 项目数据包长度序列号初始值1Init_seq报文段1len1Init_seq+1报文段2len2Init_seq+1+len1报文段3len3Init_seq+1+len1+len2以上我们讨论的内容都是针对一次TCP 会话的情况,但是实际应用网络同时传输的数 据同时来自很多机器,对应很多个不同的TCP 会话。每个TCP 传输的报文过程都有一个源、目的IP 地址和端口,根据这个四元组的可以确定唯一的一次TCP 会话。 3.2 TCP状态学习总结 根据TCP三次握手和四次挥手,可以将TCP分割成不同的状态。主要包括CLOSED、LISTEN、SYN_RCVD、SYN_SENT、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT、CLOSING、CLOSE_WAIT、LAST_ACK等状态。对TCP会话进行重组时,需要根据TCP不同的状态进行处理。比如ESTABLISHED表示连接建立,后面一般就开始传输数据了。TCP的各状态的的转换图如下所示,各状态的具体介绍如下。 图3-3 TCP状态转换图 CLOSED:表示初始状态 LISTEN:这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档