What is the general idea of ​signing?

We have private key k (point x,y on secp256k1 curve). Public key K = k*G. We have transaction or message. How we can signing it with private key and verify if with public key? If public sender key is public known, or only it address, which is hash of public key?
Making transaction outputs if opposite process? We use public address of recipient, and recipient must prove that it knows private key? How do it on 16-bit toy ellipse curve (brichard19/ecdl on Github), where:

Modulus prime p: 65167
a:       0
b:       7
order:   64879
G:      (62171,14828)
random point Q:      (3318,23844)