Зачем нужна сериализация?
Предположим, есть у вас сложная иерархия классов, в каждом из которых с десяток полей. Некоторые поля ссылаются на объекты других классов или, того хуже, содержат коллекции объектов. При использовании сериализатора, вам достаточно одной строки для сохранения словаря, содержащего объекты из этой иерархии, в файл:pickle.dump(some_dict, some_fh)
А если будете писать код для ручного сохранения всего этого изобилия в файл, то у вас либо получится объёмный, сложный и глючный код, либо ещё одна версия pickle.
Потому что сокет понимает только потоки данных, поскольку основан на протоколе tcp/ip?