TCP(Transmission Control Protocol)传输控制协议是一种面向连贯的、牢靠的、基于字节流的传输层协定。报文格式如下:
1、源端口号、目标端口号同 IP 数据报中的源 IP 与目标 IP 惟一确定一条 TCP 连贯。
2、序号(4 字节)与确认序号(4 字节):是 TCP 牢靠传输的要害局部。序号是本报文段发送的数据组的第一个字节的序号。在 TCP 传送的流中,每一个字节一个序号。确认序号,即 ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据曾经正确无误的收到。确认序号只有当 ACK 标记为 1 时才无效。比方建设连贯时,SYN 报文的 ACK 标记位为 0。
3、首部长度(4 位):以 4 字节为单位,因为首部可能含有可选项内容,因而 TCP 报头的长度是不确定的,报头不蕴含任何可选字段则长度为 20 字节,4 位首部长度字段所能示意的最大值为 1111,10 进制为 15,15*4 = 60,故报头最大长度为 60 字节。
4、保留:为未来定义新的用处保留,个别置 0。
5、管制位:URG ACK PSH RST SYN FIN,共 6 个,每一个标记位示意一个管制性能。
1)URG:紧急指针标记,为 1 时示意紧急指针无效,为 0 则疏忽紧急指针。
2)ACK:确认序号标记,为 1 时示意确认号无效,为 0 示意报文中不含确认信息,疏忽确认号字段。
3)PSH:push 标记,为 1 示意是带有 push 标记的数据,批示接管方在接管到该报文段当前,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
4)RST:重置连贯标记,用于重置因为主机解体或其余起因而呈现谬误的连贯。或者用于回绝非法的报文段和回绝连贯申请。
5)SYN:同步序号,用于建设连贯过程。
6)FIN:finish 标记,用于开释连贯,为 1 时示意发送方曾经没有数据发送了,即敞开本方数据流。
6、窗口:滑动窗口大小,用来告知发送端承受端的缓存大小,以此管制发送端发送数据的速率,从而达到流量管制。窗口大小是一个 16bit 字段,因此窗口大小最大为 65535。
7、校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包含 TCP 头部和 TCP 数据,以 16 位字进行计算所得。由发送端计算和存储,并由接收端进行验证。
8、紧急指针:只有当 URG 标记置 1 时紧急指针才无效。紧急指针是一个正的偏移量,和顺序号字段中的值相加示意紧急数据最初一个字节的序号。TCP 的紧急形式是发送端向另一端发送紧急数据的一种形式。
9、选项和填充:最常见的可选字段是最长报文大小,又称为 MSS(Maximum Segment Size),每个连贯方通常都在通信的第一个报文段(为建设连贯而设置 SYN 标记为 1 的那个段)中指明这个选项,它示意本端所能承受的最大报文段的长度。另外也会保留 2 个 4 字节的工夫戳,包含本方的以后工夫戳与对端的承受到的最新工夫戳。选项长度不肯定是 32 位的整数倍,所以要加填充位,即在这个字段中退出额定的零,以保障 TCP 头是 32 的整数倍。