TCP 报文段

  • 源端口目的端口:各占 2 个字节,分别写入源端口号和目的端口号。

  • 序号:占 4 字节。TCP 是面向字节流的,在一个 TCP 连接中传送的字节流中的每一个字节都按顺序编号,首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号。

  • 确认号:占 4 字节,是期望收到对方下一个报文段的第一个数据字节的序号若确认号=N ,则表明:到序号 N –1 为止的所有数据都已正确收到。

  • 数据偏移:占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。这个字段实际上是指出 TCP 报文段的首部长度。“数据偏移”的单位是 32 位字(即以 4 字节长的字为计算单位)。

  • 保留:占 6 位,保留为今后使用,但目前应置为 0。

  • 紧急 URG(URGent):当 URG=1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。

  • 确认 ACK(ACKnowledgment):仅当 ACK=1 时确认号字段才有效。当 ACK=0 时,确认号无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。

  • 推送 PSH(PuSH):当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,TCP 就可以使用推送(push)操作。这时,发送方 TCP 把 PSH 置 1,并立即创建一个报文段发送出去。接收方 TCP 收到 PSH=1 的报文段,就尽快地(即“推送”向前)交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。

  • 复位 RST(ReSeT):当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

  • 同步 SYN(SYNchronization):在连接建立时用来同步序号。

    • SYN=1 而 ACK=0 时,表明这是一个连接请求报文段。

    • 对方若同意建立连接,则应在响应的报文段中使 SYN=1 和 ACK=1

  • 终止 FIN(FINis):用来释放一个连接。当 FIN=1 时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。

  • 窗口:占 2 字节。 窗口指的是发送本报文段的一方的接收窗口,窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。

  • 检验和:占 2 字节。检验和字段检验的范围包括首部和数据这两部分

  • 紧急指针:占 2 字节。紧急指针仅在 URG=1 时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。

  • 选项:长度可变,最长可达 40 字节。

Last updated