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的整数倍。