TCP 3路握手问题

时间:2011-02-23 00:49:10

标签: tcp handshake

因此,客户端通过使用seq向服务器发送SYN数据包来启动TCP连接。 #X。服务器然后用SYN + ACK响应X + 1。当关闭连接协议颁布时,FIN数据包也是如此。

所以我的问题是为什么服务器确认X + 1而不是X?我认为SYN和FIN数据包没有搭载任何数据。还有其他原因吗?我很困惑为什么服务器会确认X + 1而不是X.

1 个答案:

答案 0 :(得分:3)

发送的序列号是下一个预期的序列号。如果没有增加,那么回复将表明该数据包未被接受,请重新发送。这将以无限循环结束。

SYN是一种特殊情况,它本身传输信息。 (它初始化目标上的接收计数。)ACK将用于下一个预期字节(SYN + 1)。

ACK计数并不总是增加,并且可能会增加超过1.考虑这种交换,其中数据包2被延迟并且不按顺序到达。

Received    ACK
  1          2
  3          2
  4          2
  2          5