How OSPF establishes neighboor relation, what the stages are?

States in OSPF neighbor adjacency process:

-Down State
-Attempt
-Init
-2-way
-Exstart
-Exchange
-Loading
-Full

Down:
This is the first OSPF neighbor state. It indicates that no Hello has been received from the neighbor.

Attempt:
This state is only valid for manually configured neighbors in an NBMA environment.

Init:
This state indicates that the router has received a hello packet from its neighbor, but the receiving router’s ID was not found in the Hello packet

2-Way:
This state indicates that the bi-directional communication has been established between the 2 neighbors.

Exstart:
In this state, the router
The neighbor with the highest Router ID becomes the master.

Exchange:
In this state, OSPF router exchange DBD packets.
DBD packet contains the summary of the LSA headers.
DBDs are acknowledged and reviewed in this state.

Loading:
Slave requests the details (LSR)
Master sends updates (LSU)
Master requests the details (LSR)
Slave sends updates (LSU)

Full:
In this state, routers are fully adjacent with each other and their database is synchronized.