The explanation provided by DarrenS pretty well covers the OP question. Let me just throw in a little more for a fuller account of the whole matter:
The actual word for “son” in Classical Arabic, the base form, is *bnu. However, you can’t start a word with two consonants, so we stick the prothetic vowel i- in front to make it pronounceable: ibnu. What’s more, the final short vowel is conventionally dropped in transliteration. It is pronounced only in very, very formal speech, like the Qur’an and maybe in classical poetry. This gives us the familiar form of ibn. (Sorry, but it’s even more complex than that. As a standalone word, it would take the indefinite form ibnun. The ending in -un is called tanwîn, which means putting an “n” on it. When the word is definite, it loses the -n, thus: al-ibnu ‘the son’ or ibnu ummihi ‘the son of his mother’. The indefinite usage would look like this: ibnun lahâ ‘a son of hers’.)
Now, are you ready for more complexity? OK.
In Classical Arabic sandhi, when the word immediately before it ends in a vowel, the prothetic i- is dropped and we’re back to the base form. For example: A‘lamu annahu bnun lahâ ‘I know that he is a son of hers’… or A‘lamu annahu bnu hadhihi al-mar’ah ‘I know that he is the son of this woman’. In pronunciation, you run the two words together and it sounds like “annuhubnu.” The vowel at the end of the previous word is plugged into the socket at the beginning of (i)bnu. Or the name of Jesus son of Mary in the Qur’an: ‘Îsá bnu Maryam, pronounced ‘Îsabnu, although orthographically the two words are always written separately with a space in between. But the initial letter alif, which indicated the initial vowel, is dropped, so the word is written with just the b and the n. Are you with me so far?
Since the initial vowel can drop out, and the final vowel is conventionally ignored, that leaves us with only the two consonants *bn. You can’t pronounce such a vowelless word, so to make it pronounceable, they drop an epenthetic vowel -i- into the middle. This gives us “bin,” which isn’t really a word in Classical Arabic, but it plays one on TV.
Have I totally lost you by now, or am I making any sense?