为了建立一条TCP连接:

  1. 请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号。这个 SYN段为报文段1 。
  2. 服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时,将确认序号设置为客户的ISN加1 以对客户的 SYN报文段进行确认。一个SYN将占用一个序号。

img

最大报文段长度

最大报文段长度MSS表示TCP传往另一端的最大块数据的长度。当一个连接建立时,连接的双方都要通告各自的MSS。

TCP的半关闭

TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。

TCP的状态变迁图

graphic

复位报文段

TCP首部中的RST比特是用于“复位”的。一般说来,无论何时一个报文。段发往基准的连接( referenced connection)出现错误,TCP都会发出一个复位报文段(这里提到的“基准的连接”是指由目的 I P地址和目的端口号以及源 I P地址和源端口号指明的连接)。

异常终止一个连接,或者检测半打开连接都需要发送一个复位报文段。

同时打开

两个应用程序同时彼此执行主动打开的情况是可能的。每一方必须发送一个SYN,且这些SYN 必须传递给对方。这需要每一方使用一个对方熟知的端口作为本地端口。这又称为同时打开。

同时关闭

graphic

TCP选项