握手后的TCP数据包

Sam*_*urn 0 tcp

我试图让我了解TCP,解析大量的RFC并没有帮助。我相信我了解连接和关闭握手,但似乎找不到任何可以概括实际数据流外观的内容。

连接和关闭握手之间的TCP数据包是什么样的?(特别是标题)

caf*_*caf 5

在连接期间的通常稳态情况下,标头将具有:

  • 目的端口和源端口设置正确;
  • ACK标志设置;
  • 如果连接本质上是事务性的(而不是批量转移),PSH则也可能会设置该标志;
  • 序列号字段被设置为该端要发送的下一个字节的序列号(将该数据包中的数据(如果有的话)计为“要发送”);
  • 确认字段设置为尚未从另一端接收到的最早字节的序列号;
  • 窗口字段显示此端的接收窗口中的剩余空间-使用的编码取决于在初始连接设置中是否协商过窗口缩放。

也可能有一个类型8选项字段,表示RFC1323中描述的时间戳选项。

因此,例如,在服务器向客户端发送大量数据的HTTP连接部分中,客户端将发送已ACK设置的数据包,序列号字段保持不变,确认字段增加大小服务器发送的段的数量,窗口大小大约在一个段的大小附近。服务器将发送已ACK设置的数据包,序列号字段按所发送段的大小前进,确认字段保持不变,并且窗口大小最大。

我建议使用Wireshark检查一系列实际连接。