code: def tcp_traceflow(packet):
      
      if 'TCP' in packet:
          ip = packet.ip if 'IP' in packet else packet.ipv6
          tcp = packet.tcp
          data = dict(
              protocol=LINKTYPE.get(packet.layers[0].layer_name.upper()),     # data link type from global header
              index=int(packet.number),                                       # frame number
              frame=packet2dict(packet),                                      # extracted packet
              syn=bool(int(tcp.flags_syn)),                                   # TCP synchronise (SYN) flag
              fin=bool(int(tcp.flags_fin)),                                   # TCP finish (FIN) flag
              src=ipaddress.ip_address(ip.src),                               # source IP
              dst=ipaddress.ip_address(ip.dst),                               # destination IP
              srcport=int(tcp.srcport),                                       # TCP source port
              dstport=int(tcp.dstport),                                       # TCP destination port
              timestamp=packet.frame_info.time_epoch,                         # timestamp
          )
          return True, data
      return False, None
docs: Trace packet flow for TCP.