【网络协议】TCP报文格式
1. TCP定义
传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。用户数据报协议(UDP)是同一层内另一个重要的传输协议。
2. TCP报文格式分析
TCP 报文是 TCP 层传输的数据单元,也叫报文段。TCP 报文的格式如下图所示:
2.1 TCP头字段详细说明(重点关注红色内容)
-
源端口:16位,源端口和IP地址的作用是标识报文的返回地址。
-
目的端口:16位,端口指明接收方计算机上的应用程序接口。TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。
-
序号和确认号:是TCP可靠传输的关键部分。
- 序号,sequence number,保证网络传输数据的顺序性。是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节一个序号。e.g.一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性。
- 确认号,acknowledgment number,即ACK,用来确认确实有收到相关封包,内容表示期望收到下一个报文的序列号,用来解决丢包的问题。指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志位为0。
-
**数据偏移/首部长度:**4bits。由于首部可能含有可选