TCP 的三次握手,四次挥手和重要的细节—干货满满,建议细读( 二 )

TCP 报文段结构

一谈到 TCP 协议 , 大家最先想到的词就是「面向连接」和「可靠」 。 没错 , TCP 协议的设计就是为了能够在客户端和服务器之间建立起一个可靠连接 。

在讲连接过程之前 , 我们先来看看 TCP 的报文段结构 , 通过这个结构 , 我们可以知道 TCP 能够提供什么信息:

这里有几点是需要注意的:

TCP 协议需要一个四元组(源IP , 源端口 , 目的IP , 目的端口)来确定连接 , 这要和 UDP 协议区分开 。 多说一句 , IP 地址位于 IP 报文段 , TCP 报文段是不含 IP 地址信息的 。

基本 TCP 头部的长度是 20 字节 , 但是由于「选项」的长度是不确定的 , 所以需要「首部长度」字段明确给出头部长度 。 这里要注意的是 , 首部长度字段的单位是 32bit , 也就是 4 字节 , 所以该字段的最小值是 5 。

标橙色的字段(确认序号 , 接收窗口大小 , ECE , ACK)用于「回复」对方 , 举个例子 , 服务器收到对方的数据包后 , 不单独发一个数据包来回应 , 而是稍微等一下 , 把确认信息附在下一个发往客户端的数据帧上 , 也就是捎带技术 。

推荐阅读