ron_1
Я так понимаю программа-клиент это браузер, а программа-сервер это django?
Программой-сервером выступает питон, а Django через него уже получает и отправляет данные по протоколу. То есть питон открывает порт, и через netstat просмотр портов именно его и покажет как процесс, висящий на порту. При этом в самом питоне может работать Django, Flask, Tornado - что угодно. Бывает ещё и сам питон проводят через веб-сервер: с клиентами общается веб-сервер, а всю инфу передаёт питону. Но это просто прослойка. Питон может и сам работать, без веб-сервера. Любая программа может стать веб-сервером, для этого надо открыть порт и реализовать HTTP-протокол в ней. Она даже может просто пустышкой быть и отвечать на все запросы какими-то текстами одинаковыми.
Программой-клиентом может быть даже обычный telnet клиент, так как HTTP-протокол является текстовым протоколом. В протоколе TELNET данные между клиентом и сервером передаются без изменений, поэтому его программа-клиент подходит для взаимодействия с любым текстовым протоколом. Может и питон быть клиентом, модуль urllib как раз посылает в строке названия клиента версию питона. Браузер - это не только программа-клиент HTTP-протокола, но и программа отображения размеченных данных, которые к протоколу HTTP уже никак не относятся. В протоколе HTTP нет понятия разметки данных, есть просто данные и всё.
Бывают и нетекстовые протоколы (бинарные), типа SSH и MySQL, в них без программы-клиента через telnet ничего не сделаешь, потому что есть невидимые символы, которые с клавиатуры не введёшь.
Так что браузер включает в себя программу-клиент HTTP-протокола, но в целом включает в себя и много чего другого.
ron_1
есть ли какие-либо книги или толстенькие руководства на русском
Есть, конечно, но чтобы точно знать какие-то элементы протокола, придётся всё-равно обращаться к RFC, а они все сложно написаны, потому что писались в 70-х, 80-х годах, когда всё это относилось только к англоязычным специалистам с техническим образованием. Это потом, где-то с середины 90-х, стали понимать, что нужно такие тексты писать не только полно, но и по-человечески, поэтому поздние RFCшки выглядят более няшно и в них всё понятно. Но все основы Интернета лежат в старых RFC и их никто переписывать не будет, поэтому надо уметь их читать, надо изучить старую
форму Бэкуса-Наура, потому что там все элементы описаны в ней. То есть всё, что может быть передано в заголовке, описывается такой формулой, поэтому нужно уметь её быстро читать и запоминать, иначе ничего не запомнишь про нюансы протокола.