Artem Barger Asked: 2009-07-06 00:14:28 +0800 CST2009-07-06 00:14:28 +0800 CST 2009-07-06 00:14:28 +0800 CST TCP 连接握手 772 为什么在 TCP 中建立连接时使用 3 次握手?意思是,为什么使用 2 次握手是不够的? security tcp protocols 6 个回答 Voted womble 2009-07-06T00:16:58+08:002009-07-06T00:16:58+08:00 这样两端就可以相当确信另一端知道连接已建立。 编辑:两种方式是不够的,因为收件人不知道发件人知道收件人已经响应,并且连接已准备好进行,这使得它(2 次握手连接)与 3 次握手相比不可靠 Best Answer splattne 2009-07-06T01:10:32+08:002009-07-06T01:10:32+08:00 TCP 中使用的握手机制旨在使尝试通信的两个主机可以在开始通信之前协商网络连接的参数。双方都可以假设另一台计算机已准备好并开始可靠地发送数据。 下面是握手期间双方发送的数据包的简化图: 同步 -> 收到 SYN 主机 A <- SYN ACK 主机 B 收到 SYN ACK 确认-> 收到 ACK TCP 连接建立 SYN(同步)和 ACK(确认)消息由段的 TCP 标头内的位/数字指定。 还设计了该过程,以便两端可以同时启动和协商单独的连接。 为了结束两台计算机之间的连接,执行另一个 3 路通信以断开 TCP 连接。TCP 连接的启动和断开是使 TCP 成为可靠协议的一部分。 另请参阅:UDP 和 TCP 有什么区别? Peter 2009-07-06T04:52:50+08:002009-07-06T04:52:50+08:00 意识到这实际上是 4 次握手(每个方向两次)。有一个 SYN -> ACK 和一个 SYN <- ACK。Host-B 通过在 ACK 的 Host-A 的同时发送他的 SYN 来节省时间。 此外,Dentrasi 评论说 3 次握手可以防止欺骗,但这并不完全正确。 在 nmap 站点上查看更多信息:http: //nmap.org/book/osdetect-usage.html “TCP 序列预测系统的 TCP 初始序列号生成较差,容易受到盲目的 TCP 欺骗攻击。换句话说,您可以与这些系统建立完全连接并发送(但不接收)数据,同时欺骗不同的 IP 地址。目标的日志将显示被欺骗的 IP,您可以利用它们之间的任何信任关系。这种攻击在 90 年代中期风靡一时,当时人们通常使用 rlogin 允许从受信任的 IP 地址无需任何密码即可登录其帐户。凯文据称,米特尼克在 1994 年 12 月利用这次攻击侵入了下村勉的电脑。” 有关 TCP 序列预测攻击的其他信息: http ://en.wikipedia.org/wiki/TCP_sequence_prediction_attack Vivek Sharma 2009-07-06T05:46:25+08:002009-07-06T05:46:25+08:00 非技术解释——全双工对话/连接需要 3 次握手。连接意味着两方之间的协议。协议是指,当 X 发送时 Y 接收,当 Y 发送时 X 接收。每个单面协议都需要两个步骤,请求许可(SYN)并知道其他人会收听/接收/接受(ACK)您发送的内容。所以两个 SYN-ACK 步骤。 它本质上是 4 次握手,步骤 2(Y 向 X 发送 ACK)和步骤 3(Y 向 X 发送 SYN)被合并(步骤 3 背负在步骤 2 上),在最终导致一步。这是可能的,因为两者都是从 Y(同一主机)同时发送的,并且信息是在 TCP 标头中的一个位中携带的(没有过大的问题)。因此,从 4 步到总共 3 步。 技术解释——TCP是一个有状态的协议,它的状态机操作和改变它的状态的方式在两端是对称的。当您收到来自另一台机器的 ACK 时,就达到了已建立的状态。为了使两个实体都达到连接建立状态,状态机必须接收 ACK。所以 ACK 接收很重要,要接收 ACK 主机必须发送 SYN。再次将 4 步过程合并为 3 步,请参阅引用的解释。 剩下的就是细节——比如选择一个随机的 SYN 值,这样就可以防止预测攻击。就攻击而言,中间人迫在眉睫。ps如果有人想知道如何发表评论。我想你们中的大多数人都会知道如何,它非常明显,所以我节省了你的阅读时间。 Matt Hanson 2009-07-06T00:23:55+08:002009-07-06T00:23:55+08:00 三向握手建立连接。就像你拿起电话,听到拨号音,拨号码,听到铃声,然后对方说“你好”。 James F 2009-07-06T04:15:24+08:002009-07-06T04:15:24+08:00 很久以前就曾尝试减少建立和拆除短期 TCP 连接所需的“管理”数据包的数量。它被称为“TCP for Transactions”或“T/TCP”,在 RFC1644 中有描述: http://www.faqs.org/rfcs/rfc1644.html TCP 最初旨在为长期连接提供虚拟电路,在这种情况下,建立和断开时间并不那么重要。随着客户端-服务器模型变得越来越流行,对 T/TCP 之类的需求变得越来越明显。 T/TCP 使用一些服务器缓存机制来允许新连接的第一个数据包包含数据。来自服务器端的拆卸请求也可以捎带最后一个数据包。这将单个数据包有效负载消息所需的数据包数量减少到三个。 不幸的是,T/TCP 从未达到临界质量。
这样两端就可以相当确信另一端知道连接已建立。
编辑:两种方式是不够的,因为收件人不知道发件人知道收件人已经响应,并且连接已准备好进行,这使得它(2 次握手连接)与 3 次握手相比不可靠
TCP 中使用的握手机制旨在使尝试通信的两个主机可以在开始通信之前协商网络连接的参数。双方都可以假设另一台计算机已准备好并开始可靠地发送数据。
下面是握手期间双方发送的数据包的简化图:
SYN(同步)和 ACK(确认)消息由段的 TCP 标头内的位/数字指定。
还设计了该过程,以便两端可以同时启动和协商单独的连接。
为了结束两台计算机之间的连接,执行另一个 3 路通信以断开 TCP 连接。TCP 连接的启动和断开是使 TCP 成为可靠协议的一部分。
另请参阅:UDP 和 TCP 有什么区别?
意识到这实际上是 4 次握手(每个方向两次)。有一个 SYN -> ACK 和一个 SYN <- ACK。Host-B 通过在 ACK 的 Host-A 的同时发送他的 SYN 来节省时间。
此外,Dentrasi 评论说 3 次握手可以防止欺骗,但这并不完全正确。
在 nmap 站点上查看更多信息:http: //nmap.org/book/osdetect-usage.html
有关 TCP 序列预测攻击的其他信息: http ://en.wikipedia.org/wiki/TCP_sequence_prediction_attack
非技术解释——全双工对话/连接需要 3 次握手。连接意味着两方之间的协议。协议是指,当 X 发送时 Y 接收,当 Y 发送时 X 接收。每个单面协议都需要两个步骤,请求许可(SYN)并知道其他人会收听/接收/接受(ACK)您发送的内容。所以两个 SYN-ACK 步骤。
技术解释——TCP是一个有状态的协议,它的状态机操作和改变它的状态的方式在两端是对称的。当您收到来自另一台机器的 ACK 时,就达到了已建立的状态。为了使两个实体都达到连接建立状态,状态机必须接收 ACK。所以 ACK 接收很重要,要接收 ACK 主机必须发送 SYN。再次将 4 步过程合并为 3 步,请参阅引用的解释。
剩下的就是细节——比如选择一个随机的 SYN 值,这样就可以防止预测攻击。就攻击而言,中间人迫在眉睫。ps如果有人想知道如何发表评论。我想你们中的大多数人都会知道如何,它非常明显,所以我节省了你的阅读时间。
三向握手建立连接。就像你拿起电话,听到拨号音,拨号码,听到铃声,然后对方说“你好”。
很久以前就曾尝试减少建立和拆除短期 TCP 连接所需的“管理”数据包的数量。它被称为“TCP for Transactions”或“T/TCP”,在 RFC1644 中有描述:
http://www.faqs.org/rfcs/rfc1644.html
TCP 最初旨在为长期连接提供虚拟电路,在这种情况下,建立和断开时间并不那么重要。随着客户端-服务器模型变得越来越流行,对 T/TCP 之类的需求变得越来越明显。
T/TCP 使用一些服务器缓存机制来允许新连接的第一个数据包包含数据。来自服务器端的拆卸请求也可以捎带最后一个数据包。这将单个数据包有效负载消息所需的数据包数量减少到三个。
不幸的是,T/TCP 从未达到临界质量。