here is one way with awk:
awk '{k=$1;a[k]=a[k]?a[k]","$4:$4}END{for(x in a)print x":"a[x]}' file
with your example, the output is:
kent$ awk '{k=$1;a[k]=a[k]?a[k]","$4:$4}END{for(x in a)print x":"a[x]}' file
192.168.1.195:80
192.168.1.87:53
10.1.1.1:53,443
(I omitted the title line)
EDIT
k=$1;a[k]=a[k]?a[k]","$4:$4
is exactly same as:
if (a[$1]) # if a[$1] is not empty
a[$1] = a[$1]","$4 # concatenate $4 to it separated by ","
else # else if a[$1] is empty
a[$1] = $4 # let a[$1]=$4
I used k=$1
just for saving some typing. also the x=boolean?a:b
expression
I hope the explanation could let you understand the codes.