TCP是一种面向连接、可靠的协议。TCP连接的建立与断开,都是需要经过通信双方的协商。用一句话概括就是:三次握手say hello(建立连接);四次握手say goodbye(断开连接)。要了解TCP连接的建立与断开,就不得不需要了解TCP头的内容。然而,TCP头及其复杂,概括而言,我们需要了解以下内容:
Sequence Number(Seq):序号。表示一个TCP片段,用于保证数据没有丢失
Acknowledgment Number(Ack):确认号。用于表示希望从对方得到的下一个数据包的序号。举例来说A发送了一个数据包给B,Ack = 1000;那么就表示A希望从B那接收到的下一个数据包的序号为1000。也就是说,B应该发送一个数据包给A,Seq = 1000。后面会有更详细的例子
Flags:标志。用于标记TCP数据包的类型。TCP连接的建立与断开,会用到以下标记:SYN,ACK,FIN
三次握手的示意图如下:
使用Wireshark捕获TCP三次握手的过程,从下图我们也能很清楚的知道Seq以及Ack变化的过程:
四次握手的示意图如下:
使用Wireshark捕获TCP四次次握手的过程,从下图我们也能很清楚的知道Seq以及Ack变化的过程:
原文:http://www.cnblogs.com/jonathanlin/p/4282582.html