上一文章中我们讲到TCP/IP四层模型组分别有传输层,网络层,链路层,应用层。而传输层中存在两大协议分别为TCP协议和UDP协议。
本文介绍一下TCP协议的数据包结构。
在TCP数据包结构中,我们需要了解的主要有以下几个部分:
1、源端口 :上一文章中已经介绍,TCP传输协议层可以接收多个应用程序的数据,需要通过端口区分目标程序。源端口是指发送端的端口号。
2、目标端口:与上相同,目标端口是指接收端的端口号。
3、数据
4、包头长度
5、Seq(序列号)
6、Ack(确认号)
Seq与Ack的交互
假设client开始向server端发送数据,数据结构如下:
Sequence Number:1 (序列号)
Next Sequence Number:3 (下一次序列号)
Acknowledgment Number:1 (应答序列号)
Header length: 20 bytes (包头长度)
以上数据结构表示,本次序列号是1,下一次的序列号为3,希望应答的序列号为1
----------------------------------------------------------
Server端回应数据结果如下:
Sequence Number:1 (序列号)
Next Sequence Number:3 (下一次序列号)
Acknowledgment Number:3 (应答序列号)
Header length: 20 bytes (包头长度)
因为客户端要求应答序列号为1,因此本次序列号为1。同时希望下一次应答序列号为3。此处需要注意,其实这个时候Server要求Client端应答的序列号与客户端即将要发起的下一次序列号3是吻合的。
----------------------------------------------------------
Client端再次应答
Sequence Number:3 (序列号)
Next Sequence Number:6 (下一次序列号)
Acknowledgment Number:3 (应答序列号)
Header length: 20 bytes (包头长度)
Server要求应答序列号为3,因此本次序列号为3。同时要求应答序列号为3,与Server将要发起的下一次序列号也是吻合的。
----------------------------------------------------------
Server端回应:
Sequence Number:3 (序列号)
Next Sequence Number:6 (下一次序列号)
Acknowledgment Number:6 (应答序列号)
Header length: 20 bytes (包头长度)
以上便是Seq序列号与Ack确认号的交互过程。
网友评论