目录
TCP 报文段的格式
TCP 报文段的格式
TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段
TCP 报文段分为首部和数据两部分。TCP 的全部功能都体现在它首部中各字段的作用
TCP 报文段首部的前 20个 字节是固定的,后面有 4N 字节是根据需要而增加的选项(N 必须是整数)。因此 TCP 首部的最小长度是 20 字节
源端口和目的端口字段——各占 2 字节:该字段定义了在主机中发送和接收该报文段的应用程序所使用的端口号,用于运输层的复用和分用
序号字段——占 4 字节:在一个TCP连接中传送的数据流中的每一个字节都按顺序进行编号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号
确认号字段——占 4 字节:是期望收到对方的下一个报文段的数据的第一个字节的序号。表示对该序号字节之前的所有字节的累积确认
数据偏移——占 4 位:它指出 TCP 报文段数据起始处的位置,相当于首部长度。“数据偏移”以 4 字节为单位,因此首部长度必须是 4 字节的整数倍
保留字段——占 6 位:保留为今后使用,但目前应置为 0
紧急标志位 URG —— 当 URG = 1 时,表示此报文段数据开始插入了紧急数据,应尽快传送。紧急指针字段指出了紧急数据结束的位置
确认标志位 ACK —— 只有当 ACK = 1 时确认号字段才有效。当ACK = 0 时,确认号无效
推送标志位 PSH —— 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付给接收应用进程,而不再等到接收到足够多的数据才向上交付
复位标志位 RST —— 当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
终止标志位 FIN —— 用来释放连接。当 FIN =1 时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接
窗口字段 —— 占 2 字节:用来控制对方发送的数据量(从确认号开始,允许对方发送的数据量),单位为字节
检验和 —— 占 2 字节:检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部
选项字段 —— 长度可变:例如:最大报文段长度 MSS (Maximum Segment Size)。MSS 告诉对方 TCP:我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节
填充字段: —— 这是为了使整个首部长度是 4 字节的整数倍