Вся работа в сети строится по принципу вопрос/ответ. Что-то принимает, а что-то отвечает.
Так и пошло разделение на клиент/сервер. Клиент посылает свои данные и запрос, сервер в свою очередь обрабатывает все это и отдает что может. Это само собой реализуется через протоколы.
Python и сообщество предлагает отличные решения для работы с серверами, а именно: pycurl, urllib и httplib.
Pycurl и httplib - низкоуровневые библиотеки, в которых можно более тонко задавать маршруты и сообщения, при взаимодействии.
Urllib - предоставляет высокоуровневый доступ. Имея массу обработчиков, мы можем "как два пальца ..." обходить редиректы, обрабатывать куки, составлять понятные заголовки и ... При этом все делается почти без нашего участия и в 10 строк кода.