TCP 连接。如下图所示。客户 A 服务器B ESTAB-L ISHED FIN- WAIT-1 FIN- WAIT-2 TIME- WAIT CLOSED ESTAB- LISHED CLOSE- WAIT LAST- ACK CLOSED 主动被动数据传送 8 TCP 虽然是面向字节流的,但 TCP 传送的数据单元却是报文段。一个 TCP 报文段分为首部和数据两部分,而TCP 的全部功能都体现在它的首部中各字段的作用。因此,只有弄清 TCP 首部各字段的作用才能掌握 TCP 的工作原理。 TCP 报文段首部的前 20个字节是固定的,后面有 4n字节是根据需要而增加的选项。因此 TCP 首部的最小长度是 20字节。如下图所示。对于 TCP 报文段中的序号部分,它是占了 4字节, TCP 是面向字节流的,在下一个 TCP 连接中传送的字节流中的每一个字节都按顺序编号,整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号。例如,一报文段的序号字段值是 301 ,而携带的数据共有 100 字节。这就表明:本报文段的数据的第一个字节的序号是 301 , 最后一个字节的序号是 400 。显然,下一个报文段的数据序号应该从 401 开始。对于确认号,是占 4个字节,是期望收到对方下一个报文段的第一个数据字节的序号。例如,B正确收到了 A发送过来的一个报文段,其序号字段值是 501 , 而数据长度是 200 字节,这表明 B正确收到了 A发送的到序号 700 为止的数据。因此, B期望收到 A的下一个数据序号是 701 ,于是 B在发送给 A的确认报文段中把确认号置为 701 。还有一个比较重要的部分就是校验和。是占 2个字节,校验和字段检验的范围包括首部和数据这两部分。在计算校验和时,要在 TCP 报文段的前面加上 12