tcp三次握手及原理

【tcp三次握手及原理】TCP/IP 是很多的不同的协议组成,实际上是一个协议组,TCP 用户数据报表协议(也
称作TCP 传输控制协议,Transport Control Protocol 。可靠的主机到主机层协议 。这里要先
强调一下,传输控制协议是OSI 网络的第四层的叫法,TCP 传输控制协议是TCP/IP 传输的
6 个基本协议的一种 。两个TCP 意思非相同 。) 。TCP 是一种可靠的面向连接的传送服务 。
它在传送数据时是分段进行的,主机交换数据必须建立一个会话 。它用比特流通信,即数据
被作为无结构的字节流 。通过每个TCP 传输的字段指定顺序号,以获得可靠性 。是在OSI
参考模型中的第四层,TCP 是使用IP 的网间互联功能而提供可靠的数据传输,IP 不停的把
报文放到网络上,而TCP 是负责确信报文到达 。在协同IP 的操作中TCP 负责:握手过程、
报文治理、流量控制、错误检测和处理(控制),可以根据一定的编号顺序对非正常顺序的
报文给予从新排列顺序 。关于TCP 的RFC 文档有RFC793、RFC791、RFC1700 。
在TCP 会话初期,有所谓的“三握手”:对每次发送的数据量是怎样跟踪进行协商使
数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完
毕后何时撤消联系,并建立虚连接 。为了提供可靠的传送,TCP 在发送新的数据之前,以
特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息 。TCP 总是用来
发送大批量的数据 。当应用程序在收到数据后要做出确认时也要用到TCP 。由于TCP 需要
时刻跟踪,这需要额外开销,使得TCP 的格式有些显得复杂 。下面就让我们看一个TCP 的
经典案例,这是后来被称为MITNICK 攻击中KEVIN 开创了两种攻击技术:
TCP 会话劫持
SYN FLOOD(同步洪流)
在这里我们讨论的时TCP 会话劫持的问题 。
先让我们明白TCP 建立连接的基本简单的过程 。为了建设一个小型的模拟环境我们假
设有3 台接入互联网的机器 。A 为攻击者操纵的攻击机 。B 为中介跳板机器(受信任的服务
器) 。C 为受害者使用的机器(多是服务器),这里把C 机器锁定为目标机器 。A 机器向B
机器发送SYN 包,请求建立连接,这时已经响应请求的B 机器会向A 机器回应SYN/ACK
表明同意建立连接,当A 机器接受到B 机器发送的SYN/ACK 回应时,发送应答ACK 建立
A 机器与B 机器的网络连接 。这样一个两台机器之间的TCP 通话信道就建立成功了 。
B 终端受信任的服务器向C 机器发起TCP 连接,A 机器对服务器发起SYN 信息,使
C 机器不能响应B 机器 。在同时A 机器也向B 机器发送虚假的C 机器回应的SYN 数据包,
接收到SYN 数据包的B 机器(被C 机器信任)开始发送应答连接建立的SYN/ACK 数据包,
这时C 机器正在忙于响应以前发送的SYN 数据而无暇回应B 机器,而A 机器的攻击者预
测出B 机器包的序列号(现在的TCP 序列号猜测难度有所加大)假冒C 机器向B 机器发送
应答ACK 这时攻击者骗取B 机器的信任,假冒C 机器与B 机器建立起TCP 协议的对话连
接 。这个时候的C 机器还是在响应攻击者A 机器发送的SYN 数据 。
TCP 协议栈的弱点:TCP 连接的资源消耗,其中包括:数据包信息、条件状态、序列
号等 。通过故意不完成建立连接所需要的三次握手过程,造成连接一方的资源耗尽 。
通过攻击者有意的不完成建立连接所需要的三次握手的全过程,从而造成了C 机器的
资源耗尽 。序列号的可猜测性,目标主机应答连接请求时返回的SYN/ACK 的序列号时可预

推荐阅读