First off, let me say I've not put your game through an engine. I'm assuming you can do that yourself and in any case they're not terribly good at endgames.
Now for some appropriate general principles and observations:
1) King, Knight and pawn endgames are very similar to king and pawn endgames. The same kind of principles apply. With enough pawns on the board and an extra, distant passed pawn you should be looking for the win.
2) If the knights come off then it is an easy win for you
3) If too many pawns come off it is an easy draw for your opponent. He seems to have known what he was doing from about move 33 because with pawn advances and good use of his knight that is exactly what he achieved.
4) Two related principles. Pawns can only move forwards. They cannot move back. Patience is often the key to good endgame play. The immediate 33) ... b5 is too impatient.
5) On a4 your knight is badly offside. Your first task, given your opponent's immediate lack of threats, should be to get it over to the kingside where the action is. d4 looks like a wonderful square.
6) By the same token your opponent's knight is also in need of some improvement. d5 looks like the right square. From there it keeps half an eye on your b pawn, stays in touch with the kingside pawns and threatens your f6 pawn. Either your king is going to be tied down to its defence or it is going to have to advance and be swapped off. One small step closer to a draw. You should try and prevent this.
So, what I suggest for your first possible mini-plan is Na4 - c5+ - e6 - d4.
What happens next depends on white's reaction. I think it would be a mistake for him to go for your b pawn with something like Kd3 - c4 - b5 - b6. You would go for his pawns with your knight starting with Nc2 with the threat of Ne1 forking the f3 and g2 pawns. After Nc2 one possible (non-forcing) line might be:
1) g3 h5 2) Nf2 Ne3 (now aiming for f1 forking the h2 and g3 pawns) 3) h3 Nf1 4) g4 h4 and white's pawn structure is badly compromised.
More sensible for white would be a compromise where he plays Kd3 - c4 but then aims for Ng4 - e3 - d5+. Black might counter this by Ne6 - f4 instead of d4 to temporarily prevent Nd5+ and to start harrying white's pawns.
A second possible mini plan for black would be to start with Na4 - b2+. If white plays the tempting Kd3 - c3 than the paradoxical Nb2 - d1+ followed by h5 is going to force the knights off at the cost of a pawn when black's outside passed pawn plus better king position is going to win it for him.
So white can't play Kd3-c3. So white needs to play his king to c2. Then black can play his knight to c4 to prevent white's knight coming to e3 and protect the knight with b5 if attacked by the king.
If white goes after the b5 pawn with Kc3-b4 then black forces the white knight to the more passive f2 with h5. Rather than defend the b5 pawn passively with Nc4-d6 he could go after the white pawns with Ne3. Then I would suggest a (non forcing) sequence something like this:
1) g4 h4 2) Nd3 h3 3) Nf2 Nc2+ 4) Kxb5 Nd4+ 5) Kc4 Nxf3 6) Nf2 Nxh2 and, OK, with just 3 black pawns left it is looking difficult to win.
So, either defend the b5 pawn with Nd6 or go back to the Na4-c5+ plan.
If either of these two plans is black's best I'm not good enough to say, but they do pose white major problems to steer it to a draw. You have to make it as difficult as possible for white to find good moves in these positions.