TCP首部格式中的序号和确认号并不总是同时出现。
TCP首部的序号和确认号是根据TCP通信的不同阶段和目的来决定的。在建立连接的过程中,序号用于标识发送数据的起始位置,而确认号用于表示接收方期望接收的下一个数据的起始位置。这两个字段在TCP通信的不同阶段有不同的用途和表现:
序号:用于标识TCP报文段的第一个字节的数据序列号。它是每个TCP报文段独有的,用于保证数据的顺序传输和可靠性。序号的增长依赖于通信双方的数据传输情况,每个报文段的序号都是基于发送方和接收方的协商和状态来确定的。
确认号:表示接收方期望接收的下一个报文段的第一个数据字节的序列号。当接收方成功接收到一个报文段后,会向发送方发送一个确认报文段,其中包含确认号,表明已经成功接收到的数据范围。
在TCP通信的不同阶段,序号和确认号的出现情况有所不同。例如,在建立连接的过程中,序号始终出现在每个发送的TCP报文段中,以标识数据的起始位置。而确认号则根据接收方是否成功接收到数据来决定是否出现在发送的确认报文段中。如果接收方没有接收到数据或者不需要发送确认报文段,那么确认号就不会出现在该报文段中。
此外,TCP连接关闭过程中也会涉及到序号和确认号的使用,尽管这与正常的数据传输过程略有不同。在连接关闭时,通过发送特定的TCP报文段(如FIN包)来通知对方连接即将关闭,这些报文段中也包含序号和确认号,以确保连接的平滑关闭和数据传输的完整性