let's recall that d = rt, or namely distance = rate * time.
b = speed of the boat
c = speed of the current
now, we know that going downstream the boat went 16 miles total, that's going only one way, so the distance the boat travels downstream as well as upstream to return is 16 miles flat.
when going downstream, the boat is not really going at "b" speed, is really going at "b + c" speed, because the current is adding its speed to it, so is really going faster than "b".
when going upstream, the boat is not really going at "b" speed" either, is really going slower at "b - c" speed, because the current is against it and thus subtracting speed from "b".
let's take a look at those in a table
[tex]\begin{array}{lcccl} &\stackrel{miles}{distance}&\stackrel{mph}{rate}&\stackrel{hours}{time}\\ \cline{2-4}&\\ Downstream&16&b+c&2\\ Upstream&16&b-c&4 \end{array}\qquad \qquad \begin{cases} 16=(b+c)(2)\\\\ 16=(b-c)(4) \end{cases} \\\\\\ \stackrel{16}{(b+c)(2)}~~ = ~~\stackrel{16}{(b-c)(4)}\implies 2b+2c~~ = ~~4b-4c\implies 2c=2b-4c[/tex]
[tex]6c=2b\implies \cfrac{6c}{2}=b\implies \boxed{3c=b} \\\\\\ \stackrel{\textit{substituting on the 1st equation}}{16~~ = ~~(\stackrel{b}{3c}+c)(2)}\implies 16=4c(2)\implies 16=8c \\\\\\ \cfrac{16}{8}=c\implies \blacktriangleright \stackrel{mph}{2}=c \blacktriangleleft~\hspace{10em}3(2)=b\implies \blacktriangleright \stackrel{mph}{6}=b \blacktriangleleft[/tex]